[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