X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1e6feb95a79834836e88143b15d9f424ebe79621..74dc5eb60e80a9b2ceddd78cb577f42e48f5b3ba:/src/common/sizer.cpp diff --git a/src/common/sizer.cpp b/src/common/sizer.cpp index 3686b3978a..d11c537e32 100644 --- a/src/common/sizer.cpp +++ b/src/common/sizer.cpp @@ -27,16 +27,16 @@ //--------------------------------------------------------------------------- -IMPLEMENT_ABSTRACT_CLASS(wxSizerItem, wxObject); -IMPLEMENT_ABSTRACT_CLASS(wxSizer, wxObject); -IMPLEMENT_ABSTRACT_CLASS(wxGridSizer, wxSizer); -IMPLEMENT_ABSTRACT_CLASS(wxFlexGridSizer, wxGridSizer); -IMPLEMENT_ABSTRACT_CLASS(wxBoxSizer, wxSizer); +IMPLEMENT_ABSTRACT_CLASS(wxSizerItem, wxObject) +IMPLEMENT_ABSTRACT_CLASS(wxSizer, wxObject) +IMPLEMENT_ABSTRACT_CLASS(wxGridSizer, wxSizer) +IMPLEMENT_ABSTRACT_CLASS(wxFlexGridSizer, wxGridSizer) +IMPLEMENT_ABSTRACT_CLASS(wxBoxSizer, wxSizer) #if wxUSE_STATBOX -IMPLEMENT_ABSTRACT_CLASS(wxStaticBoxSizer, wxBoxSizer); +IMPLEMENT_ABSTRACT_CLASS(wxStaticBoxSizer, wxBoxSizer) #endif #if wxUSE_NOTEBOOK -IMPLEMENT_ABSTRACT_CLASS(wxNotebookSizer, wxSizer); +IMPLEMENT_ABSTRACT_CLASS(wxNotebookSizer, wxSizer) #endif //--------------------------------------------------------------------------- @@ -232,6 +232,15 @@ void wxSizerItem::SetDimension( wxPoint pos, wxSize size ) m_size = size; } +void wxSizerItem::DeleteWindows() +{ + if (m_window) + m_window->Destroy(); + + if (m_sizer) + m_sizer->DeleteWindows(); +} + bool wxSizerItem::IsWindow() { return (m_window != NULL); @@ -355,6 +364,25 @@ bool wxSizer::Remove( int pos ) return TRUE; } +void wxSizer::Clear( bool delete_windows ) +{ + if (delete_windows) + DeleteWindows(); + + m_children.Clear(); +} + +void wxSizer::DeleteWindows() +{ + wxNode *node = m_children.First(); + while (node) + { + wxSizerItem *item = (wxSizerItem*)node->Data(); + item->DeleteWindows(); + node = node->Next(); + } +} + void wxSizer::Fit( wxWindow *window ) { wxSize size; @@ -383,6 +411,9 @@ wxSize wxSizer::GetMaxWindowSize( wxWindow *WXUNUSED(window) ) wxRect rect = wxGetClientDisplayRect(); wxSize sizeMax (rect.width,rect.height); + // Sorry, but this bit is wrong -- it makes a window that should just be + // able to fit onto the screen, not fit on the screen. -- JACS +#if 0 // Make the max size a bit smaller than the visible portion of // the screen. A window which takes the entire screen doesn't // look very nice either @@ -391,6 +422,7 @@ wxSize wxSizer::GetMaxWindowSize( wxWindow *WXUNUSED(window) ) sizeMax.y *= 9; sizeMax.y /= 10; +#endif return sizeMax; }