X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/95bcc40c745db8bcd392d06366436afb21964db6..6f7c5199ed9bc29507d426b13db9346bf1860005:/src/generic/calctrl.cpp diff --git a/src/generic/calctrl.cpp b/src/generic/calctrl.cpp index 9d6a032a91..2965710e11 100644 --- a/src/generic/calctrl.cpp +++ b/src/generic/calctrl.cpp @@ -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