Layout improvements for CalendarCtrl

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53255 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
2008-04-18 08:01:13 +00:00
parent 427ad6e188
commit a4f03d8798
5 changed files with 58 additions and 202 deletions

View File

@@ -249,7 +249,6 @@ bool wxGenericCalendarCtrl::Create(wxWindow *parent,
m_staticYear = new wxStaticText(GetParent(), wxID_ANY, m_date.Format(_T("%Y")),
wxDefaultPosition, wxDefaultSize,
wxALIGN_CENTRE);
CreateMonthComboBox();
m_staticMonth = new wxStaticText(GetParent(), wxID_ANY, m_date.Format(_T("%B")),
wxDefaultPosition, wxDefaultSize,
@@ -339,6 +338,9 @@ void wxGenericCalendarCtrl::CreateYearSpinCtrl()
wxDefaultSize,
wxSP_ARROW_KEYS | wxCLIP_SIBLINGS,
-4300, 10000, GetDate().GetYear());
#ifdef __WXMAC__
m_spinYear->SetSize( 90, -1 );
#endif
m_spinYear->Connect(m_spinYear->GetId(), wxEVT_COMMAND_TEXT_UPDATED,
wxCommandEventHandler(wxGenericCalendarCtrl::OnYearTextChange),
@@ -777,12 +779,9 @@ size_t wxGenericCalendarCtrl::GetWeek(const wxDateTime& date) const
// the same space
// the constants used for the layout
#define VERT_MARGIN 5 // distance between combo and calendar
#ifdef __WXMAC__
#define VERT_MARGIN 5 // distance between combo and calendar
#define HORZ_MARGIN 5 // spin
#else
#define HORZ_MARGIN 15 // spin
#endif
wxSize wxGenericCalendarCtrl::DoGetBestSize() const
{
// calc the size of the calendar
@@ -797,6 +796,10 @@ wxSize wxGenericCalendarCtrl::DoGetBestSize() const
height += wxMax(bestSizeCombo.y, m_spinYear->GetBestSize().y)
+ VERT_MARGIN;
#ifdef __WXMAC__
// the spin control get clipped otherwise
width += 10;
#endif
wxCoord w2 = bestSizeCombo.x + HORZ_MARGIN + GetCharWidth()*6;
if ( width < w2 )
@@ -810,6 +813,7 @@ wxSize wxGenericCalendarCtrl::DoGetBestSize() const
}
CacheBestSize(best);
return best;
}
@@ -825,12 +829,16 @@ void wxGenericCalendarCtrl::DoMoveWindow(int x, int y, int width, int height)
int maxHeight = wxMax(sizeSpin.y, sizeCombo.y);
int dy = (maxHeight - sizeStatic.y) / 2;
m_comboMonth->Move(x, y);
#ifdef __WXMAC__
m_comboMonth->Move(x, y + (maxHeight - sizeCombo.y)/2 + 2); // FIXME, something is reporting the wrong size..
#else
m_comboMonth->Move(x, y + (maxHeight - sizeCombo.y)/2);
#endif
m_staticMonth->SetSize(x, y + dy, sizeCombo.x, -1, sizeStatic.y);
int xDiff = sizeCombo.x + HORZ_MARGIN;
m_spinYear->SetSize(x + xDiff, y, width - xDiff, maxHeight);
m_spinYear->SetSize(x + xDiff, y + (maxHeight - sizeSpin.y)/2, width - xDiff, maxHeight);
m_staticYear->SetSize(x + xDiff, y + dy, width - xDiff, sizeStatic.y);
yDiff = maxHeight + VERT_MARGIN;