From 7cbe6fa1aebeab3408fcb8376cd7b48d74d4bed0 Mon Sep 17 00:00:00 2001 From: Jonatan Kronqvist Date: Tue, 14 Sep 2010 10:36:25 +0000 Subject: [PATCH] Fix for #5594 svn changeset:14896/svn branch:6.4 --- .../terminal/gwt/client/ui/VCalendarPanel.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/com/vaadin/terminal/gwt/client/ui/VCalendarPanel.java b/src/com/vaadin/terminal/gwt/client/ui/VCalendarPanel.java index 0ca28481d1..156e6ff5ef 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VCalendarPanel.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VCalendarPanel.java @@ -262,17 +262,19 @@ public class VCalendarPanel extends FocusableFlexTable implements private void selectFocused() { if (focusedDate != null) { int changedFields = 0; - if (value.getYear() != focusedDate.getYear()) { - value.setYear(focusedDate.getYear()); - changedFields += VDateField.RESOLUTION_YEAR; + // #5594 First set the day, to make sure that moving from the 31 on + // to a month with 30 days to spill over to the wrong month. + if (value.getDate() != focusedDate.getDate()) { + value.setDate(focusedDate.getDate()); + changedFields += VDateField.RESOLUTION_DAY; } if (value.getMonth() != focusedDate.getMonth()) { value.setMonth(focusedDate.getMonth()); changedFields += VDateField.RESOLUTION_MONTH; } - if (value.getDate() != focusedDate.getDate()) { - value.setDate(focusedDate.getDate()); - changedFields += VDateField.RESOLUTION_DAY; + if (value.getYear() != focusedDate.getYear()) { + value.setYear(focusedDate.getYear()); + changedFields += VDateField.RESOLUTION_YEAR; } selectDate(focusedDate.getDate()); -- 2.39.5