From 3d74bb1f8298c32ab3a837ca0af8bafd5db5caeb Mon Sep 17 00:00:00 2001 From: Artur Signell Date: Thu, 26 May 2011 13:24:23 +0000 Subject: [PATCH] #7058 Ensure shadow is always removed when the overlay is removed svn changeset:19098/svn branch:6.6 --- .../terminal/gwt/client/ui/VOverlay.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/com/vaadin/terminal/gwt/client/ui/VOverlay.java b/src/com/vaadin/terminal/gwt/client/ui/VOverlay.java index aba7ccf217..f9e8aa1f6b 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VOverlay.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VOverlay.java @@ -92,15 +92,20 @@ public class VOverlay extends PopupPanel { addCloseHandler(new CloseHandler() { public void onClose(CloseEvent event) { - if (shadow.getParentElement() != null) { - shadow.getParentElement().removeChild(shadow); - } + removeShadowIfPresent(); } }); } adjustZIndex(); } + private void removeShadowIfPresent() { + if (shadow != null && shadow.getParentElement() != null) { + shadow.getParentElement().removeChild(shadow); + } + + } + private void adjustZIndex() { setZIndex(Z_INDEX); } @@ -179,6 +184,14 @@ public class VOverlay extends PopupPanel { Util.runIE7ZeroSizedBodyFix(); } + @Override + protected void onDetach() { + super.onDetach(); + + // Always ensure shadow is removed when the overlay is removed. + removeShadowIfPresent(); + } + @Override public void setVisible(boolean visible) { super.setVisible(visible); -- 2.39.5