From ffb36a03ad29fc947fd65e50eda75fcba5a88517 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Johannes=20Dahlstr=C3=B6m?= Date: Mon, 3 Sep 2012 15:13:11 +0000 Subject: [PATCH] Make clicking off-month days work correctly with an InlineDateField (#8931) svn changeset:24290/svn branch:6.8 --- .../terminal/gwt/client/ui/VCalendarPanel.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/com/vaadin/terminal/gwt/client/ui/VCalendarPanel.java b/src/com/vaadin/terminal/gwt/client/ui/VCalendarPanel.java index 845ac837f6..fc73443bb9 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VCalendarPanel.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VCalendarPanel.java @@ -118,8 +118,15 @@ public class VCalendarPanel extends FocusableFlexTable implements * .event.dom.client.ClickEvent) */ public void onClick(ClickEvent event) { - Day day = (Day) event.getSource(); - focusDay(day.getDate()); + Date newDate = ((Day) event.getSource()).getDate(); + if (newDate.getMonth() != displayedMonth.getMonth()) { + // If an off-month date was clicked, we must change the + // displayed month and re-render the calendar (#8931) + displayedMonth.setMonth(newDate.getMonth()); + displayedMonth.setYear(newDate.getYear()); + renderCalendar(); + } + focusDay(newDate); selectFocused(); onSubmit(); } @@ -386,8 +393,8 @@ public class VCalendarPanel extends FocusableFlexTable implements } final String monthName = needsMonth ? getDateTimeService().getMonth( - focusedDate.getMonth()) : ""; - final int year = focusedDate.getYear() + 1900; + displayedMonth.getMonth()) : ""; + final int year = displayedMonth.getYear() + 1900; getFlexCellFormatter().setStyleName(0, 2, VDateField.CLASSNAME + "-calendarpanel-month"); setHTML(0, 2, "