X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6bc807b35dd64472634549aa219107a8044072ca..f1f5f16f780bb41aa2ea24ccbf728f14c86cc475:/src/generic/calctrl.cpp diff --git a/src/generic/calctrl.cpp b/src/generic/calctrl.cpp index f10b5015ca..a76d41f1b8 100644 --- a/src/generic/calctrl.cpp +++ b/src/generic/calctrl.cpp @@ -253,6 +253,14 @@ wxCalendarCtrl::~wxCalendarCtrl() { delete m_attrs[n]; } + + if ( !HasFlag(wxCAL_SEQUENTIAL_MONTH_SELECTION) ) + { + delete m_comboMonth; + delete m_staticMonth; + delete m_spinYear; + delete m_staticYear; + } } void wxCalendarCtrl::SetWindowStyleFlag(long style) @@ -1476,21 +1484,17 @@ wxCalendarHitTestResult wxCalendarCtrl::HitTest(const wxPoint& pos, wxDateTime::WeekDay *wd) { RecalcGeometry(); - // use the correct x-pos - wxCoord x0 = wxMax((GetSize().x - m_widthCol*7) /2, 0); - wxPoint pos_corr = pos; - pos_corr.x -= x0; - wxCoord y = pos_corr.y; + // the position where the calendar really begins + wxCoord x0 = wxMax((GetSize().x - m_widthCol*7)/2, 0); -/////////////////////////////////////////////////////////////////////////////////////////////////////// - if ( (GetWindowStyle() & wxCAL_SEQUENTIAL_MONTH_SELECTION) ) + if ( HasFlag(wxCAL_SEQUENTIAL_MONTH_SELECTION) ) { // Header: month // we need to find out if the hit is on left arrow, on month or on right arrow // left arrow? - if ( wxRegion(m_leftArrowRect).Contains(pos_corr) == wxInRegion ) + if ( m_leftArrowRect.Contains(pos) ) { if ( date ) { @@ -1507,7 +1511,7 @@ wxCalendarHitTestResult wxCalendarCtrl::HitTest(const wxPoint& pos, return wxCAL_HITTEST_DECMONTH; } - if ( wxRegion(m_rightArrowRect).Contains(pos_corr) == wxInRegion ) + if ( m_rightArrowRect.Contains(pos) ) { if ( date ) { @@ -1526,14 +1530,11 @@ wxCalendarHitTestResult wxCalendarCtrl::HitTest(const wxPoint& pos, } -/////////////////////////////////////////////////////////////////////////////////////////////////////// - // Header: Days - - int wday = pos_corr.x / m_widthCol; -// if ( y < m_heightRow ) - if ( y < (m_heightRow + m_rowOffset) ) + // header: week days + int wday = (pos.x - x0) / m_widthCol; + if ( pos.y < (m_heightRow + m_rowOffset) ) { - if ( y > m_rowOffset ) + if ( pos.y > m_rowOffset ) { if ( wd ) { @@ -1553,8 +1554,7 @@ wxCalendarHitTestResult wxCalendarCtrl::HitTest(const wxPoint& pos, } } -// int week = (y - m_heightRow) / m_heightRow; - int week = (y - (m_heightRow + m_rowOffset)) / m_heightRow; + int week = (pos.y - (m_heightRow + m_rowOffset)) / m_heightRow; if ( week >= 6 || wday >= 7 ) { return wxCAL_HITTEST_NOWHERE;