]> source.dussan.org Git - vaadin-framework.git/commitdiff
Actually we still need the VOverlay special case for situations where an overlay...
authorJohannes Dahlström <johannesd@vaadin.com>
Thu, 26 Jul 2012 13:08:05 +0000 (16:08 +0300)
committerJohannes Dahlström <johannesd@vaadin.com>
Thu, 26 Jul 2012 13:08:05 +0000 (16:08 +0300)
src/com/vaadin/terminal/gwt/client/Util.java

index 37a0b84094177414cf2ce7e186685b2ba95dd981..9b085b30679a39f1b73adc01c004c9d207577c77 100644 (file)
@@ -29,6 +29,7 @@ import com.google.gwt.user.client.ui.RootPanel;
 import com.google.gwt.user.client.ui.Widget;
 import com.vaadin.terminal.gwt.client.RenderInformation.FloatSize;
 import com.vaadin.terminal.gwt.client.communication.MethodInvocation;
+import com.vaadin.terminal.gwt.client.ui.VOverlay;
 
 public class Util {
 
@@ -648,6 +649,7 @@ public class Util {
         Element rootElement = parent.getElement();
 
         while (browseElement != null && browseElement != rootElement) {
+
             ComponentConnector connector = ConnectorMap.get(client)
                     .getConnector(browseElement);
 
@@ -674,7 +676,15 @@ public class Util {
             browseElement = (Element) browseElement.getParentElement();
         }
 
-        return null;
+        // No connector found, element is possibly inside a VOverlay
+        // If the overlay has an owner, try to find the owner's connector
+        VOverlay overlay = findWidget(element, VOverlay.class);
+        if (overlay != null && overlay.getOwner() != null) {
+            return getConnectorForElement(client, RootPanel.get(), overlay
+                    .getOwner().getElement());
+        } else {
+            return null;
+        }
     }
 
     /**