You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by si...@apache.org on 2007/02/12 23:22:48 UTC

svn commit: r506703 - in /cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms: event/WidgetEventMulticaster.java formmodel/tree/TreeModelHelper.java

Author: simoneg
Date: Mon Feb 12 14:22:48 2007
New Revision: 506703

URL: http://svn.apache.org/viewvc?view=rev&rev=506703
Log:
Fixed an error with listener removal

Modified:
    cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/event/WidgetEventMulticaster.java
    cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/tree/TreeModelHelper.java

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/event/WidgetEventMulticaster.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/event/WidgetEventMulticaster.java?view=diff&rev=506703&r1=506702&r2=506703
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/event/WidgetEventMulticaster.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/event/WidgetEventMulticaster.java Mon Feb 12 14:22:48 2007
@@ -134,4 +134,15 @@
         return (RepeaterListener)removeInternal(l, oldl);
     }
     
+    protected EventListener remove(EventListener oldl) {
+        if (oldl == a)  return b;
+        if (oldl == b)  return a;
+        EventListener a2 = removeInternal(a, oldl);
+        EventListener b2 = removeInternal(b, oldl);
+        if (a2 == a && b2 == b) {
+            return this;        // it's not here
+        }
+        return addInternal(a2, b2);
+    }
+    
 }

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/tree/TreeModelHelper.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/tree/TreeModelHelper.java?view=diff&rev=506703&r1=506702&r2=506703
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/tree/TreeModelHelper.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/tree/TreeModelHelper.java Mon Feb 12 14:22:48 2007
@@ -16,6 +16,7 @@
  */
 package org.apache.cocoon.forms.formmodel.tree;
 
+import java.awt.AWTEventMulticaster;
 import java.util.EventListener;
 
 import org.apache.cocoon.forms.event.WidgetEventMulticaster;
@@ -78,13 +79,24 @@
             if (b == null)  return a;
             return new EventMulticaster(a, b);
         }
-        
+                
         public static TreeModelListener add(TreeModelListener a, TreeModelListener b) {
             return (TreeModelListener)addInternal(a, b);
         }
         
         public static TreeModelListener remove(TreeModelListener l, TreeModelListener oldl) {
             return (TreeModelListener)removeInternal(l, oldl);
+        }
+
+        protected EventListener remove(EventListener oldl) {
+            if (oldl == a)  return b;
+            if (oldl == b)  return a;
+            EventListener a2 = removeInternal(a, oldl);
+            EventListener b2 = removeInternal(b, oldl);
+            if (a2 == a && b2 == b) {
+                return this;        // it's not here
+            }
+            return addInternal(a2, b2);
         }
         
         public void treeStructureChanged(TreeModelEvent event) {