comctl32/datetime: Don't allow an invalid year to be typed in.
This commit is contained in:
parent
3f93230812
commit
9de240bd0e
|
@ -847,6 +847,7 @@ DATETIME_ApplySelectedField (DATETIME_INFO *infoPtr)
|
||||||
int fieldNum = infoPtr->select & DTHT_DATEFIELD;
|
int fieldNum = infoPtr->select & DTHT_DATEFIELD;
|
||||||
int i, val=0, clamp_day=0;
|
int i, val=0, clamp_day=0;
|
||||||
SYSTEMTIME date = infoPtr->date;
|
SYSTEMTIME date = infoPtr->date;
|
||||||
|
int oldyear;
|
||||||
|
|
||||||
if (infoPtr->select == -1 || infoPtr->nCharsEntered == 0)
|
if (infoPtr->select == -1 || infoPtr->nCharsEntered == 0)
|
||||||
return;
|
return;
|
||||||
|
@ -859,13 +860,25 @@ DATETIME_ApplySelectedField (DATETIME_INFO *infoPtr)
|
||||||
switch (infoPtr->fieldspec[fieldNum]) {
|
switch (infoPtr->fieldspec[fieldNum]) {
|
||||||
case ONEDIGITYEAR:
|
case ONEDIGITYEAR:
|
||||||
case TWODIGITYEAR:
|
case TWODIGITYEAR:
|
||||||
|
oldyear = date.wYear;
|
||||||
date.wYear = date.wYear - (date.wYear%100) + val;
|
date.wYear = date.wYear - (date.wYear%100) + val;
|
||||||
|
|
||||||
|
if (DATETIME_IsDateInValidRange(infoPtr, &date))
|
||||||
clamp_day = 1;
|
clamp_day = 1;
|
||||||
|
else
|
||||||
|
date.wYear = oldyear;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case INVALIDFULLYEAR:
|
case INVALIDFULLYEAR:
|
||||||
case FULLYEAR:
|
case FULLYEAR:
|
||||||
|
oldyear = date.wYear;
|
||||||
date.wYear = val;
|
date.wYear = val;
|
||||||
|
|
||||||
|
if (DATETIME_IsDateInValidRange(infoPtr, &date))
|
||||||
clamp_day = 1;
|
clamp_day = 1;
|
||||||
|
else
|
||||||
|
date.wYear = oldyear;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case ONEDIGITMONTH:
|
case ONEDIGITMONTH:
|
||||||
case TWODIGITMONTH:
|
case TWODIGITMONTH:
|
||||||
|
|
Loading…
Reference in New Issue