From 7b5a4c0f3c7103d263b8b87161fb98add2f67afb Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Tue, 14 Aug 2007 14:53:39 +0000 Subject: [PATCH] #904 - handlers deactivate themselves on destroy git-svn-id: http://svn.openlayers.org/trunk/openlayers@3901 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf --- lib/OpenLayers/Handler.js | 5 ++++- tests/test_Handler.html | 8 +++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/OpenLayers/Handler.js b/lib/OpenLayers/Handler.js index ac3f5365b6..e34f0dd3ca 100644 --- a/lib/OpenLayers/Handler.js +++ b/lib/OpenLayers/Handler.js @@ -214,8 +214,10 @@ OpenLayers.Handler = OpenLayers.Class({ * Deconstruct the handler. */ destroy: function () { + // unregister event listeners + this.deactivate(); // eliminate circular references - this.control = this.map = null; + this.control = this.map = null; }, CLASS_NAME: "OpenLayers.Handler" @@ -245,3 +247,4 @@ OpenLayers.Handler.MOD_CTRL = 2; */ OpenLayers.Handler.MOD_ALT = 4; + diff --git a/tests/test_Handler.html b/tests/test_Handler.html index 04c76005e1..3f3efd808e 100644 --- a/tests/test_Handler.html +++ b/tests/test_Handler.html @@ -104,11 +104,15 @@ } function test_Handler_destroy(t) { - t.plan(4); + t.plan(5); var map = new OpenLayers.Map('map'); var control = new OpenLayers.Control(); map.addControl(control); var handler = new OpenLayers.Handler(control); + var deactivated = false; + handler.deactivate = function() { + deactivated = true; + }; t.ok(handler.control, "handler has a control prior to destroy"); t.ok(handler.map, @@ -118,6 +122,8 @@ "hanlder.control is null after destroy"); t.eq(handler.map, null, "handler.map is null after destroy"); + t.ok(deactivated, + "handler.deactivate is called by destroy"); } function test_Handler_checkModifiers(t) {