]> git.saurik.com Git - wxWidgets.git/commitdiff
correct positioning of the control and removed workarounds for old MSW bugs
authorVadim Zeitlin <vadim@wxwidgets.org>
Mon, 7 Apr 2008 01:06:57 +0000 (01:06 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Mon, 7 Apr 2008 01:06:57 +0000 (01:06 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53072 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/generic/calctrlg.h
src/generic/calctrlg.cpp

index 57e1bab8af829b0af5170ea5b5a5f5d3e8f593dc..e4d3beabff8c31cb75ed89113ebbbd2415f289c8 100644 (file)
@@ -168,9 +168,6 @@ public:
 protected:
     // override some base class virtuals
     virtual wxSize DoGetBestSize() const;
-    virtual void DoGetPosition(int *x, int *y) const;
-    virtual void DoGetSize(int *width, int *height) const;
-    virtual void DoSetSize(int x, int y, int width, int height, int sizeFlags);
     virtual void DoMoveWindow(int x, int y, int width, int height);
 
 private:
@@ -256,6 +253,7 @@ private:
     // typed in by the user
     void SetUserChangedYear() { m_userChangedYear = true; }
 
+
     // the subcontrols
     wxStaticText *m_staticMonth;
     wxComboBox *m_comboMonth;
index 2c5a3403765a72f26bb89a3b20bcf3fe116dde63..cb153cce2894629f43e8ad3ee47a4460ee18abba 100644 (file)
@@ -789,39 +789,30 @@ wxSize wxGenericCalendarCtrl::DoGetBestSize() const
     wx_const_cast(wxGenericCalendarCtrl *, this)->RecalcGeometry();
 
     wxCoord width = 7*m_widthCol,
-            height = 7*m_heightRow + m_rowOffset + VERT_MARGIN;
+            height = 7*m_heightRow + m_rowOffset;
 
     if ( !HasFlag(wxCAL_SEQUENTIAL_MONTH_SELECTION) )
     {
-        // the combobox doesn't report its height correctly (it returns the
-        // height including the drop down list) so don't use it
-        height += m_spinYear->GetBestSize().y;
+        const wxSize bestSizeCombo = m_comboMonth->GetBestSize();
 
+        height += wxMax(bestSizeCombo.y, m_spinYear->GetBestSize().y)
+                    + VERT_MARGIN;
 
-        wxCoord w2 = m_comboMonth->GetBestSize().x + HORZ_MARGIN + GetCharWidth()*6;
-        if (width < w2)
+        wxCoord w2 = bestSizeCombo.x + HORZ_MARGIN + GetCharWidth()*6;
+        if ( width < w2 )
             width = w2;
     }
 
+    wxSize best(width, height);
     if ( !HasFlag(wxBORDER_NONE) )
     {
-        // the border would clip the last line otherwise
-        height += 6;
-        width += 4;
+        best += GetWindowBorderSize();
     }
 
-    wxSize best(width, height);
     CacheBestSize(best);
     return best;
 }
 
-void wxGenericCalendarCtrl::DoSetSize(int x, int y,
-                               int width, int height,
-                               int sizeFlags)
-{
-    wxControl::DoSetSize(x, y, width, height, sizeFlags);
-}
-
 void wxGenericCalendarCtrl::DoMoveWindow(int x, int y, int width, int height)
 {
     int yDiff;
@@ -832,26 +823,17 @@ void wxGenericCalendarCtrl::DoMoveWindow(int x, int y, int width, int height)
         wxSize sizeStatic = m_staticMonth->GetSize();
         wxSize sizeSpin = m_spinYear->GetSize();
 
-        // wxMSW sometimes reports the wrong combo height,
-        // so on this platform we'll use the spin control
-        // height instead.
-#ifdef __WXMSW__
-        int maxHeight = sizeSpin.y;
-        int requiredSpinHeight = -1;
-#else
-        int maxHeight = sizeCombo.y;
-        int requiredSpinHeight = sizeCombo.y;
-#endif
+        int maxHeight = wxMax(sizeSpin.y, sizeCombo.y);
         int dy = (maxHeight - sizeStatic.y) / 2;
         m_comboMonth->Move(x, y);
         m_staticMonth->SetSize(x, y + dy, sizeCombo.x, -1, sizeStatic.y);
 
         int xDiff = sizeCombo.x + HORZ_MARGIN;
 
-        m_spinYear->SetSize(x + xDiff, y, width - xDiff, requiredSpinHeight);
+        m_spinYear->SetSize(x + xDiff, y, width - xDiff, maxHeight);
         m_staticYear->SetSize(x + xDiff, y + dy, width - xDiff, sizeStatic.y);
 
-        yDiff = wxMax(sizeSpin.y, maxHeight) + VERT_MARGIN;
+        yDiff = maxHeight + VERT_MARGIN;
     }
     else // no controls on the top
     {
@@ -861,36 +843,6 @@ void wxGenericCalendarCtrl::DoMoveWindow(int x, int y, int width, int height)
     wxControl::DoMoveWindow(x, y + yDiff, width, height - yDiff);
 }
 
-void wxGenericCalendarCtrl::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
-        if ( y )
-        {
-            *y -= GetMonthControl()->GetSize().y + VERT_MARGIN;
-        }
-    }
-#endif
-}
-
-void wxGenericCalendarCtrl::DoGetSize(int *width, int *height) const
-{
-    wxControl::DoGetSize(width, height);
-#ifndef __WXPM__
-    if ( !HasFlag(wxCAL_SEQUENTIAL_MONTH_SELECTION) )
-    {
-        // our real height is bigger
-        if ( height && GetMonthControl())
-        {
-            *height += GetMonthControl()->GetSize().y + VERT_MARGIN;
-        }
-    }
-#endif
-}
-
 void wxGenericCalendarCtrl::RecalcGeometry()
 {
     wxClientDC dc(this);