X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e6cfcc0df2d7ea7a8a584744a699d72612b5443e..1a8e8d694bdcaec228f59a55f2aca1dfea0679db:/src/common/sizer.cpp diff --git a/src/common/sizer.cpp b/src/common/sizer.cpp index 1df3fd4885..ed30da1d39 100644 --- a/src/common/sizer.cpp +++ b/src/common/sizer.cpp @@ -103,6 +103,7 @@ wxSizerItem::wxSizerItem() m_proportion = 0; m_border = 0; m_flag = 0; + m_id = wxID_NONE; } // window item @@ -132,6 +133,7 @@ wxSizerItem::wxSizerItem(wxWindow *window, m_proportion(proportion), m_border(border), m_flag(flag), + m_id(wxID_NONE), m_userData(userData) { DoSetWindow(window); @@ -154,6 +156,7 @@ wxSizerItem::wxSizerItem(wxSizer *sizer, m_proportion(proportion), m_border(border), m_flag(flag), + m_id(wxID_NONE), m_ratio(0.0), m_userData(userData) { @@ -183,6 +186,7 @@ wxSizerItem::wxSizerItem(int width, m_proportion(proportion), m_border(border), m_flag(flag), + m_id(wxID_NONE), m_userData(userData) { DoSetSpacer(wxSize(width, height)); @@ -1085,6 +1089,33 @@ wxSizerItem* wxSizer::GetItem( size_t index ) return m_children.Item( index )->GetData(); } +wxSizerItem* wxSizer::GetItemById( int id, bool recursive ) +{ + // This gets a sizer item by the id of the sizer item + // and NOT the id of a window if the item is a window. + + wxSizerItemList::compatibility_iterator node = m_children.GetFirst(); + while (node) + { + wxSizerItem *item = node->GetData(); + + if (item->GetId() == id) + { + return item; + } + else if (recursive && item->IsSizer()) + { + wxSizerItem *subitem = item->GetSizer()->GetItemById( id, true ); + if (subitem) + return subitem; + } + + node = node->GetNext(); + } + + return NULL; +} + bool wxSizer::Show( wxWindow *window, bool show, bool recursive ) { wxSizerItem *item = GetItem( window, recursive );