X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/028285e4af7232447cbb88caec61a3129cde02a7..9e1fc0e42822fdf1159582f1b73cde0c7d15bc92:/src/generic/calctrl.cpp diff --git a/src/generic/calctrl.cpp b/src/generic/calctrl.cpp index e5e98717bc..2fb1c41725 100644 --- a/src/generic/calctrl.cpp +++ b/src/generic/calctrl.cpp @@ -202,6 +202,9 @@ bool wxCalendarCtrl::Create(wxWindow *parent, long style, const wxString& name) { + // set the style first to avoid assert in our SetWindowStyleFlag() + m_windowStyle = style; + if ( !wxControl::Create(parent, id, pos, size, style | wxCLIP_CHILDREN | wxWANTS_CHARS | wxFULL_REPAINT_ON_RESIZE, wxDefaultValidator, name) ) @@ -235,7 +238,7 @@ bool wxCalendarCtrl::Create(wxWindow *parent, // we need to set the position as well because the main control position // is not the same as the one specified in pos if we have the controls // above it - SetBestSize(size); + SetInitialSize(size); SetPosition(pos); // Since we don't paint the whole background make sure that the platform @@ -253,6 +256,25 @@ wxCalendarCtrl::~wxCalendarCtrl() { delete m_attrs[n]; } + + if ( !HasFlag(wxCAL_SEQUENTIAL_MONTH_SELECTION) ) + { + delete m_comboMonth; + delete m_staticMonth; + delete m_spinYear; + delete m_staticYear; + } +} + +void wxCalendarCtrl::SetWindowStyleFlag(long style) +{ + // changing this style doesn't work because the controls are not + // created/shown/hidden accordingly + wxASSERT_MSG( (style & wxCAL_SEQUENTIAL_MONTH_SELECTION) == + (m_windowStyle & wxCAL_SEQUENTIAL_MONTH_SELECTION), + _T("wxCAL_SEQUENTIAL_MONTH_SELECTION can't be changed after creation") ); + + wxControl::SetWindowStyleFlag(style); } // ---------------------------------------------------------------------------- @@ -394,6 +416,7 @@ void wxCalendarCtrl::ShowCurrentControls() m_spinYear->Hide(); m_staticYear->Show(); } + //else: these controls are not even created, don't show/hide them } wxControl *wxCalendarCtrl::GetMonthControl() const @@ -790,7 +813,7 @@ void wxCalendarCtrl::DoMoveWindow(int x, int y, int width, int height) if ( !HasFlag(wxCAL_SEQUENTIAL_MONTH_SELECTION) && m_staticMonth ) { - wxSize sizeCombo = m_comboMonth->GetSize(); + wxSize sizeCombo = m_comboMonth->GetEffectiveMinSize(); wxSize sizeStatic = m_staticMonth->GetSize(); wxSize sizeSpin = m_spinYear->GetSize(); @@ -826,7 +849,7 @@ void wxCalendarCtrl::DoMoveWindow(int x, int y, int width, int height) void wxCalendarCtrl::DoGetPosition(int *x, int *y) const { wxControl::DoGetPosition(x, y); - +#ifndef __WXPM__ if ( !HasFlag(wxCAL_SEQUENTIAL_MONTH_SELECTION) && GetMonthControl() ) { // our real top corner is not in this position @@ -835,13 +858,14 @@ void wxCalendarCtrl::DoGetPosition(int *x, int *y) const *y -= GetMonthControl()->GetSize().y + VERT_MARGIN; } } +#endif } void wxCalendarCtrl::DoGetSize(int *width, int *height) const { wxControl::DoGetSize(width, height); - - if ( !(GetWindowStyle() & wxCAL_SEQUENTIAL_MONTH_SELECTION) ) +#ifndef __WXPM__ + if ( !HasFlag(wxCAL_SEQUENTIAL_MONTH_SELECTION) ) { // our real height is bigger if ( height && GetMonthControl()) @@ -849,6 +873,7 @@ void wxCalendarCtrl::DoGetSize(int *width, int *height) const *height += GetMonthControl()->GetSize().y + VERT_MARGIN; } } +#endif } void wxCalendarCtrl::RecalcGeometry() @@ -886,7 +911,7 @@ void wxCalendarCtrl::RecalcGeometry() m_widthCol += 2; m_heightRow += 2; - m_rowOffset = (GetWindowStyle() & wxCAL_SEQUENTIAL_MONTH_SELECTION) ? m_heightRow : 0; // conditional in relation to style + m_rowOffset = HasFlag(wxCAL_SEQUENTIAL_MONTH_SELECTION) ? m_heightRow : 0; // conditional in relation to style } // ----------------------------------------------------------------------------