No click event at the end of a drag sequence.

This commit is contained in:
ahocevar
2012-06-23 14:18:02 +02:00
parent 3adf04f728
commit 43adc61b26
+19
View File
@@ -28,6 +28,14 @@ ol.event.Drag = function(target) {
*/ */
this.dragger_ = dragger; this.dragger_ = dragger;
// We want to swallow the click event that gets fired after dragging.
var stopClickRegistered = false;
function stopClick() {
target.unregister('click', stopClick, undefined, true);
stopClickRegistered = false;
return false;
}
dragger.defaultAction = function(x, y) {}; dragger.defaultAction = function(x, y) {};
dragger.addEventListener(goog.fx.Dragger.EventType.START, function(evt) { dragger.addEventListener(goog.fx.Dragger.EventType.START, function(evt) {
evt.target = element; evt.target = element;
@@ -42,6 +50,13 @@ ol.event.Drag = function(target) {
evt.deltaY = evt.clientY - previousY; evt.deltaY = evt.clientY - previousY;
previousX = evt.clientX; previousX = evt.clientX;
previousY = evt.clientY; previousY = evt.clientY;
if (!stopClickRegistered) {
// Once we are in the drag sequence, we know that we need to
// get rid of the click event that gets fired when we are done
// dragging.
target.register('click', stopClick, undefined, true);
stopClickRegistered = true;
}
target.triggerEvent(evt.type, evt); target.triggerEvent(evt.type, evt);
}); });
dragger.addEventListener(goog.fx.Dragger.EventType.END, function(evt) { dragger.addEventListener(goog.fx.Dragger.EventType.END, function(evt) {
@@ -49,6 +64,10 @@ ol.event.Drag = function(target) {
evt.type = 'dragend'; evt.type = 'dragend';
target.triggerEvent(evt.type, evt); target.triggerEvent(evt.type, evt);
}); });
// Don't swallow the click event if our sequence cancels early.
dragger.addEventListener(
goog.fx.Dragger.EventType.EARLY_CANCEL, stopClick
);
}; };
/** @inheritDoc */ /** @inheritDoc */