]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/calctrl.cpp
digital mars updated
[wxWidgets.git] / src / generic / calctrl.cpp
index 9d6a032a917ad321e80c47e90f096bf154efc9da..161b50ad26b86834e0e6953cc6c78c4b6675123f 100644 (file)
@@ -6,7 +6,7 @@
 // Created:     29.12.99
 // RCS-ID:      $Id$
 // Copyright:   (c) 1999 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 // ============================================================================
@@ -759,9 +759,26 @@ void wxCalendarCtrl::DoMoveWindow(int x, int y, int width, int height)
         wxSize sizeCombo = m_comboMonth->GetSize();
         wxSize sizeStatic = m_staticMonth->GetSize();
         wxSize sizeSpin = m_spinYear->GetSize();
-
         int dy = (sizeCombo.y - sizeStatic.y) / 2;
-
+/*
+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.
+
+Otto Wyss
+*/
+
+#ifdef __WXUNIVERSAL__
         if (sizeCombo.x + HORZ_MARGIN - sizeSpin.x > width)
         {
             m_comboMonth->SetSize(x, y, width - HORZ_MARGIN - sizeSpin.x, sizeCombo.y);
@@ -773,7 +790,15 @@ void wxCalendarCtrl::DoMoveWindow(int x, int y, int width, int height)
         m_staticMonth->Move(x, y + dy);
         m_spinYear->Move(x + width - sizeSpin.x, y);
         m_staticYear->Move(x + width - sizeSpin.x, y + dy);
+#else
+        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);
+#endif
         yDiff = wxMax(sizeSpin.y, sizeCombo.y) + VERT_MARGIN;
     }
     else // no controls on the top