Nikolay Sivov : comctl32/monthcal: Add support for month delta in button navigation.

Alexandre Julliard julliard at winehq.org
Mon Aug 2 11:03:54 CDT 2010


Module: wine
Branch: master
Commit: 516c322eccddf045fb1128bde9cae30f8329f2cd
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=516c322eccddf045fb1128bde9cae30f8329f2cd

Author: Nikolay Sivov <nsivov at 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);
 }
 




More information about the wine-cvs mailing list