From e1c38bf70c9bb563dbe7771c8713a94fd9e99836 Mon Sep 17 00:00:00 2001 From: Matti Tahvonen Date: Fri, 27 Sep 2013 15:07:48 +0300 Subject: Avoid obsolete calendar panel renderings to avoid various NPEs. (#12504,#12667) Change-Id: Ie0a9a8d9913116520b766062ebabdb771a76d1b6 --- .../src/com/vaadin/client/ui/VCalendarPanel.java | 24 +++++++++++++--------- .../ui/datefield/PopupDateFieldConnector.java | 9 ++++---- 2 files changed, 18 insertions(+), 15 deletions(-) (limited to 'client') diff --git a/client/src/com/vaadin/client/ui/VCalendarPanel.java b/client/src/com/vaadin/client/ui/VCalendarPanel.java index 1f40298760..58e0448b5f 100644 --- a/client/src/com/vaadin/client/ui/VCalendarPanel.java +++ b/client/src/com/vaadin/client/ui/VCalendarPanel.java @@ -2215,11 +2215,13 @@ public class VCalendarPanel extends FocusableFlexTable implements * - the allowed range's start date */ public void setRangeStart(Date rangeStart) { - this.rangeStart = rangeStart; - if (initialRenderDone) { - // Dynamic updates to the range needs to render the calendar to - // update the element stylenames - renderCalendar(); + if (this.rangeStart != rangeStart) { + this.rangeStart = rangeStart; + if (initialRenderDone) { + // Dynamic updates to the range needs to render the calendar to + // update the element stylenames + renderCalendar(); + } } } @@ -2232,11 +2234,13 @@ public class VCalendarPanel extends FocusableFlexTable implements * - the allowed range's end date */ public void setRangeEnd(Date rangeEnd) { - this.rangeEnd = rangeEnd; - if (initialRenderDone) { - // Dynamic updates to the range needs to render the calendar to - // update the element stylenames - renderCalendar(); + if (this.rangeEnd != rangeEnd) { + this.rangeEnd = rangeEnd; + if (initialRenderDone) { + // Dynamic updates to the range needs to render the calendar to + // update the element stylenames + renderCalendar(); + } } } } diff --git a/client/src/com/vaadin/client/ui/datefield/PopupDateFieldConnector.java b/client/src/com/vaadin/client/ui/datefield/PopupDateFieldConnector.java index 627478ebe5..f018caefa5 100644 --- a/client/src/com/vaadin/client/ui/datefield/PopupDateFieldConnector.java +++ b/client/src/com/vaadin/client/ui/datefield/PopupDateFieldConnector.java @@ -77,9 +77,6 @@ public class PopupDateFieldConnector extends TextualDateConnector { String oldLocale = getWidget().getCurrentLocale(); - boolean lastReadOnlyState = getWidget().isReadonly(); - boolean lastEnabledState = getWidget().isEnabled(); - getWidget().parsable = uidl.getBooleanAttribute("parsable"); super.updateFromUIDL(uidl, client); @@ -92,7 +89,8 @@ public class PopupDateFieldConnector extends TextualDateConnector { .getCurrentResolution()) { getWidget().calendar.setResolution(getWidget() .getCurrentResolution()); - if (getWidget().calendar.getDate() != null) { + if (getWidget().calendar.getDate() != null + && getWidget().getCurrentDate() != null) { getWidget().calendar.setDate((Date) getWidget() .getCurrentDate().clone()); // force re-render when changing resolution only @@ -101,7 +99,7 @@ public class PopupDateFieldConnector extends TextualDateConnector { } // Force re-render of calendar if locale has changed (#12153) - if (getWidget().getCurrentLocale() != oldLocale) { + if (!getWidget().getCurrentLocale().equals(oldLocale)) { getWidget().calendar.renderCalendar(); } @@ -113,6 +111,7 @@ public class PopupDateFieldConnector extends TextualDateConnector { .setFocusChangeListener(new FocusChangeListener() { @Override public void focusChanged(Date date) { + getWidget().updateValue(date); getWidget().buildDate(); Date date2 = getWidget().calendar.getDate(); -- cgit v1.2.3