if ( item->GetWindow() )
item->GetWindow()->SetContainingSizer( this );
+ // extend the number of rows/columns of the underlying wxFlexGridSizer if
+ // necessary
+ int row, col;
+ item->GetEndPos(row, col);
+ row++;
+ col++;
+
+ if ( row > GetRows() )
+ SetRows(row);
+ if ( col > GetCols() )
+ SetCols(col);
+
return item;
}
{
wxGBPosition pos(row,col);
wxGBSizerItem* item = FindItemAtPosition(pos);
- if ( !item )
+ if ( !item || !item->IsShown() )
continue;
int endrow, endcol;
// just look at the whole item height
if ( item->GetPos() == pos && endrow == row )
{
- int itemHeight = item->GetSize().GetHeight();
+ int itemHeight = item->CalcMin().GetHeight();
rowExtra = wxMin(rowExtra, rowHeight - itemHeight);
continue;
}
if ( endrow == row )
{
// first deduct the portions of the item that are on prior rows
- int itemHeight = item->GetSize().GetHeight();
+ int itemHeight = item->CalcMin().GetHeight();
for (int r=item->GetPos().GetRow(); r<row; r++)
itemHeight -= (m_rowHeights[r] + GetHGap());
{
wxGBPosition pos(row,col);
wxGBSizerItem* item = FindItemAtPosition(pos);
- if ( !item )
+ if ( !item || !item->IsShown() )
continue;
int endrow, endcol;
if ( item->GetPos() == pos && endcol == col )
{
- int itemWidth = item->GetSize().GetWidth();
+ int itemWidth = item->CalcMin().GetWidth();
colExtra = wxMin(colExtra, colWidth - itemWidth);
continue;
}
if ( endcol == col )
{
- int itemWidth = item->GetSize().GetWidth();
+ int itemWidth = item->CalcMin().GetWidth();
for (int c=item->GetPos().GetCol(); c<col; c++)
itemWidth -= (m_colWidths[c] + GetVGap());