From: Julian Smart Date: Fri, 24 Jan 2003 12:00:28 +0000 (+0000) Subject: Applied patch [ 666379 ] CalCtrl doesn't use best sizes for the year combobox X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/95bcc40c745db8bcd392d06366436afb21964db6?ds=sidebyside Applied patch [ 666379 ] CalCtrl doesn't use best sizes for the year combobox 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 --- diff --git a/src/generic/calctrl.cpp b/src/generic/calctrl.cpp index 688946988a..9d6a032a91 100644 --- a/src/generic/calctrl.cpp +++ b/src/generic/calctrl.cpp @@ -149,6 +149,7 @@ wxYearSpinCtrl::wxYearSpinCtrl(wxCalendarCtrl *cal) wxDefaultSize, wxSP_ARROW_KEYS | wxCLIP_SIBLINGS, -4300, 10000, cal->GetDate().GetYear()) + { 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 sizeSpin = m_spinYear->GetSize(); 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