Simplify click handling in the drag handler - this makes the sequence down, move, up a complete drag (see #982).

git-svn-id: http://svn.openlayers.org/trunk/openlayers@4354 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
Tim Schaub
2007-09-17 19:25:26 +00:00
parent 2337f9f2d8
commit 91fab27e7d
2 changed files with 21 additions and 25 deletions

View File

@@ -253,13 +253,8 @@ OpenLayers.Handler.Drag = OpenLayers.Class(OpenLayers.Handler, {
* {Boolean} Let the event propagate. * {Boolean} Let the event propagate.
*/ */
click: function (evt) { click: function (evt) {
// throw away the first left click event that happens after a mouse up // let the click event propagate only if the mouse moved
if (this.dragging) { return (this.start == this.last);
this.dragging = false;
return false;
}
this.started = false;
return true;
}, },
/** /**

View File

@@ -87,7 +87,7 @@
} }
function test_Handler_Drag_callbacks(t) { function test_Handler_Drag_callbacks(t) {
t.plan(30); t.plan(27);
var map = new OpenLayers.Map('map', {controls: []}); var map = new OpenLayers.Map('map', {controls: []});
@@ -227,24 +227,25 @@
t.ok(!handler.dragging, "mouseout sets dragging flag to false"); t.ok(!handler.dragging, "mouseout sets dragging flag to false");
OpenLayers.Util.mouseLeft = oldMouseLeft; OpenLayers.Util.mouseLeft = oldMouseLeft;
// test click // test click with the click.html example - the click method on the
handler.dragging = true; // drag handler returns (handler.start == handler.last), stopping
handler.started = "foo"; // propagation of the click event if the mouse moved during a drag.
map.events.triggerEvent("click", null);
t.ok(!handler.dragging,
"click while dragging sets dragging to false");
t.eq(handler.started, "foo",
"click while dragging doesn't mess with started");
handler.dragging = null;
handler.started = true;
map.events.triggerEvent("click", null);
t.ok(handler.dragging == null,
"click while not dragging doesn't mess with dragging flag");
t.ok(!handler.started,
"click while not dragging sets started to false");
// regression tests will assure that the drag handler doesn't mess
// with anything else on a click
function getProperties(obj) {
var props = {};
for(key in obj) {
if(typeof obj[key] != "function" && typeof obj[key] != "object") {
props[key] = obj[key];
}
}
return props;
}
var before = getProperties(handler);
map.events.triggerEvent("click", null);
var after = getProperties(handler);
t.eq(before, after, "click doesn't mess with handler");
} }