From a3655cd66fb0c4a77be4073bacc8fd201c86ffb9 Mon Sep 17 00:00:00 2001 From: ahocevar Date: Sat, 9 Apr 2011 12:22:52 +0000 Subject: [PATCH] Only start dragging when we are over a feature. r=tschaub (closes #3252) git-svn-id: http://svn.openlayers.org/trunk/openlayers@11888 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf --- lib/OpenLayers/Control/DragFeature.js | 8 +++++--- tests/Control/DragFeature.html | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/lib/OpenLayers/Control/DragFeature.js b/lib/OpenLayers/Control/DragFeature.js index 5aea2f95e7..ff8084d336 100644 --- a/lib/OpenLayers/Control/DragFeature.js +++ b/lib/OpenLayers/Control/DragFeature.js @@ -171,7 +171,7 @@ OpenLayers.Control.DragFeature = OpenLayers.Class(OpenLayers.Control, { * feature - {} */ clickFeature: function(feature) { - if (this.overFeature(feature)) { + if (!this.over && this.overFeature(feature)) { this.handlers.drag.dragstart(this.handlers.feature.evt); // to let the events propagate to the feature handler (click callback) this.handlers.drag.stopDown = false; @@ -186,8 +186,10 @@ OpenLayers.Control.DragFeature = OpenLayers.Class(OpenLayers.Control, { * feature - {} */ clickoutFeature: function(feature) { - this.outFeature(feature); - this.handlers.drag.stopDown = true; + if (this.over) { + this.outFeature(feature); + this.handlers.drag.stopDown = true; + } }, /** diff --git a/tests/Control/DragFeature.html b/tests/Control/DragFeature.html index 06f09b0db2..cfc3a631f4 100644 --- a/tests/Control/DragFeature.html +++ b/tests/Control/DragFeature.html @@ -357,6 +357,24 @@ "onLeave called with expected feature"); } + function test_Control_DragFeature_click(t) { + t.plan(1); + var map = new OpenLayers.Map("map"); + var layer = new OpenLayers.Layer.Vector(); + map.addLayer(layer); + var feature = new OpenLayers.Feature.Vector(); + feature.layer = layer; + var control = new OpenLayers.Control.DragFeature(layer); + map.addControl(control); + + control.activate(); + + control.overFeature(feature); + control.handlers.feature.evt = {which: 1}; + control.clickFeature(feature); + t.eq(control.handlers.drag.started, false, "click after over does not start drag handler"); + } +