diff -r e0d6e9bd3ca7 -r bf7ee68962da javauis/lcdui_qt/src/javax/microedition/lcdui/DateField.java --- a/javauis/lcdui_qt/src/javax/microedition/lcdui/DateField.java Tue Jul 06 14:10:26 2010 +0300 +++ b/javauis/lcdui_qt/src/javax/microedition/lcdui/DateField.java Wed Aug 18 09:43:15 2010 +0300 @@ -25,7 +25,6 @@ */ public class DateField extends Item { - /** * Input mode that displays only date. */ @@ -41,6 +40,13 @@ */ public static final int DATE_TIME = 3; + /** + * If DateField is changed, reasons for Re-layouting. + */ + static final int UPDATE_DATE = UPDATE_ITEM_MAX << 1; + static final int UPDATE_INPUTMODE = UPDATE_ITEM_MAX << 2; + + private Date date; private int mode; @@ -100,8 +106,9 @@ calendar.set(Calendar.HOUR_OF_DAY,0); calendar.set(Calendar.MINUTE,0); calendar.set(Calendar.SECOND,0); + calendar.set(Calendar.MILLISECOND,0); } - return calendar.getTime();//date; + return calendar.getTime(); } /** @@ -112,7 +119,7 @@ public void setDate(Date newDate) { internalSetDate(newDate); - updateParent(UPDATE_CONTENT); + updateParent((newDate == null ? UPDATE_DATE | UPDATE_SIZE_CHANGED : UPDATE_DATE)); } /** @@ -142,8 +149,12 @@ throw new IllegalArgumentException( MsgRepository.DATEFIELD_EXCEPTION_INVALID_MODE); } - mode = inputMode; - updateParent(UPDATE_SIZE_CHANGED); + + if(getInputMode() != inputMode) + { + mode = inputMode; + updateParent(UPDATE_INPUTMODE | UPDATE_SIZE_CHANGED); + } } /** @@ -207,15 +218,21 @@ } else { + calendar.set(Calendar.SECOND,0); + calendar.set(Calendar.MILLISECOND,0); date = calendar.getTime(); } break; case DATE: calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND,0); + calendar.set(Calendar.MILLISECOND,0); date = calendar.getTime(); break; case DATE_TIME: + calendar.set(Calendar.SECOND,0); + calendar.set(Calendar.MILLISECOND,0); date = calendar.getTime(); break; default: