// this here to ensure that we detect errors as soon as possible
if ( m_cols && m_rows )
{
- if ( m_children.GetCount() == m_cols*m_rows )
+ const int nitems = m_children.GetCount();
+ if ( nitems == m_cols*m_rows )
{
- wxFAIL_MSG( "too many items in grid sizer (maybe you should omit "
- "the number of either rows or columns?)" );
+ wxFAIL_MSG(
+ wxString::Format(
+ "too many items (%d > %d*%d) in grid sizer (maybe you "
+ "should omit the number of either rows or columns?)",
+ nitems + 1, m_cols, m_rows)
+ );
// additionally, continuing to use the specified number of columns
// and rows is not a good idea as callers of CalcRowsCols() expect
void wxFlexGridSizer::AdjustForGrowables(const wxSize& sz)
{
-#ifdef __WXDEBUG__
+#if wxDEBUG_LEVEL
// 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
}
}
}
-#endif // __WXDEBUG__
+#endif // wxDEBUG_LEVEL
if ( (m_flexDirection & wxHORIZONTAL) || (m_growMode != wxFLEX_GROWMODE_NONE) )
delete m_staticBox;
}
-static void GetStaticBoxBorders( wxStaticBox *box,
- int *borderTop,
- int *borderOther)
-{
- // this has to be done platform by platform as there is no way to
- // guess the thickness of a wxStaticBox border
- box->GetBordersForSizer(borderTop, borderOther);
-}
-
void wxStaticBoxSizer::RecalcSizes()
{
int top_border, other_border;
- GetStaticBoxBorders(m_staticBox, &top_border, &other_border);
+ m_staticBox->GetBordersForSizer(&top_border, &other_border);
m_staticBox->SetSize( m_position.x, m_position.y, m_size.x, m_size.y );
wxSize wxStaticBoxSizer::CalcMin()
{
int top_border, other_border;
- GetStaticBoxBorders(m_staticBox, &top_border, &other_border);
+ m_staticBox->GetBordersForSizer(&top_border, &other_border);
wxSize ret( wxBoxSizer::CalcMin() );
ret.x += 2*other_border;
+
+ // ensure that we're wide enough to show the static box label (there is no
+ // need to check for the static box best size in vertical direction though)
+ const int boxWidth = m_staticBox->GetBestSize().x;
+ if ( ret.x < boxWidth )
+ ret.x = boxWidth;
+
ret.y += other_border + top_border;
return ret;