diff --git a/externs/oli.js b/externs/oli.js index 1504e0f21d..cf6c31f5a1 100644 --- a/externs/oli.js +++ b/externs/oli.js @@ -130,6 +130,7 @@ oli.control.Control = function() {}; oli.control.Control.prototype.setMap = function(map) {}; + /** * @type {Object} */ @@ -137,6 +138,20 @@ oli.interaction; +/** + * @interface + */ +oli.interaction.Interaction = function() {}; + +/** + * @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. + */ +oli.interaction.Interaction.prototype.handleMapBrowserEvent = function(e) {}; + + /** * @interface */ diff --git a/src/ol/interaction/interaction.js b/src/ol/interaction/interaction.js index 9b41a7d2de..76b15d261b 100644 --- a/src/ol/interaction/interaction.js +++ b/src/ol/interaction/interaction.js @@ -33,6 +33,7 @@ ol.interaction.InteractionProperty = { * * @constructor * @extends {ol.Object} + * @implements {oli.interaction.Interaction} * @api */ ol.interaction.Interaction = function() { @@ -76,10 +77,16 @@ ol.interaction.Interaction.prototype.getMap = function() { /** + * Method called by the map to notify the interaction that a browser + * event was dispatched on the map. If the interaction wants to handle + * that event it can return `false` to prevent the propagation of the + * event to other interactions in the map's interactions chain. * @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 + * through the chain of interactions. `false` means stop, `true` * means continue. + * @function + * @api */ ol.interaction.Interaction.prototype.handleMapBrowserEvent = goog.abstractMethod;