postpone the check for the validity of growable rows/columns indices until we know the total number of items in the sizer (closes #10294)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59136 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2009-02-25 21:01:19 +00:00
parent 5293e4b710
commit 4e4e06e349

View File

@@ -1781,6 +1781,37 @@ DoAdjustForGrowables(int delta,
void wxFlexGridSizer::AdjustForGrowables(const wxSize& sz)
{
#ifdef __WXDEBUG__
// by the time this function is called, the sizer should be already fully
// initialized and hence the number of its columns and rows is known and we
// can check that all indices in m_growableCols/Rows are valid (see also
// comments in AddGrowableCol/Row())
if ( !m_rows || !m_cols )
{
int nrows, ncols;
CalcRowsCols(nrows, ncols);
if ( !m_rows )
{
for ( size_t n = 0; n < m_growableRows.size(); n++ )
{
wxASSERT_MSG( m_growableRows[n] < nrows,
"invalid growable row index" );
}
}
if ( !m_cols )
{
for ( size_t n = 0; n < m_growableCols.size(); n++ )
{
wxASSERT_MSG( m_growableCols[n] < ncols,
"invalid growable column index" );
}
}
}
#endif // __WXDEBUG__
if ( (m_flexDirection & wxHORIZONTAL) || (m_growMode != wxFLEX_GROWMODE_NONE) )
{
DoAdjustForGrowables
@@ -1851,10 +1882,16 @@ void wxFlexGridSizer::AddGrowableRow( size_t idx, int proportion )
{
int nrows, ncols;
CalcRowsCols(nrows, ncols);
wxCHECK_RET( idx < (size_t)nrows, "invalid row index" );
wxASSERT_MSG( !IsRowGrowable( idx ),
"AddGrowableRow() called for growable row" );
// notice that we intentionally don't check the index validity here in (the
// common) case when the number of rows was not specified in the ctor -- in
// this case it will be computed only later, when all items are added to
// the sizer, and the check will be done in AdjustForGrowables()
wxCHECK_RET( !m_rows || idx < (size_t)m_rows, "invalid row index" );
m_growableRows.Add( idx );
m_growableRowsProportions.Add( proportion );
}
@@ -1863,10 +1900,14 @@ void wxFlexGridSizer::AddGrowableCol( size_t idx, int proportion )
{
int nrows, ncols;
CalcRowsCols(nrows, ncols);
wxCHECK_RET( idx < (size_t)ncols, "invalid column index" );
wxASSERT_MSG( !IsColGrowable( idx ),
"AddGrowableCol() called for growable column" );
// see comment in AddGrowableRow(): although it's less common to omit the
// specification of the number of columns, it still can also happen
wxCHECK_RET( !m_cols || idx < (size_t)ncols, "invalid column index" );
m_growableCols.Add( idx );
m_growableColsProportions.Add( proportion );
}