break;
case Item_Window:
+ {
+ // Use wxSIZE_FORCE_EVENT here since a sizer item might
+ // have changed alignment or some other property which would
+ // not change the size of the window. In such a case, no
+ // wxSizeEvent would normally be generated and thus the
+ // control wouldn't get layed out correctly here.
+#if 0
+ m_window->SetSize(pos.x, pos.y, size.x, size.y,
+ wxSIZE_ALLOW_MINUS_ONE|wxSIZE_FORCE_EVENT );
+#else
m_window->SetSize(pos.x, pos.y, size.x, size.y,
- wxSIZE_ALLOW_MINUS_ONE);
+ wxSIZE_ALLOW_MINUS_ONE );
+#endif
break;
-
+ }
case Item_Sizer:
m_sizer->SetDimension(pos, size);
break;
ncols = m_cols;
nrows = m_rows;
- wxASSERT_MSG( ncols*nrows <= nitems, "too many items in grid sizer" );
+ wxASSERT_MSG( ncols*nrows >= nitems, "too many items in grid sizer" );
}
else if ( m_cols )
{
}
// NB: wxCENTRE is used here only for backwards compatibility,
// wxALIGN_CENTRE should be used in new code
- else if ( flag & (wxCENTER | wxALIGN_CENTRE) )
+ else if ( flag & (wxCENTER | (IsVertical() ? wxALIGN_CENTRE_HORIZONTAL : wxALIGN_CENTRE_VERTICAL)))
{
PosInMinorDir(posChild) += (totalMinorSize - minorSize) / 2;
}