Emulate click events only on mouse "action"
`click` events are fired only if the mouse action button is pressed. This prevents `click` events from being fired when the middle mouse button is used. Also, without this commit, in Chrome with emulated touch events enabled, double-clicking the map doesn't zoom the map. This is because `ol.BrowserFeature.HAS_TOUCH` is `false` in that environment. The commit fixes it by testing `isMouseActionButton` on mouse devices only.
This commit is contained in:
@@ -46,8 +46,7 @@ ol.interaction.DoubleClickZoom.prototype.handleMapBrowserEvent =
|
|||||||
function(mapBrowserEvent) {
|
function(mapBrowserEvent) {
|
||||||
var stopEvent = false;
|
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()) {
|
|
||||||
var map = mapBrowserEvent.map;
|
var map = mapBrowserEvent.map;
|
||||||
var anchor = mapBrowserEvent.getCoordinate();
|
var anchor = mapBrowserEvent.getCoordinate();
|
||||||
var delta = browserEvent.shiftKey ? -this.delta_ : this.delta_;
|
var delta = browserEvent.shiftKey ? -this.delta_ : this.delta_;
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ goog.require('goog.events');
|
|||||||
goog.require('goog.events.BrowserEvent');
|
goog.require('goog.events.BrowserEvent');
|
||||||
goog.require('goog.events.EventTarget');
|
goog.require('goog.events.EventTarget');
|
||||||
goog.require('goog.events.EventType');
|
goog.require('goog.events.EventType');
|
||||||
goog.require('ol.BrowserFeature');
|
|
||||||
goog.require('ol.Coordinate');
|
goog.require('ol.Coordinate');
|
||||||
goog.require('ol.FrameState');
|
goog.require('ol.FrameState');
|
||||||
goog.require('ol.MapEvent');
|
goog.require('ol.MapEvent');
|
||||||
@@ -76,16 +75,6 @@ ol.MapBrowserEvent.prototype.getPixel = function() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return {boolean} Do we have a left click?
|
|
||||||
*/
|
|
||||||
ol.MapBrowserEvent.prototype.isMouseActionButton = function() {
|
|
||||||
// always assume a left-click on touch devices
|
|
||||||
return ol.BrowserFeature.HAS_TOUCH ||
|
|
||||||
this.browserEvent.isMouseActionButton();
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Prevents the default browser action.
|
* Prevents the default browser action.
|
||||||
* @see https://developer.mozilla.org/en-US/docs/Web/API/event.preventDefault
|
* @see https://developer.mozilla.org/en-US/docs/Web/API/event.preventDefault
|
||||||
@@ -226,7 +215,7 @@ ol.MapBrowserEventHandler.prototype.handleMouseUp_ = function(browserEvent) {
|
|||||||
ol.MapBrowserEvent.EventType.DRAGEND, this.map_, browserEvent);
|
ol.MapBrowserEvent.EventType.DRAGEND, this.map_, browserEvent);
|
||||||
this.dispatchEvent(newEvent);
|
this.dispatchEvent(newEvent);
|
||||||
this.down_ = null;
|
this.down_ = null;
|
||||||
} else {
|
} else if (browserEvent.isMouseActionButton()) {
|
||||||
this.emulateClick_(browserEvent);
|
this.emulateClick_(browserEvent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user