Vincent Povirk : comctl32: When entering a month or year, keep the day in range.
Alexandre Julliard
julliard at winehq.org
Fri Apr 1 09:41:00 CDT 2011
Module: wine
Branch: master
Commit: 0d8775c9f990766f915d45065796d8fdd2866ff1
URL: http://source.winehq.org/git/wine.git/?a=commit;h=0d8775c9f990766f915d45065796d8fdd2866ff1
Author: Vincent Povirk <vincent at codeweavers.com>
Date: Thu Mar 31 14:04:15 2011 -0500
comctl32: When entering a month or year, keep the day in range.
---
dlls/comctl32/datetime.c | 8 +++++++-
1 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/dlls/comctl32/datetime.c b/dlls/comctl32/datetime.c
index bc643eb..fd97fdd 100644
--- a/dlls/comctl32/datetime.c
+++ b/dlls/comctl32/datetime.c
@@ -770,7 +770,7 @@ static void
DATETIME_ApplySelectedField (DATETIME_INFO *infoPtr)
{
int fieldNum = infoPtr->select & DTHT_DATEFIELD;
- int i, val=0;
+ int i, val=0, clamp_day=0;
SYSTEMTIME date = infoPtr->date;
if (infoPtr->select == -1 || infoPtr->nCharsEntered == 0)
@@ -785,14 +785,17 @@ DATETIME_ApplySelectedField (DATETIME_INFO *infoPtr)
case ONEDIGITYEAR:
case TWODIGITYEAR:
date.wYear = date.wYear - (date.wYear%100) + val;
+ clamp_day = 1;
break;
case INVALIDFULLYEAR:
case FULLYEAR:
date.wYear = val;
+ clamp_day = 1;
break;
case ONEDIGITMONTH:
case TWODIGITMONTH:
date.wMonth = val;
+ clamp_day = 1;
break;
case ONEDIGITDAY:
case TWODIGITDAY:
@@ -815,6 +818,9 @@ DATETIME_ApplySelectedField (DATETIME_INFO *infoPtr)
break;
}
+ if (clamp_day && date.wDay > MONTHCAL_MonthLength(date.wMonth, date.wYear))
+ date.wDay = MONTHCAL_MonthLength(date.wMonth, date.wYear);
+
if (DATETIME_SetSystemTime(infoPtr, GDT_VALID, &date))
DATETIME_SendDateTimeChangeNotify (infoPtr);
}
More information about the wine-cvs
mailing list