X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/53524ca073e0bfd346906331a5b7136ca42e34a5..94803e4ec8d61d24ebf9b1e483776d17e55a7ec5:/src/common/gbsizer.cpp diff --git a/src/common/gbsizer.cpp b/src/common/gbsizer.cpp index 55a7226fc6..66c27e8299 100644 --- a/src/common/gbsizer.cpp +++ b/src/common/gbsizer.cpp @@ -187,7 +187,7 @@ wxSizerItem* wxGridBagSizer::Add( wxWindow *window, else { delete item; - return (wxSizerItem*)NULL; + return NULL; } } @@ -201,7 +201,7 @@ wxSizerItem* wxGridBagSizer::Add( wxSizer *sizer, else { delete item; - return (wxSizerItem*)NULL; + return NULL; } } @@ -215,7 +215,7 @@ wxSizerItem* wxGridBagSizer::Add( int width, int height, else { delete item; - return (wxSizerItem*)NULL; + return NULL; } } @@ -228,6 +228,18 @@ wxSizerItem* wxGridBagSizer::Add( wxGBSizerItem *item ) 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; } @@ -266,7 +278,7 @@ wxGBPosition wxGridBagSizer::GetItemPosition(size_t index) { wxGBPosition badpos(-1,-1); wxSizerItemList::compatibility_iterator node = m_children.Item( index ); - wxCHECK_MSG( node, badpos, _T("Failed to find item.") ); + wxCHECK_MSG( node, badpos, wxT("Failed to find item.") ); wxGBSizerItem* item = (wxGBSizerItem*)node->GetData(); return item->GetPos(); } @@ -292,7 +304,7 @@ bool wxGridBagSizer::SetItemPosition(wxSizer *sizer, const wxGBPosition& pos) bool wxGridBagSizer::SetItemPosition(size_t index, const wxGBPosition& pos) { wxSizerItemList::compatibility_iterator node = m_children.Item( index ); - wxCHECK_MSG( node, false, _T("Failed to find item.") ); + wxCHECK_MSG( node, false, wxT("Failed to find item.") ); wxGBSizerItem* item = (wxGBSizerItem*)node->GetData(); return item->SetPos(pos); } @@ -303,7 +315,7 @@ wxGBSpan wxGridBagSizer::GetItemSpan(wxWindow *window) { wxGBSpan badspan(-1,-1); wxGBSizerItem* item = FindItem(window); - wxCHECK_MSG( item, badspan, _T("Failed to find item.") ); + wxCHECK_MSG( item, badspan, wxT("Failed to find item.") ); return item->GetSpan(); } @@ -312,7 +324,7 @@ wxGBSpan wxGridBagSizer::GetItemSpan(wxSizer *sizer) { wxGBSpan badspan(-1,-1); wxGBSizerItem* item = FindItem(sizer); - wxCHECK_MSG( item, badspan, _T("Failed to find item.") ); + wxCHECK_MSG( item, badspan, wxT("Failed to find item.") ); return item->GetSpan(); } @@ -321,7 +333,7 @@ wxGBSpan wxGridBagSizer::GetItemSpan(size_t index) { wxGBSpan badspan(-1,-1); wxSizerItemList::compatibility_iterator node = m_children.Item( index ); - wxCHECK_MSG( node, badspan, _T("Failed to find item.") ); + wxCHECK_MSG( node, badspan, wxT("Failed to find item.") ); wxGBSizerItem* item = (wxGBSizerItem*)node->GetData(); return item->GetSpan(); } @@ -347,7 +359,7 @@ bool wxGridBagSizer::SetItemSpan(wxSizer *sizer, const wxGBSpan& span) bool wxGridBagSizer::SetItemSpan(size_t index, const wxGBSpan& span) { wxSizerItemList::compatibility_iterator node = m_children.Item( index ); - wxCHECK_MSG( node, false, _T("Failed to find item.") ); + wxCHECK_MSG( node, false, wxT("Failed to find item.") ); wxGBSizerItem* item = (wxGBSizerItem*)node->GetData(); return item->SetSpan(span); } @@ -571,7 +583,7 @@ void wxGridBagSizer::RecalcSizes() void wxGridBagSizer::AdjustForOverflow() { int row, col; - + for (row=0; row<(int)m_rowHeights.GetCount(); row++) { int rowExtra=INT_MAX; @@ -580,17 +592,17 @@ void wxGridBagSizer::AdjustForOverflow() { wxGBPosition pos(row,col); wxGBSizerItem* item = FindItemAtPosition(pos); - if ( !item ) + if ( !item || !item->IsShown() ) continue; int endrow, endcol; item->GetEndPos(endrow, endcol); - + // If the item starts in this position and doesn't span rows, then // 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; } @@ -599,13 +611,13 @@ void wxGridBagSizer::AdjustForOverflow() 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(); rIsShown() ) continue; int endrow, endcol; item->GetEndPos(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