diff options
Diffstat (limited to 'client')
-rw-r--r-- | client/src/com/vaadin/client/ui/VPopupCalendar.java | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/client/src/com/vaadin/client/ui/VPopupCalendar.java b/client/src/com/vaadin/client/ui/VPopupCalendar.java index cf88ceb8d6..bbf654980b 100644 --- a/client/src/com/vaadin/client/ui/VPopupCalendar.java +++ b/client/src/com/vaadin/client/ui/VPopupCalendar.java @@ -269,24 +269,29 @@ public class VPopupCalendar extends VTextualDate implements Field, */ public void setTextFieldEnabled(boolean textFieldEnabled) { this.textFieldEnabled = textFieldEnabled; + updateTextFieldEnabled(); + } + + protected void updateTextFieldEnabled() { + boolean reallyEnabled = isEnabled() && isTextFieldEnabled(); // IE has a non input disabled themeing that can not be overridden so we // must fake the functionality using readonly and unselectable if (BrowserInfo.get().isIE()) { - if (!textFieldEnabled) { + if (!reallyEnabled) { text.getElement().setAttribute("unselectable", "on"); text.getElement().setAttribute("readonly", ""); text.setTabIndex(-2); - } else if (textFieldEnabled + } else if (reallyEnabled && text.getElement().hasAttribute("unselectable")) { text.getElement().removeAttribute("unselectable"); text.getElement().removeAttribute("readonly"); text.setTabIndex(0); } } else { - text.setEnabled(textFieldEnabled); + text.setEnabled(reallyEnabled); } - if (textFieldEnabled) { + if (reallyEnabled) { calendarToggle.setTabIndex(-1); Roles.getButtonRole().setAriaHiddenState( calendarToggle.getElement(), true); @@ -466,7 +471,7 @@ public class VPopupCalendar extends VTextualDate implements Field, @Override public void setEnabled(boolean enabled) { super.setEnabled(enabled); - + updateTextFieldEnabled(); calendarToggle.setEnabled(enabled); Roles.getButtonRole().setAriaDisabledState(calendarToggle.getElement(), !enabled); @@ -500,9 +505,7 @@ public class VPopupCalendar extends VTextualDate implements Field, if (!parsable) { setText(previousValue); } - - // superclass sets the text field independently when building date - setTextFieldEnabled(isEnabled() && isTextFieldEnabled()); + updateTextFieldEnabled(); } /** |