[PATCH 4/7] Add support for month delta in button navigation

Nikolay Sivov nsivov at codeweavers.com
Sun Aug 1 05:38:40 CDT 2010


---
 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);
 }
 
-- 
1.5.6.5



--------------080702080605060408060705--



More information about the wine-patches mailing list