[OpenLayers-Commits] r4220 - in trunk/openlayers: lib/OpenLayers/Layer tests/Layer

commits at openlayers.org commits at openlayers.org
Tue Sep 11 16:19:38 EDT 2007


Author: crschmidt
Date: 2007-09-11 16:19:35 -0400 (Tue, 11 Sep 2007)
New Revision: 4220

Modified:
   trunk/openlayers/lib/OpenLayers/Layer/Vector.js
   trunk/openlayers/tests/Layer/test_Vector.html
Log:
Fix for getFeatureFromEvent method on destroyed layer. (Closes #761) Review
by elem (yay)


Modified: trunk/openlayers/lib/OpenLayers/Layer/Vector.js
===================================================================
--- trunk/openlayers/lib/OpenLayers/Layer/Vector.js	2007-09-11 15:18:42 UTC (rev 4219)
+++ trunk/openlayers/lib/OpenLayers/Layer/Vector.js	2007-09-11 20:19:35 UTC (rev 4220)
@@ -361,6 +361,10 @@
      * {<OpenLayers.Feature.Vector>} A feature if one was under the event.
      */
     getFeatureFromEvent: function(evt) {
+        if (!this.renderer) {
+            OpenLayers.Console.error("getFeatureFromEvent called on layer with no renderer. This usually means you destroyed a layer, but not some handler which is associated with it."); 
+            return null;
+        }    
         var featureId = this.renderer.getFeatureIdFromEvent(evt);
         return this.getFeatureById(featureId);
     },

Modified: trunk/openlayers/tests/Layer/test_Vector.html
===================================================================
--- trunk/openlayers/tests/Layer/test_Vector.html	2007-09-11 15:18:42 UTC (rev 4219)
+++ trunk/openlayers/tests/Layer/test_Vector.html	2007-09-11 20:19:35 UTC (rev 4220)
@@ -148,12 +148,13 @@
     }
 
     function test_99_Layer_Vector_destroy (t) {
-        t.plan(1);    
+        t.plan(2);    
         layer = new OpenLayers.Layer.Vector(name);
         var map = new OpenLayers.Map('map');
         map.addLayer(layer);
         layer.destroy();
         t.eq(layer.map, null, "layer.map is null after destroy");
+        t.eq(layer.getFeatureFromEvent({'target':'map'}), null, "getFeatureIdFromEvent doesn't cause an error when called on layer which has been destroyed.");
     }
 
     function test_Layer_Vector_externalGraphic(t) {



More information about the Commits mailing list