[Commits] r2553 - in core/trunk/geoext: lib/GeoExt/plugins tests/lib/GeoExt/plugins

commits at geoext.org commits at geoext.org
Tue Jan 11 17:29:55 CET 2011


Author: elemoine
Date: 2011-01-11 17:29:55 +0100 (Tue, 11 Jan 2011)
New Revision: 2553

Modified:
   core/trunk/geoext/lib/GeoExt/plugins/PrintProviderField.js
   core/trunk/geoext/tests/lib/GeoExt/plugins/PrintProviderField.html
Log:
PrintProviderField.onBeforeDestroy may cause an error, r=ahocevar (closes #392)

Modified: core/trunk/geoext/lib/GeoExt/plugins/PrintProviderField.js
===================================================================
--- core/trunk/geoext/lib/GeoExt/plugins/PrintProviderField.js	2011-01-11 14:49:51 UTC (rev 2552)
+++ core/trunk/geoext/lib/GeoExt/plugins/PrintProviderField.js	2011-01-11 16:29:55 UTC (rev 2553)
@@ -172,13 +172,14 @@
     /** private: method[onBeforeDestroy]
      */
     onBeforeDestroy: function() {
-        this.target.un("beforedestroy", this.onBeforeDestroy, this);
-        this.target.un("render", this.onRender, this);
-        this.target.un("select", this.onFieldChange, this);
-        this.target.un("valid", this.onFieldChange, this);
-        this.printProvider.un("layoutchange", this.onProviderChange, this);
-        this.printProvider.un("dpichange", this.onProviderChange,
-            this);
+        var target = this.target;
+        target.un("beforedestroy", this.onBeforeDestroy, this);
+        target.un("render", this.onRender, this);
+        target.un("select", this.onFieldChange, this);
+        target.un("valid", this.onFieldChange, this);
+        var printProvider = this.printProvider || target.ownerCt.printProvider;
+        printProvider.un("layoutchange", this.onProviderChange, this);
+        printProvider.un("dpichange", this.onProviderChange, this);
     }
 
 });

Modified: core/trunk/geoext/tests/lib/GeoExt/plugins/PrintProviderField.html
===================================================================
--- core/trunk/geoext/tests/lib/GeoExt/plugins/PrintProviderField.html	2011-01-11 14:49:51 UTC (rev 2552)
+++ core/trunk/geoext/tests/lib/GeoExt/plugins/PrintProviderField.html	2011-01-11 16:29:55 UTC (rev 2553)
@@ -54,14 +54,50 @@
             });
 
             printProvider.fireEvent("layoutchange", "foo");
-            t.eq(log.onProviderChange, "foo", "onProviderChange called on layoutchange.");
+            t.eq(log.onProviderChange, "foo",
+                 "[destroy] onProviderChange called on layoutchange.");
 
             delete log.onProviderChange;
             field.destroy();
             printProvider.fireEvent("layoutchange", "bar");
-            t.eq(log.onProviderChange, undefined, "onProviderChange not called after field is destroyed.");
+            t.eq(log.onProviderChange, undefined,
+                 "[destroy] onProviderChange not called after field is destroyed.");
         }
+
+        function test_destroy2(t){
+            t.plan(2);
             
+            var log = {};
+
+            var printProvider = new GeoExt.data.PrintProvider({
+                capabilities: printCapabilities
+            });
+            var plugin = new GeoExt.plugins.PrintProviderField({
+                onProviderChange: function(arg) {
+                    log.onProviderChange = arg;
+                }
+            });
+            var field = new Ext.form.Field({
+                store: printProvider.layouts,
+                plugins: plugin,
+                renderTo: document.body,
+                // add a fake ownerCt to the field
+                ownerCt: {printProvider: printProvider}
+            });
+
+            plugin.init(field);
+
+            printProvider.fireEvent("layoutchange", "foo");
+            t.eq(log.onProviderChange, "foo",
+                 "[destroy2] onProviderChange called on layoutchange.");
+
+            delete log.onProviderChange;
+            field.destroy();
+            printProvider.fireEvent("layoutchange", "bar");
+            t.eq(log.onProviderChange, undefined,
+                 "[destroy2] onProviderChange not called after field is destroyed.");
+        }
+
         function test_render(t) {
             t.plan(2);
 



More information about the Commits mailing list