[PATCH 1/7] Use a single timer for auto month scroll with prev/next buttons
Nikolay Sivov
bunglehead at gmail.com
Tue Oct 6 14:23:55 CDT 2009
---
dlls/comctl32/monthcal.c | 43 ++++++++++++++-----------------------------
1 files changed, 14 insertions(+), 29 deletions(-)
diff --git a/dlls/comctl32/monthcal.c b/dlls/comctl32/monthcal.c
index 42710c0..34528f6 100644
--- a/dlls/comctl32/monthcal.c
+++ b/dlls/comctl32/monthcal.c
@@ -66,8 +66,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(monthcal);
#define MC_NEXTMONTHDELAY 350 /* when continuously pressing `next */
/* month', wait 500 ms before going */
/* to the next month */
-#define MC_NEXTMONTHTIMER 1 /* Timer ID's */
-#define MC_PREVMONTHTIMER 2
+#define MC_PREVNEXTMONTHTIMER 1 /* Timer ID's */
#define countof(arr) (sizeof(arr)/sizeof(arr[0]))
@@ -1679,14 +1678,14 @@ MONTHCAL_LButtonDown(MONTHCAL_INFO *infoPtr, LPARAM lParam)
case MCHT_TITLEBTNNEXT:
MONTHCAL_GoToNextMonth(infoPtr);
infoPtr->status = MC_NEXTPRESSED;
- SetTimer(infoPtr->hwndSelf, MC_NEXTMONTHTIMER, MC_NEXTMONTHDELAY, 0);
+ SetTimer(infoPtr->hwndSelf, MC_PREVNEXTMONTHTIMER, MC_NEXTMONTHDELAY, 0);
InvalidateRect(infoPtr->hwndSelf, NULL, FALSE);
return 0;
case MCHT_TITLEBTNPREV:
MONTHCAL_GoToPrevMonth(infoPtr);
infoPtr->status = MC_PREVPRESSED;
- SetTimer(infoPtr->hwndSelf, MC_PREVMONTHTIMER, MC_NEXTMONTHDELAY, 0);
+ SetTimer(infoPtr->hwndSelf, MC_PREVNEXTMONTHTIMER, MC_NEXTMONTHDELAY, 0);
InvalidateRect(infoPtr->hwndSelf, NULL, FALSE);
return 0;
@@ -1767,14 +1766,9 @@ MONTHCAL_LButtonUp(MONTHCAL_INFO *infoPtr, LPARAM lParam)
TRACE("\n");
- if(infoPtr->status & MC_NEXTPRESSED) {
- KillTimer(infoPtr->hwndSelf, MC_NEXTMONTHTIMER);
- infoPtr->status &= ~MC_NEXTPRESSED;
- redraw = TRUE;
- }
- if(infoPtr->status & MC_PREVPRESSED) {
- KillTimer(infoPtr->hwndSelf, MC_PREVMONTHTIMER);
- infoPtr->status &= ~MC_PREVPRESSED;
+ if(infoPtr->status & (MC_PREVPRESSED | MC_NEXTPRESSED)) {
+ KillTimer(infoPtr->hwndSelf, MC_PREVNEXTMONTHTIMER);
+ infoPtr->status &= ~(MC_PREVPRESSED | MC_NEXTPRESSED);
redraw = TRUE;
}
@@ -1830,30 +1824,21 @@ MONTHCAL_LButtonUp(MONTHCAL_INFO *infoPtr, LPARAM lParam)
static LRESULT
-MONTHCAL_Timer(MONTHCAL_INFO *infoPtr, WPARAM wParam)
+MONTHCAL_Timer(MONTHCAL_INFO *infoPtr, WPARAM id)
{
- BOOL redraw = FALSE;
-
- TRACE("%ld\n", wParam);
+ TRACE("%ld\n", id);
- switch(wParam) {
- case MC_NEXTMONTHTIMER:
- redraw = TRUE;
- MONTHCAL_GoToNextMonth(infoPtr);
- break;
- case MC_PREVMONTHTIMER:
- redraw = TRUE;
- MONTHCAL_GoToPrevMonth(infoPtr);
+ switch(id) {
+ case MC_PREVNEXTMONTHTIMER:
+ if(infoPtr->status & MC_NEXTPRESSED) MONTHCAL_GoToNextMonth(infoPtr);
+ if(infoPtr->status & MC_PREVPRESSED) MONTHCAL_GoToPrevMonth(infoPtr);
+ InvalidateRect(infoPtr->hwndSelf, NULL, FALSE);
break;
default:
- ERR("got unknown timer\n");
+ ERR("got unknown timer %ld\n", id);
break;
}
- /* redraw only if necessary */
- if(redraw)
- InvalidateRect(infoPtr->hwndSelf, NULL, FALSE);
-
return 0;
}
--
1.5.6.5
--=-7ylXcFfK4uZXxM+1/edk--
More information about the wine-patches
mailing list