Remove ol.MapBrowserEvent#stopOtherInteractions

and check for false/true in the return from handleMapBrowserEvent. Refs #791.
This commit is contained in:
Éric Lemoine
2013-06-27 08:24:31 +02:00
parent a7ca22dde0
commit 6fc4aa68b6
9 changed files with 22 additions and 22 deletions

View File

@@ -41,6 +41,7 @@ goog.inherits(ol.interaction.DoubleClickZoom, ol.interaction.Interaction);
*/ */
ol.interaction.DoubleClickZoom.prototype.handleMapBrowserEvent = ol.interaction.DoubleClickZoom.prototype.handleMapBrowserEvent =
function(mapBrowserEvent) { function(mapBrowserEvent) {
var stopEvent = false;
var browserEvent = mapBrowserEvent.browserEvent; var browserEvent = mapBrowserEvent.browserEvent;
if (mapBrowserEvent.type == ol.MapBrowserEvent.EventType.DBLCLICK && if (mapBrowserEvent.type == ol.MapBrowserEvent.EventType.DBLCLICK &&
mapBrowserEvent.isMouseActionButton()) { mapBrowserEvent.isMouseActionButton()) {
@@ -52,6 +53,7 @@ ol.interaction.DoubleClickZoom.prototype.handleMapBrowserEvent =
ol.interaction.Interaction.zoomByDelta(map, view, delta, anchor, ol.interaction.Interaction.zoomByDelta(map, view, delta, anchor,
ol.interaction.DOUBLECLICKZOOM_ANIMATION_DURATION); ol.interaction.DOUBLECLICKZOOM_ANIMATION_DURATION);
mapBrowserEvent.preventDefault(); mapBrowserEvent.preventDefault();
mapBrowserEvent.stopOtherInteractions(); stopEvent = true;
} }
return !stopEvent;
}; };

View File

@@ -95,8 +95,9 @@ ol.interaction.Drag.prototype.handleMapBrowserEvent =
function(mapBrowserEvent) { function(mapBrowserEvent) {
var map = mapBrowserEvent.map; var map = mapBrowserEvent.map;
if (!map.isDef()) { if (!map.isDef()) {
return; return true;
} }
var stopEvent = false;
var view = map.getView(); var view = map.getView();
var browserEvent = mapBrowserEvent.browserEvent; var browserEvent = mapBrowserEvent.browserEvent;
if (mapBrowserEvent.type == ol.MapBrowserEvent.EventType.DOWN) { if (mapBrowserEvent.type == ol.MapBrowserEvent.EventType.DOWN) {
@@ -131,7 +132,8 @@ ol.interaction.Drag.prototype.handleMapBrowserEvent =
view.setHint(ol.ViewHint.INTERACTING, 1); view.setHint(ol.ViewHint.INTERACTING, 1);
this.dragging_ = true; this.dragging_ = true;
mapBrowserEvent.preventDefault(); mapBrowserEvent.preventDefault();
mapBrowserEvent.stopOtherInteractions(); stopEvent = true;
} }
} }
return !stopEvent;
}; };

View File

@@ -17,6 +17,9 @@ ol.interaction.Interaction = function() {
/** /**
* @param {ol.MapBrowserEvent} mapBrowserEvent Map browser event. * @param {ol.MapBrowserEvent} mapBrowserEvent Map browser event.
* @return {boolean} Whether the map browser event should continue
* through the chain of interactions. false means stop, true
* means continue.
*/ */
ol.interaction.Interaction.prototype.handleMapBrowserEvent = ol.interaction.Interaction.prototype.handleMapBrowserEvent =
goog.abstractMethod; goog.abstractMethod;

View File

@@ -52,6 +52,7 @@ goog.inherits(ol.interaction.KeyboardPan, ol.interaction.Interaction);
*/ */
ol.interaction.KeyboardPan.prototype.handleMapBrowserEvent = ol.interaction.KeyboardPan.prototype.handleMapBrowserEvent =
function(mapBrowserEvent) { function(mapBrowserEvent) {
var stopEvent = false;
if (mapBrowserEvent.type == goog.events.KeyHandler.EventType.KEY) { if (mapBrowserEvent.type == goog.events.KeyHandler.EventType.KEY) {
var keyEvent = /** @type {goog.events.KeyEvent} */ var keyEvent = /** @type {goog.events.KeyEvent} */
(mapBrowserEvent.browserEvent); (mapBrowserEvent.browserEvent);
@@ -81,7 +82,8 @@ ol.interaction.KeyboardPan.prototype.handleMapBrowserEvent =
ol.interaction.Interaction.pan( ol.interaction.Interaction.pan(
map, view, delta, ol.interaction.KEYBOARD_PAN_DURATION); map, view, delta, ol.interaction.KEYBOARD_PAN_DURATION);
mapBrowserEvent.preventDefault(); mapBrowserEvent.preventDefault();
mapBrowserEvent.stopOtherInteractions(); stopEvent = true;
} }
} }
return !stopEvent;
}; };

View File

@@ -49,6 +49,7 @@ goog.inherits(ol.interaction.KeyboardZoom, ol.interaction.Interaction);
*/ */
ol.interaction.KeyboardZoom.prototype.handleMapBrowserEvent = ol.interaction.KeyboardZoom.prototype.handleMapBrowserEvent =
function(mapBrowserEvent) { function(mapBrowserEvent) {
var stopEvent = false;
if (mapBrowserEvent.type == goog.events.KeyHandler.EventType.KEY) { if (mapBrowserEvent.type == goog.events.KeyHandler.EventType.KEY) {
var keyEvent = /** @type {goog.events.KeyEvent} */ var keyEvent = /** @type {goog.events.KeyEvent} */
(mapBrowserEvent.browserEvent); (mapBrowserEvent.browserEvent);
@@ -63,7 +64,8 @@ ol.interaction.KeyboardZoom.prototype.handleMapBrowserEvent =
ol.interaction.Interaction.zoomByDelta(map, view, delta, undefined, ol.interaction.Interaction.zoomByDelta(map, view, delta, undefined,
ol.interaction.KEYBOARD_ZOOM_DURATION); ol.interaction.KEYBOARD_ZOOM_DURATION);
mapBrowserEvent.preventDefault(); mapBrowserEvent.preventDefault();
mapBrowserEvent.stopOtherInteractions(); stopEvent = true;
} }
} }
return !stopEvent;
}; };

View File

@@ -70,7 +70,7 @@ goog.inherits(ol.interaction.MouseWheelZoom, ol.interaction.Interaction);
*/ */
ol.interaction.MouseWheelZoom.prototype.handleMapBrowserEvent = ol.interaction.MouseWheelZoom.prototype.handleMapBrowserEvent =
function(mapBrowserEvent) { function(mapBrowserEvent) {
var stopEvent = false;
if (mapBrowserEvent.type == if (mapBrowserEvent.type ==
goog.events.MouseWheelHandler.EventType.MOUSEWHEEL) { goog.events.MouseWheelHandler.EventType.MOUSEWHEEL) {
var map = mapBrowserEvent.map; var map = mapBrowserEvent.map;
@@ -93,8 +93,9 @@ ol.interaction.MouseWheelZoom.prototype.handleMapBrowserEvent =
goog.bind(this.doZoom_, this, map), timeLeft); goog.bind(this.doZoom_, this, map), timeLeft);
mapBrowserEvent.preventDefault(); mapBrowserEvent.preventDefault();
mapBrowserEvent.stopOtherInteractions(); stopEvent = true;
} }
return !stopEvent;
}; };

View File

@@ -126,4 +126,5 @@ ol.interaction.Touch.prototype.handleMapBrowserEvent =
} }
this.handled_ = handled; this.handled_ = handled;
} }
return true;
}; };

View File

@@ -667,8 +667,8 @@ ol.Map.prototype.handleMapBrowserEvent = function(mapBrowserEvent) {
if (this.dispatchEvent(mapBrowserEvent) !== false) { if (this.dispatchEvent(mapBrowserEvent) !== false) {
for (i = interactionsArray.length - 1; i >= 0; i--) { for (i = interactionsArray.length - 1; i >= 0; i--) {
var interaction = interactionsArray[i]; var interaction = interactionsArray[i];
interaction.handleMapBrowserEvent(mapBrowserEvent); var cont = interaction.handleMapBrowserEvent(mapBrowserEvent);
if (mapBrowserEvent.otherInteractionsStopped) { if (!cont) {
break; break;
} }
} }

View File

@@ -39,11 +39,6 @@ ol.MapBrowserEvent = function(type, map, browserEvent, opt_frameState) {
*/ */
this.coordinate_ = null; this.coordinate_ = null;
/**
* @type {boolean}
*/
this.otherInteractionsStopped = false;
/** /**
* @private * @private
* @type {ol.Pixel} * @type {ol.Pixel}
@@ -114,14 +109,6 @@ ol.MapBrowserEvent.prototype.preventDefault = function() {
}; };
/**
* Stop the interaction chain.
*/
ol.MapBrowserEvent.prototype.stopOtherInteractions = function() {
this.otherInteractionsStopped = true;
};
/** /**
* Prevents further propagation of the current event. * Prevents further propagation of the current event.
* @see https://developer.mozilla.org/en-US/docs/Web/API/event.stopPropagation * @see https://developer.mozilla.org/en-US/docs/Web/API/event.stopPropagation