diff options
Diffstat (limited to 'src/com/itmill/toolkit/ui/AbstractComponentContainer.java')
-rw-r--r-- | src/com/itmill/toolkit/ui/AbstractComponentContainer.java | 34 |
1 files changed, 19 insertions, 15 deletions
diff --git a/src/com/itmill/toolkit/ui/AbstractComponentContainer.java b/src/com/itmill/toolkit/ui/AbstractComponentContainer.java index 56febe3815..d6c100e8cd 100644 --- a/src/com/itmill/toolkit/ui/AbstractComponentContainer.java +++ b/src/com/itmill/toolkit/ui/AbstractComponentContainer.java @@ -208,25 +208,29 @@ public abstract class AbstractComponentContainer extends AbstractComponent public void setEnabled(boolean enabled) { super.setEnabled(enabled); - - updateComponentDisabledState(!enabled); - } - - public void setDisabledByContainer(boolean disabledByContainer) { - super.setDisabledByContainer(disabledByContainer); - - updateComponentDisabledState(disabledByContainer); + if (getParent() != null && !getParent().isEnabled()) { + // some ancestor still disabled, don't update children + return; + } else { + requestRepaintAll(); + } } - private void updateComponentDisabledState(boolean disabled) { - // Update the disabledByContainer state for all subcomponents - for (Iterator i = getComponentIterator(); i.hasNext();) { - Component c = (Component) i.next(); - if (c instanceof AbstractComponent) { - ((AbstractComponent) c).setDisabledByContainer(disabled); + public void requestRepaintAll() { + requestRepaint(); + for (Iterator childIterator = getComponentIterator(); childIterator + .hasNext();) { + Component c = (Component) childIterator.next(); + if (c instanceof Form) { + // Form has children in layout, but is not ComponentContainer + c.requestRepaint(); + ((Form) c).getLayout().requestRepaintAll(); + } else if (c instanceof ComponentContainer) { + ((ComponentContainer) c).requestRepaintAll(); + } else { + c.requestRepaint(); } } - } }
\ No newline at end of file |