Nikolay Sivov : comctl32/monthcal: Use a single timer for auto month scroll with prev/next buttons.
Alexandre Julliard
julliard at winehq.org
Wed Oct 7 09:46:04 CDT 2009
Module: wine
Branch: master
Commit: 70eb6c0385cf8e2c9cd2d9303a32bd20bdb5a57b
URL: http://source.winehq.org/git/wine.git/?a=commit;h=70eb6c0385cf8e2c9cd2d9303a32bd20bdb5a57b
Author: Nikolay Sivov <bunglehead at gmail.com>
Date: Tue Oct 6 23:23:55 2009 +0400
comctl32/monthcal: Use a single timer for auto month scroll with prev/next buttons.
---
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;
}
More information about the wine-cvs
mailing list