X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/95bcc40c745db8bcd392d06366436afb21964db6..e8617760b089b3dd31e4d77ce493267a82fc1003:/src/generic/calctrl.cpp diff --git a/src/generic/calctrl.cpp b/src/generic/calctrl.cpp index 9d6a032a91..161b50ad26 100644 --- a/src/generic/calctrl.cpp +++ b/src/generic/calctrl.cpp @@ -6,7 +6,7 @@ // Created: 29.12.99 // RCS-ID: $Id$ // Copyright: (c) 1999 Vadim Zeitlin -// 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