#include "wx/math.h"
#include "wx/utils.h"
#include "wx/settings.h"
+ #include "wx/button.h"
#include "wx/statbox.h"
+ #include "wx/toplevel.h"
#endif // WX_PRECOMP
#include "wx/listimpl.cpp"
{
// Since the size of the window may change during runtime, we
// should use the current minimal/best size.
- m_minSize = m_window->GetBestFittingSize();
+ m_minSize = m_window->GetEffectiveMinSize();
}
return GetMinSizeWithBorder();
size.y -= m_border;
}
+ if (size.x < 0)
+ size.x = 0;
+ if (size.y < 0)
+ size.y = 0;
+
m_rect = wxRect(pos, size);
switch ( m_kind )
return item;
}
+void wxSizer::SetContainingWindow(wxWindow *win)
+{
+ if ( win == m_containingWindow )
+ return;
+
+ m_containingWindow = win;
+
+ // set the same window for all nested sizers as well, they also are in the
+ // same window
+ for ( wxSizerItemList::compatibility_iterator node = m_children.GetFirst();
+ node;
+ node = node->GetNext() )
+ {
+ wxSizerItem *const item = node->GetData();
+ wxSizer *const sizer = item->GetSizer();
+
+ if ( sizer )
+ {
+ sizer->SetContainingWindow(win);
+ }
+ }
+}
+
#if WXWIN_COMPATIBILITY_2_6
bool wxSizer::Remove( wxWindow *window )
{
if (item->GetSizer()->Replace( oldwin, newwin, true ))
return true;
}
-
+
node = node->GetNext();
}
{
if (item->GetSizer()->Replace( oldsz, newsz, true ))
return true;
- }
-
+ }
+
node = node->GetNext();
}
wxSizerItem *item = node->GetData();
node->SetData(newitem);
- delete item;
+ delete item;
return true;
}
// wxALIGN_CENTER should be used in new code
child_pos.y += (m_size.y - size.y) / 2;
+ if ( m_containingWindow )
+ {
+ child_pos.x = m_containingWindow->AdjustForLayoutDirection
+ (
+ child_pos.x,
+ width,
+ m_size.x
+ );
+ }
+
item->SetDimension( child_pos, child_size );
pt.x += width;