X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d9170b47d153c4f7835a41c4b7698bda34905724..7bd236e6da74203ba429941d3f9643291494b420:/src/generic/calctrl.cpp diff --git a/src/generic/calctrl.cpp b/src/generic/calctrl.cpp index aa8032ad76..cb0b01b5f8 100644 --- a/src/generic/calctrl.cpp +++ b/src/generic/calctrl.cpp @@ -788,7 +788,7 @@ void wxCalendarCtrl::DoMoveWindow(int x, int y, int width, int height) { int yDiff; - if ( !HasFlag(wxCAL_SEQUENTIAL_MONTH_SELECTION) ) + if ( !HasFlag(wxCAL_SEQUENTIAL_MONTH_SELECTION) && m_staticMonth ) { wxSize sizeCombo = m_comboMonth->GetSize(); wxSize sizeStatic = m_staticMonth->GetSize(); @@ -816,7 +816,7 @@ void wxCalendarCtrl::DoGetPosition(int *x, int *y) const { wxControl::DoGetPosition(x, y); - if ( !(GetWindowStyle() & wxCAL_SEQUENTIAL_MONTH_SELECTION) ) + if ( !HasFlag(wxCAL_SEQUENTIAL_MONTH_SELECTION) && GetMonthControl() ) { // our real top corner is not in this position if ( y ) @@ -1211,7 +1211,7 @@ void wxCalendarCtrl::RefreshDate(const wxDateTime& date) Refresh(true, &rect); } -void wxCalendarCtrl::HighlightRange(wxPaintDC* pDC, const wxDateTime& fromdate, const wxDateTime& todate, wxPen* pPen, wxBrush* pBrush) +void wxCalendarCtrl::HighlightRange(wxPaintDC* pDC, const wxDateTime& fromdate, const wxDateTime& todate, const wxPen* pPen, const wxBrush* pBrush) { // Highlights the given range using pen and brush // Does nothing if todate < fromdate @@ -1451,8 +1451,12 @@ 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.y; + wxCoord y = pos_corr.y; /////////////////////////////////////////////////////////////////////////////////////////////////////// if ( (GetWindowStyle() & wxCAL_SEQUENTIAL_MONTH_SELECTION) ) @@ -1461,7 +1465,7 @@ wxCalendarHitTestResult wxCalendarCtrl::HitTest(const wxPoint& pos, // 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) == wxInRegion ) + if ( wxRegion(m_leftArrowRect).Contains(pos_corr) == wxInRegion ) { if ( date ) { @@ -1478,7 +1482,7 @@ wxCalendarHitTestResult wxCalendarCtrl::HitTest(const wxPoint& pos, return wxCAL_HITTEST_DECMONTH; } - if ( wxRegion(m_rightArrowRect).Contains(pos) == wxInRegion ) + if ( wxRegion(m_rightArrowRect).Contains(pos_corr) == wxInRegion ) { if ( date ) { @@ -1500,9 +1504,7 @@ wxCalendarHitTestResult wxCalendarCtrl::HitTest(const wxPoint& pos, /////////////////////////////////////////////////////////////////////////////////////////////////////// // Header: Days - wxCoord x0 = wxMax( (GetSize().x - m_widthCol*7) /2 , 0 ); - - int wday = ( pos.x - x0 ) / m_widthCol; + int wday = pos_corr.x / m_widthCol; // if ( y < m_heightRow ) if ( y < (m_heightRow + m_rowOffset) ) { @@ -1653,13 +1655,13 @@ void wxCalendarCtrl::OnChar(wxKeyEvent& event) } break; - case WXK_PRIOR: + case WXK_PAGEUP: target = m_date - wxDateSpan::Month(); ChangeMonth(&target); SetDateAndNotify(target); // always break; - case WXK_NEXT: + case WXK_PAGEDOWN: target = m_date + wxDateSpan::Month(); ChangeMonth(&target); SetDateAndNotify(target); // always