+void wxSizer::DoSetMinSize( int width, int height )
+{
+ m_minSize.x = width;
+ m_minSize.y = height;
+}
+
+bool wxSizer::DoSetItemMinSize( wxWindow *window, int width, int height )
+{
+ wxASSERT_MSG( window, _T("SetMinSize for NULL window") );
+
+ // Is it our immediate child?
+
+ wxSizerItemList::compatibility_iterator node = m_children.GetFirst();
+ while (node)
+ {
+ wxSizerItem *item = node->GetData();
+
+ if (item->GetWindow() == window)
+ {
+ item->SetMinSize( width, height );
+ return true;
+ }
+ node = node->GetNext();
+ }
+
+ // No? Search any subsizers we own then
+
+ node = m_children.GetFirst();
+ while (node)
+ {
+ wxSizerItem *item = node->GetData();
+
+ if ( item->GetSizer() &&
+ item->GetSizer()->DoSetItemMinSize( window, width, height ) )
+ {
+ // A child sizer found the requested windw, exit.
+ return true;
+ }
+ node = node->GetNext();
+ }
+
+ return false;
+}
+
+bool wxSizer::DoSetItemMinSize( wxSizer *sizer, int width, int height )
+{
+ wxASSERT_MSG( sizer, _T("SetMinSize for NULL sizer") );
+
+ // Is it our immediate child?
+
+ wxSizerItemList::compatibility_iterator node = m_children.GetFirst();
+ while (node)
+ {
+ wxSizerItem *item = node->GetData();
+
+ if (item->GetSizer() == sizer)
+ {
+ item->GetSizer()->DoSetMinSize( width, height );
+ return true;
+ }
+ node = node->GetNext();
+ }
+
+ // No? Search any subsizers we own then
+
+ node = m_children.GetFirst();
+ while (node)
+ {
+ wxSizerItem *item = node->GetData();
+
+ if ( item->GetSizer() &&
+ item->GetSizer()->DoSetItemMinSize( sizer, width, height ) )
+ {
+ // A child found the requested sizer, exit.
+ return true;
+ }
+ node = node->GetNext();
+ }
+
+ return false;
+}
+
+bool wxSizer::DoSetItemMinSize( size_t index, int width, int height )
+{
+ wxSizerItemList::compatibility_iterator node = m_children.Item( index );
+
+ wxCHECK_MSG( node, false, _T("Failed to find child node") );
+
+ wxSizerItem *item = node->GetData();
+
+ if (item->GetSizer())
+ {
+ // Sizers contains the minimal size in them, if not calculated ...
+ item->GetSizer()->DoSetMinSize( width, height );
+ }
+ else
+ {
+ // ... but the minimal size of spacers and windows is stored via the item
+ item->SetMinSize( width, height );
+ }
+
+ return true;
+}
+
+bool wxSizer::Show( wxWindow *window, bool show, bool recursive )
+{
+ wxASSERT_MSG( window, _T("Show for NULL window") );
+
+ wxSizerItemList::compatibility_iterator node = m_children.GetFirst();
+ while (node)
+ {
+ wxSizerItem *item = node->GetData();
+
+ if (item->GetWindow() == window)
+ {
+ item->Show( show );
+
+ return true;
+ }
+ else if (recursive && item->IsSizer())
+ {
+ if (item->GetSizer()->Show(window, show, recursive))
+ return true;
+ }
+
+ node = node->GetNext();
+ }
+
+ return false;