]> git.saurik.com Git - wxWidgets.git/commitdiff
Applied patch [ 666379 ] CalCtrl doesn't use best sizes for the year combobox
authorJulian Smart <julian@anthemion.co.uk>
Fri, 24 Jan 2003 12:00:28 +0000 (12:00 +0000)
committerJulian Smart <julian@anthemion.co.uk>
Fri, 24 Jan 2003 12:00:28 +0000 (12:00 +0000)
In the calender the size of the combobox for the year
is just defined by a margin from the month combobox to
the left border. While in wxUniv the year control can't
show all 4 digits, in wxMsw it show almost twice as
much.Instead the year should use it's best size and be
left aligned to the calendar. Just in case the month in
any language is longer than it has space in the
calendar it is shortend.This way the year always can
show the 4 digits.

This patch relies on the fact that a combobox has a
good best size implementation. This is not the case
with wxMSW but I don't know why. In wxUniv there is
another patch [634896].

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@18900 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/generic/calctrl.cpp

index 688946988a3cd797768afc5cb4791dcb34a0a5ec..9d6a032a917ad321e80c47e90f096bf154efc9da 100644 (file)
@@ -149,6 +149,7 @@ wxYearSpinCtrl::wxYearSpinCtrl(wxCalendarCtrl *cal)
                            wxDefaultSize,
                            wxSP_ARROW_KEYS | wxCLIP_SIBLINGS,
                            -4300, 10000, cal->GetDate().GetYear())
                            wxDefaultSize,
                            wxSP_ARROW_KEYS | wxCLIP_SIBLINGS,
                            -4300, 10000, cal->GetDate().GetYear())
+
 {
     m_cal = cal;
 }
 {
     m_cal = cal;
 }
@@ -757,18 +758,22 @@ void wxCalendarCtrl::DoMoveWindow(int x, int y, int width, int height)
     {
         wxSize sizeCombo = m_comboMonth->GetSize();
         wxSize sizeStatic = m_staticMonth->GetSize();
     {
         wxSize sizeCombo = m_comboMonth->GetSize();
         wxSize sizeStatic = m_staticMonth->GetSize();
+        wxSize sizeSpin = m_spinYear->GetSize();
 
         int dy = (sizeCombo.y - sizeStatic.y) / 2;
 
 
         int dy = (sizeCombo.y - sizeStatic.y) / 2;
 
-        m_comboMonth->Move(x, y);
-        m_staticMonth->SetSize(x, y + dy, sizeCombo.x, sizeStatic.y);
-
-        int xDiff = sizeCombo.x + HORZ_MARGIN;
-
-        m_spinYear->SetSize(x + xDiff, y, width - xDiff, sizeCombo.y);
-        m_staticYear->SetSize(x + xDiff, y + dy, width - xDiff, sizeStatic.y);
+        if (sizeCombo.x + HORZ_MARGIN - sizeSpin.x > width)
+        {
+            m_comboMonth->SetSize(x, y, width - HORZ_MARGIN - sizeSpin.x, sizeCombo.y);
+        }
+        else
+        {
+            m_comboMonth->Move(x, y);
+        }
+        m_staticMonth->Move(x, y + dy);
+        m_spinYear->Move(x + width - sizeSpin.x, y);
+        m_staticYear->Move(x + width - sizeSpin.x, y + dy);
 
 
-        wxSize sizeSpin = m_spinYear->GetSize();
         yDiff = wxMax(sizeSpin.y, sizeCombo.y) + VERT_MARGIN;
     }
     else // no controls on the top
         yDiff = wxMax(sizeSpin.y, sizeCombo.y) + VERT_MARGIN;
     }
     else // no controls on the top