X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f6bcfd974ef26faf6f91a62cac09827e09463fd1..2c667cb8d84f9b7304938c6a9356673c6002880e:/src/generic/calctrl.cpp diff --git a/src/generic/calctrl.cpp b/src/generic/calctrl.cpp index f2ecd265a1..40e2dd3bc3 100644 --- a/src/generic/calctrl.cpp +++ b/src/generic/calctrl.cpp @@ -36,8 +36,7 @@ #include "wx/stattext.h" #endif //WX_PRECOMP -// Can only use wxSpinEvent if this is enabled -#if wxUSE_SPINBTN +#if wxUSE_CALENDARCTRL #include "wx/calctrl.h" @@ -97,6 +96,17 @@ END_EVENT_TABLE() IMPLEMENT_DYNAMIC_CLASS(wxCalendarCtrl, wxControl) IMPLEMENT_DYNAMIC_CLASS(wxCalendarEvent, wxCommandEvent) +// ---------------------------------------------------------------------------- +// events +// ---------------------------------------------------------------------------- + +DEFINE_EVENT_TYPE(wxEVT_CALENDAR_SEL_CHANGED) +DEFINE_EVENT_TYPE(wxEVT_CALENDAR_DAY_CHANGED) +DEFINE_EVENT_TYPE(wxEVT_CALENDAR_MONTH_CHANGED) +DEFINE_EVENT_TYPE(wxEVT_CALENDAR_YEAR_CHANGED) +DEFINE_EVENT_TYPE(wxEVT_CALENDAR_DOUBLECLICKED) +DEFINE_EVENT_TYPE(wxEVT_CALENDAR_WEEKDAY_CLICKED) + // ============================================================================ // implementation // ============================================================================ @@ -170,14 +180,20 @@ void wxCalendarCtrl::Init() m_colHeaderBg = *wxLIGHT_GREY; } -bool wxCalendarCtrl::Create(wxWindow * WXUNUSED(parent), - wxWindowID WXUNUSED(id), +bool wxCalendarCtrl::Create(wxWindow *parent, + wxWindowID id, const wxDateTime& date, - const wxPoint& WXUNUSED(pos), + const wxPoint& pos, const wxSize& size, long style, - const wxString& WXUNUSED(name)) + const wxString& name) { + if ( !wxControl::Create(parent, id, pos, size, + style | wxWANTS_CHARS, wxDefaultValidator, name) ) + { + return FALSE; + } + // needed to get the arrow keys normally used for the dialog navigation SetWindowStyle(style | wxWANTS_CHARS); @@ -461,15 +477,14 @@ wxSize wxCalendarCtrl::DoGetBestSize() const wxCoord width = 7*m_widthCol, height = 7*m_heightRow; - wxSize sizeCombo = m_comboMonth->GetBestSize(), - sizeSpin = m_spinYear->GetBestSize(); - - height += VERT_MARGIN + wxMax(sizeCombo.y, sizeSpin.y); + // the combobox doesn't report its height correctly (it returns the + // height including the drop down list) so don't use it + height += VERT_MARGIN + m_spinYear->GetBestSize().y; if ( GetWindowStyle() & (wxRAISED_BORDER | wxSUNKEN_BORDER) ) { // the border would clip the last line otherwise - height += 4; + height += 6; } return wxSize(width, height); @@ -637,7 +652,7 @@ void wxCalendarCtrl::OnPaint(wxPaintEvent& WXUNUSED(event)) wxCalendarDateAttr *attr = m_attrs[day - 1]; - bool isSel = m_date == date; + bool isSel = date.IsSameDate(m_date); if ( isSel ) { dc.SetTextForeground(m_colHighlightFg); @@ -1046,7 +1061,8 @@ wxCalendarEvent::wxCalendarEvent(wxCalendarCtrl *cal, wxEventType type) : wxCommandEvent(type, cal->GetId()) { m_date = cal->GetDate(); + SetEventObject(cal); } -#endif // wxUSE_SPINBTN +#endif // wxUSE_CALENDARCTRL