Module: wine Branch: master Commit: 516c322eccddf045fb1128bde9cae30f8329f2cd URL: http://source.winehq.org/git/wine.git/?a=commit;h=516c322eccddf045fb1128bde9...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Sun Aug 1 14:38:40 2010 +0400
comctl32/monthcal: Add support for month delta in button navigation.
---
dlls/comctl32/monthcal.c | 24 +++++++++++++++++------- 1 files changed, 17 insertions(+), 7 deletions(-)
diff --git a/dlls/comctl32/monthcal.c b/dlls/comctl32/monthcal.c index 91cd4cb..23900cf 100644 --- a/dlls/comctl32/monthcal.c +++ b/dlls/comctl32/monthcal.c @@ -1776,11 +1776,22 @@ static void MONTHCAL_NotifyDayState(MONTHCAL_INFO *infoPtr)
static void MONTHCAL_GoToMonth(MONTHCAL_INFO *infoPtr, enum nav_direction direction) { - SYSTEMTIME st = infoPtr->curSel; + INT delta = infoPtr->delta ? infoPtr->delta : infoPtr->cal_num; + SYSTEMTIME st;
TRACE("%s\n", direction == DIRECTION_BACKWARD ? "back" : "fwd");
- if(direction == DIRECTION_BACKWARD) MONTHCAL_GetPrevMonth(&st); else MONTHCAL_GetNextMonth(&st); + /* check if change allowed by range set */ + if(direction == DIRECTION_BACKWARD) + { + st = infoPtr->calendars[0].month; + MONTHCAL_GetMonth(&st, -delta); + } + else + { + st = infoPtr->calendars[infoPtr->cal_num-1].month; + MONTHCAL_GetMonth(&st, delta); + }
if(!MONTHCAL_IsDateInValidRange(infoPtr, &st, FALSE)) return;
@@ -1793,13 +1804,13 @@ static void MONTHCAL_GoToMonth(MONTHCAL_INFO *infoPtr, enum nav_direction direct
if(direction == DIRECTION_BACKWARD) { - MONTHCAL_GetPrevMonth(&range[0]); - MONTHCAL_GetPrevMonth(&range[1]); + MONTHCAL_GetMonth(&range[0], -delta); + MONTHCAL_GetMonth(&range[1], -delta); } else { - MONTHCAL_GetNextMonth(&range[0]); - MONTHCAL_GetNextMonth(&range[1]); + MONTHCAL_GetMonth(&range[0], delta); + MONTHCAL_GetMonth(&range[1], delta); }
MONTHCAL_SetSelRange(infoPtr, range); @@ -1808,7 +1819,6 @@ static void MONTHCAL_GoToMonth(MONTHCAL_INFO *infoPtr, enum nav_direction direct MONTHCAL_SetCurSel(infoPtr, &st);
MONTHCAL_NotifyDayState(infoPtr); - MONTHCAL_NotifySelectionChange(infoPtr); }