diff --git a/lib/OpenLayers/Control/DragFeature.js b/lib/OpenLayers/Control/DragFeature.js index 9daf5b3b54..2f470370df 100644 --- a/lib/OpenLayers/Control/DragFeature.js +++ b/lib/OpenLayers/Control/DragFeature.js @@ -237,6 +237,7 @@ OpenLayers.Control.DragFeature = OpenLayers.Class(OpenLayers.Control, { */ doneDragging: function(pixel) { this.onComplete(this.feature, pixel); + this.feature = null; }, /** @@ -252,6 +253,7 @@ OpenLayers.Control.DragFeature = OpenLayers.Class(OpenLayers.Control, { this.dragHandler.deactivate(); // TBD replace with CSS classes this.map.div.style.cursor = "default"; + this.feature = null; } else { if(this.feature.id == feature.id) { this.over = false; diff --git a/tests/Control/test_DragFeature.html b/tests/Control/test_DragFeature.html index 59e64f6982..9884071c71 100644 --- a/tests/Control/test_DragFeature.html +++ b/tests/Control/test_DragFeature.html @@ -165,6 +165,35 @@ } + function test_Control_DragFeature_out(t) { + t.plan(2); + var map = new OpenLayers.Map("map"); + var layer = new OpenLayers.Layer.Vector(); + map.addLayer(layer); + var control = new OpenLayers.Control.DragFeature(layer); + map.addControl(control); + + control.activate(); + + + // simulate a mouseover on a feature + layer.getFeatureFromEvent = function() { + return "foo"; + }; + map.events.triggerEvent("mousemove"); + t.eq(control.feature, "foo", + "feature is set on mouse over"); + + // simulate a mouseout on a feature + layer.getFeatureFromEvent = function() { + return null; + }; + map.events.triggerEvent("mousemove"); + t.ok(control.feature == null, + "feature is set to null on mouse out"); + + } +