No subject


Tue Mar 27 15:02:52 EDT 2007


should do the same by calling removeControl()". (Closes #1009)


Modified: trunk/openlayers/lib/OpenLayers/Control.js
===================================================================
--- trunk/openlayers/lib/OpenLayers/Control.js	2007-09-30 16:24:02 UTC (rev 4675)
+++ trunk/openlayers/lib/OpenLayers/Control.js	2007-09-30 16:25:43 UTC (rev 4676)
@@ -130,8 +130,12 @@
         // eliminate circular references
         if (this.handler) {
             this.handler.destroy();
-        }    
-        this.map = null;
+            this.handler = null;
+        }
+        if (this.map) {
+            this.map.removeControl(this);
+            this.map = null;
+        }
     },
 
     /** 

Modified: trunk/openlayers/lib/OpenLayers/Map.js
===================================================================
--- trunk/openlayers/lib/OpenLayers/Map.js	2007-09-30 16:24:02 UTC (rev 4675)
+++ trunk/openlayers/lib/OpenLayers/Map.js	2007-09-30 16:25:43 UTC (rev 4676)
@@ -797,8 +797,8 @@
     removeControl: function (control) {
         //make sure control is non-null and actually part of our map
         if ( (control) && (control == this.getControl(control.id)) ) {
-            if (!control.outsideViewport) {
-                this.viewPortDiv.removeChild(control.div)
+            if (!control.outsideViewport && control.div) {
+                this.viewPortDiv.removeChild(control.div);
             }
             OpenLayers.Util.removeItem(this.controls, control);
         }

Modified: trunk/openlayers/tests/test_Control.html
===================================================================
--- trunk/openlayers/tests/test_Control.html	2007-09-30 16:24:02 UTC (rev 4675)
+++ trunk/openlayers/tests/test_Control.html	2007-09-30 16:25:43 UTC (rev 4676)
@@ -2,14 +2,40 @@
 <head>
   <script src="../lib/OpenLayers.js"></script>
   <script type="text/javascript">
-    var map; 
-    function test_01_Control_constructor (t) {
-        t.plan( 1 );
+    function test_Control_constructor(t) {
+        t.plan(2);
     
-        control = new OpenLayers.Control();
-        t.ok( control instanceof OpenLayers.Control, "new OpenLayers.Control returns object" );
+        var control = new OpenLayers.Control();
+
+        t.ok(control instanceof OpenLayers.Control, "new OpenLayers.Control returns object");
+        t.eq(control.displayClass, "olControl", "displayClass set correctly");
     }
 
+    function test_Control_addControl(t) {
+        t.plan(2);
+    
+        var map = new OpenLayers.Map('map');
+        var control = new OpenLayers.Control();
+        map.addControl(control);
+
+        t.ok(control.map === map, "Control.map is set to the map object" );
+        t.ok(map.controls[map.controls.length - 1] === control, "map.controls contains control");
+    }
+
+    function test_Control_destroy(t) {
+        t.plan(3);
+    
+        var map = new OpenLayers.Map('map');
+        var control = new OpenLayers.Control();
+        map.addControl(control);
+
+        control.destroy();
+        t.ok(map.controls[map.controls.length - 1] != control, "map.controls doesn't contains control");
+
+        t.ok(control.map == null, "Control.map is null");
+        t.ok(control.handler == null, "Control.handler is null");
+    }
+
   </script>
 </head>
 <body>



More information about the Commits mailing list