#include "wx/string.h"
#include "wx/intl.h"
#include "wx/math.h"
+ #include "wx/utils.h"
+ #include "wx/settings.h"
+ #include "wx/statbox.h"
#endif // WX_PRECOMP
#include "wx/sizer.h"
-#include "wx/utils.h"
-#include "wx/statbox.h"
-#include "wx/settings.h"
#include "wx/listimpl.cpp"
-#include "wx/intl.h"
+
#if WXWIN_COMPATIBILITY_2_4
#include "wx/notebook.h"
#endif
// Return a window size that will fit within the screens dimensions
wxSize wxSizer::FitSize( wxWindow *window )
{
+ if ( window->IsTopLevel() )
+ {
+ wxTopLevelWindow *tlw = wxDynamicCast(window, wxTopLevelWindow);
+ if ( tlw && tlw->IsAlwaysMaximized() )
+ {
+ return tlw->GetClientSize();
+ }
+ }
+
wxSize size = GetMinWindowSize( window );
wxSize sizeMax = GetMaxWindowSize( window );
#if wxUSE_STATBOX
wxStaticBoxSizer::wxStaticBoxSizer( wxStaticBox *box, int orient )
- : wxBoxSizer( orient )
- , m_staticBox( box )
+ : wxBoxSizer( orient ),
+ m_staticBox( box )
{
wxASSERT_MSG( box, wxT("wxStaticBoxSizer needs a static box") );
+
+ // do this so that our Detach() is called if the static box is destroyed
+ // before we are
+ m_staticBox->SetContainingSizer(this);
}
wxStaticBoxSizer::wxStaticBoxSizer(int orient, wxWindow *win, const wxString& s)
: wxBoxSizer(orient),
m_staticBox(new wxStaticBox(win, wxID_ANY, s))
{
+ // same as above
+ m_staticBox->SetContainingSizer(this);
+}
+
+wxStaticBoxSizer::~wxStaticBoxSizer()
+{
+ delete m_staticBox;
}
static void GetStaticBoxBorders( wxStaticBox *box,
wxBoxSizer::ShowItems( show );
}
+bool wxStaticBoxSizer::Detach( wxWindow *window )
+{
+ // avoid deleting m_staticBox in our dtor if it's being detached from the
+ // sizer (which can happen because it's being already destroyed for
+ // example)
+ if ( window == m_staticBox )
+ {
+ m_staticBox = NULL;
+ return true;
+ }
+
+ return wxSizer::Detach( window );
+}
+
#endif // wxUSE_STATBOX
#if wxUSE_BUTTON
#if wxUSE_BOOKCTRL
+#if WXWIN_COMPATIBILITY_2_6
+
wxBookCtrlSizer::wxBookCtrlSizer(wxBookCtrlBase *bookctrl)
: m_bookctrl(bookctrl)
{
wxASSERT_MSG( bookctrl, wxT("wxBookCtrlSizer needs a control") );
}
+#endif // WXWIN_COMPATIBILITY_2_6
+
void wxBookCtrlSizer::RecalcSizes()
{
m_bookctrl->SetSize( m_position.x, m_position.y, m_size.x, m_size.y );
#if wxUSE_NOTEBOOK
+#if WXWIN_COMPATIBILITY_2_6
+
wxNotebookSizer::wxNotebookSizer(wxNotebook *nb)
{
wxASSERT_MSG( nb, wxT("wxNotebookSizer needs a control") );
m_bookctrl = nb;
}
+#endif // WXWIN_COMPATIBILITY_2_6
+
#endif // wxUSE_NOTEBOOOK
#endif // wxUSE_BOOKCTRL