summaryrefslogtreecommitdiffstats
path: root/client
diff options
context:
space:
mode:
authorMatti Tahvonen <matti@vaadin.com>2013-09-27 15:07:48 +0300
committerVaadin Code Review <review@vaadin.com>2013-10-08 14:41:03 +0000
commite1c38bf70c9bb563dbe7771c8713a94fd9e99836 (patch)
tree8014701bdd1c01993d97b974eb11e7f8f7efc9a4 /client
parent6779857911a4eeb2bbfe0720629b058facc40f4d (diff)
downloadvaadin-framework-e1c38bf70c9bb563dbe7771c8713a94fd9e99836.tar.gz
vaadin-framework-e1c38bf70c9bb563dbe7771c8713a94fd9e99836.zip
Avoid obsolete calendar panel renderings to avoid various NPEs.
(#12504,#12667) Change-Id: Ie0a9a8d9913116520b766062ebabdb771a76d1b6
Diffstat (limited to 'client')
-rw-r--r--client/src/com/vaadin/client/ui/VCalendarPanel.java24
-rw-r--r--client/src/com/vaadin/client/ui/datefield/PopupDateFieldConnector.java9
2 files changed, 18 insertions, 15 deletions
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();