X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ccbc8038e6d7b86eb5be069597afbded91580094..698b34facdbae62cce6b2c9837e698ef9c3fbe8c:/src/common/sizer.cpp diff --git a/src/common/sizer.cpp b/src/common/sizer.cpp index 2057cf4198..b5d44e452a 100644 --- a/src/common/sizer.cpp +++ b/src/common/sizer.cpp @@ -595,9 +595,9 @@ wxSize wxSizer::FitSize( wxWindow *window ) // Limit the size if sizeMax != wxDefaultSize - if ( size.x > sizeMax.x && sizeMax.x != -1 ) + if ( size.x > sizeMax.x && sizeMax.x != wxDefaultCoord ) size.x = sizeMax.x; - if ( size.y > sizeMax.y && sizeMax.y != -1 ) + if ( size.y > sizeMax.y && sizeMax.y != wxDefaultCoord ) size.y = sizeMax.y; return size; @@ -631,9 +631,9 @@ wxSize wxSizer::VirtualFitSize( wxWindow *window ) // Limit the size if sizeMax != wxDefaultSize - if ( size.x > sizeMax.x && sizeMax.x != -1 ) + if ( size.x > sizeMax.x && sizeMax.x != wxDefaultCoord ) size.x = sizeMax.x; - if ( size.y > sizeMax.y && sizeMax.y != -1 ) + if ( size.y > sizeMax.y && sizeMax.y != wxDefaultCoord ) size.y = sizeMax.y; return size; @@ -760,9 +760,9 @@ bool wxSizer::DoSetItemMinSize( size_t index, int width, int height ) return true; } -bool wxSizer::Show( wxWindow *window, bool show, bool recursive ) +wxSizerItem* wxSizer::GetItem( wxWindow *window, bool recursive ) { - wxASSERT_MSG( window, _T("Show for NULL window") ); + wxASSERT_MSG( window, _T("GetItem for NULL window") ); wxSizerItemList::compatibility_iterator node = m_children.GetFirst(); while (node) @@ -771,58 +771,93 @@ bool wxSizer::Show( wxWindow *window, bool show, bool recursive ) if (item->GetWindow() == window) { - item->Show( show ); - - return true; + return item; } else if (recursive && item->IsSizer()) { - if (item->GetSizer()->Show(window, show, recursive)) - return true; + wxSizerItem *subitem = item->GetSizer()->GetItem( window, true ); + if (subitem) + return subitem; } node = node->GetNext(); } - return false; + return NULL; } -bool wxSizer::Show( wxSizer *sizer, bool show, bool recursive ) +wxSizerItem* wxSizer::GetItem( wxSizer *sizer, bool recursive ) { - wxASSERT_MSG( sizer, _T("Show for NULL sizer") ); + wxASSERT_MSG( sizer, _T("GetItem for NULL sizer") ); wxSizerItemList::compatibility_iterator node = m_children.GetFirst(); while (node) { - wxSizerItem *item = node->GetData(); + wxSizerItem *item = node->GetData(); if (item->GetSizer() == sizer) { - item->Show( show ); - - return true; + return item; } else if (recursive && item->IsSizer()) { - if (item->GetSizer()->Show(sizer, show, recursive)) - return true; + wxSizerItem *subitem = item->GetSizer()->GetItem( sizer, true ); + if (subitem) + return subitem; } node = node->GetNext(); } + return NULL; +} + +wxSizerItem* wxSizer::GetItem( size_t index ) +{ + wxCHECK_MSG( index < m_children.GetCount(), + NULL, + _T("GetItem index is out of range") ); + + return m_children.Item( index )->GetData(); +} + +bool wxSizer::Show( wxWindow *window, bool show, bool recursive ) +{ + wxSizerItem *item = GetItem( window, recursive ); + + if ( item ) + { + item->Show( show ); + return true; + } + + return false; +} + +bool wxSizer::Show( wxSizer *sizer, bool show, bool recursive ) +{ + wxSizerItem *item = GetItem( sizer, recursive ); + + if ( item ) + { + item->Show( show ); + return true; + } + return false; } bool wxSizer::Show( size_t index, bool show) { - wxCHECK_MSG( index < m_children.GetCount(), - false, - _T("Show index is out of range") ); + wxSizerItem *item = GetItem( index ); - m_children.Item( index )->GetData()->Show( show ); + if ( item ) + { + item->Show( show ); + return true; + } - return true; + return false; } void wxSizer::ShowItems( bool show ) @@ -1351,7 +1386,7 @@ void wxBoxSizer::RecalcSizes() } wxPoint child_pos( pt ); - wxSize child_size( wxSize( size.x, height) ); + wxSize child_size( size.x, height ); if (item->GetFlag() & (wxEXPAND | wxSHAPED)) child_size.x = m_size.x; @@ -1377,7 +1412,7 @@ void wxBoxSizer::RecalcSizes() } wxPoint child_pos( pt ); - wxSize child_size( wxSize(width, size.y) ); + wxSize child_size( width, size.y ); if (item->GetFlag() & (wxEXPAND | wxSHAPED)) child_size.y = m_size.y;