forked from Mirrors/wine-wine
comctl32: Better day of the month input checking in datetime.
parent
113a50a843
commit
6f64338b9d
|
@ -955,6 +955,7 @@ DATETIME_Char (DATETIME_INFO *infoPtr, WPARAM vkCode, LPARAM keyData)
|
||||||
|
|
||||||
if (vkCode >= '0' && vkCode <= '9') {
|
if (vkCode >= '0' && vkCode <= '9') {
|
||||||
int num = vkCode-'0';
|
int num = vkCode-'0';
|
||||||
|
int newDays;
|
||||||
|
|
||||||
/* this is a somewhat simplified version of what Windows does */
|
/* this is a somewhat simplified version of what Windows does */
|
||||||
SYSTEMTIME *date = &infoPtr->date;
|
SYSTEMTIME *date = &infoPtr->date;
|
||||||
|
@ -986,11 +987,11 @@ DATETIME_Char (DATETIME_INFO *infoPtr, WPARAM vkCode, LPARAM keyData)
|
||||||
break;
|
break;
|
||||||
case ONEDIGITDAY:
|
case ONEDIGITDAY:
|
||||||
case TWODIGITDAY:
|
case TWODIGITDAY:
|
||||||
/* probably better checking here would help */
|
newDays = (date->wDay%10)*10+num;
|
||||||
if ((date->wDay%10) >= 3 && num > 1)
|
if (newDays > MONTHCAL_MonthLength(date->wMonth, date->wYear))
|
||||||
date->wDay = num;
|
date->wDay = num;
|
||||||
else
|
else
|
||||||
date->wDay = (date->wDay%10)*10+num;
|
date->wDay = newDays;
|
||||||
date->wDayOfWeek = DATETIME_CalculateDayOfWeek(
|
date->wDayOfWeek = DATETIME_CalculateDayOfWeek(
|
||||||
date->wDay,date->wMonth,date->wYear);
|
date->wDay,date->wMonth,date->wYear);
|
||||||
DATETIME_SendDateTimeChangeNotify (infoPtr);
|
DATETIME_SendDateTimeChangeNotify (infoPtr);
|
||||||
|
|
Loading…
Reference in New Issue