: LayoutGroup(),
mTotalHeight( 0 ),
mTotalWidth( 0 ),
- mNumColumns( AUTO_FIT ),
- mNumRows( AUTO_FIT ),
+ mNumColumns( 1 ),
+ mNumRows( 1 ),
mRequestedColumnWidth( 0 ),
mRequestedNumColumns( AUTO_FIT )
{
// Store value and Relayout if changed.
if( columns != mNumColumns )
{
- mNumColumns = columns;
+ mNumColumns = std::max( 1, columns );
RequestLayout();
}
}
return mNumColumns;
}
-void Grid::DetermineNumberOfColumns( int availableSpace )
+void Grid::DetermineNumberOfColumns( LayoutLength availableSpace )
{
if( mRequestedNumColumns == AUTO_FIT )
{
if( availableSpace > 0 )
{
// Can only calculate number of columns if a column width has been set
- mNumColumns = ( mRequestedColumnWidth > 0 ) ? ( availableSpace / mRequestedColumnWidth ) : 1;
+ mNumColumns = ( mRequestedColumnWidth > 0 ) ? ( availableSpace.AsInteger() / mRequestedColumnWidth ) : 1;
}
}
}
LayoutLength widthSize = widthMeasureSpec.GetSize();
LayoutLength heightSize = heightMeasureSpec.GetSize();
- int availableContentWidth(0);
- int availableContentHeight(0);
+ LayoutLength availableContentWidth( 0 );
+ LayoutLength availableContentHeight( 0 );
LayoutLength desiredChildHeight( 0 );
LayoutLength desiredChildWidth( 0 );
desiredChildWidth += childMargin.start + childMargin.end;
mTotalWidth = desiredChildWidth * mNumColumns;
- DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Grid::OnMeasure TotalDesiredWidth(%d) \n", mTotalWidth.mValue );
+ DALI_LOG_STREAM( gLogFilter, Debug::Verbose, "Grid::OnMeasure TotalDesiredWidth(" << mTotalWidth << ") \n" );
} // Child is LayoutItem
} // Child exists
availableContentWidth = mTotalWidth - gridLayoutPadding.start - gridLayoutPadding.end;
widthSize = mTotalWidth;
- DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Grid::OnMeasure availableContentWidth(%d) mTotalWidth(%d) \n",
- availableContentWidth,
- mTotalWidth.mValue );
+ DALI_LOG_STREAM( gLogFilter, Debug::Verbose, "Grid::OnMeasure availableContentWidth" << availableContentWidth << " mTotalWidth(" << mTotalWidth << ") \n" );
// HEIGHT SPECIFICATIONS
// heightMode EXACTLY so grid must be the given height
{
mTotalHeight += desiredChildHeight;
}
- DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Grid::OnMeasure TotalDesiredHeight(%d) \n",
- mTotalHeight.mValue );
+ DALI_LOG_STREAM( gLogFilter, Debug::Verbose, "Grid::OnMeasure TotalDesiredHeight(" << mTotalHeight << ") \n" );
// Ensure ourHeight does not exceed specified atmost height
mTotalHeight = std::min( mTotalHeight, heightSize );
// Grid expands to fit content
// If number of columns AUTO_FIT then set to 1 column.
-
+ mNumColumns = ( mNumColumns > 0 ) ? mNumColumns : 1;
// Calculate numbers of rows, round down result as later check for remainder.
- mNumRows = childCount / ( ( mNumColumns ) ? mNumColumns : 1 );
+ mNumRows = childCount / mNumColumns;
// If number of cells not cleanly dividable by colums, add another row to house remainder cells.
- mNumRows += ( childCount % ( ( mNumColumns ) ? mNumColumns : 1 ) ) ? 1 : 0;
+ mNumRows += ( childCount % mNumColumns ) ? 1 : 0;
availableContentHeight = desiredChildHeight * mNumRows;
}
DetermineNumberOfColumns( availableContentWidth );
// Locations define the start, end,top and bottom of each cell.
- mLocations->CalculateLocations( mNumColumns, availableContentWidth, availableContentHeight, childCount, 0, 0 );
+ mLocations->CalculateLocations( mNumColumns, availableContentWidth.AsInteger(), availableContentHeight.AsInteger(), childCount, 0, 0 );
SetMeasuredDimensions( ResolveSizeAndState( widthSize, widthMeasureSpec, MeasuredSize::State::MEASURED_SIZE_OK ),