]> source.dussan.org Git - vaadin-framework.git/commitdiff
Allow detaching Extension once (#9282)
authorLeif Åstrand <leif@vaadin.com>
Fri, 10 Aug 2012 08:30:24 +0000 (11:30 +0300)
committerLeif Åstrand <leif@vaadin.com>
Fri, 10 Aug 2012 08:30:24 +0000 (11:30 +0300)
src/com/vaadin/terminal/gwt/client/extensions/AbstractExtensionConnector.java

index bcefcf05cb6fa6c5f881753ab71405b035645fab..408f03f6cb874ff58ec7a107de77a582c3a300bb 100644 (file)
@@ -8,17 +8,26 @@ import com.vaadin.terminal.gwt.client.ServerConnector;
 import com.vaadin.terminal.gwt.client.ui.AbstractConnector;
 
 public abstract class AbstractExtensionConnector extends AbstractConnector {
+    boolean hasBeenAttached = false;
+
     @Override
     public void setParent(ServerConnector parent) {
         ServerConnector oldParent = getParent();
-        if (oldParent != null && oldParent != parent) {
+        if (oldParent == parent) {
+            // Nothing to do
+            return;
+        }
+        if (hasBeenAttached && parent != null) {
             throw new IllegalStateException(
                     "An extension can not be moved from one parent to another.");
         }
 
         super.setParent(parent);
 
-        extend(parent);
+        if (parent != null) {
+            extend(parent);
+            hasBeenAttached = true;
+        }
     }
 
     protected void extend(ServerConnector target) {