Remove goog.events.MouseWheelEvent and goog.events.MouseWheelHandler

This commit is contained in:
Andreas Hocevar
2016-01-25 18:35:43 +01:00
parent 1a6daa297e
commit 6ac3f30c8f
5 changed files with 67 additions and 15 deletions

View File

@@ -15,3 +15,13 @@
* @see http://www.w3.org/TR/pointerevents/#the-touch-action-css-property * @see http://www.w3.org/TR/pointerevents/#the-touch-action-css-property
*/ */
CSSProperties.prototype.touchAction; CSSProperties.prototype.touchAction;
/**
* @type {number}
*/
WheelEvent.DOM_DELTA_LINE;
/**
* @type {number}
*/
WheelEvent.DOM_DELTA_PIXEL;

View File

@@ -5,6 +5,7 @@ goog.provide('ol.events.KeyCode');
/** /**
* @enum {string} * @enum {string}
* @const
*/ */
ol.events.EventType = { ol.events.EventType = {
/** /**
@@ -25,14 +26,17 @@ ol.events.EventType = {
MOUSEDOWN: 'mousedown', MOUSEDOWN: 'mousedown',
MOUSEMOVE: 'mousemove', MOUSEMOVE: 'mousemove',
MOUSEOUT: 'mouseout', MOUSEOUT: 'mouseout',
MOUSEWHEEL: 'mousewheel',
MSPOINTERDOWN: 'mspointerdown', MSPOINTERDOWN: 'mspointerdown',
RESIZE: 'resize', RESIZE: 'resize',
TOUCHSTART: 'touchstart' TOUCHSTART: 'touchstart',
WHEEL: 'wheel'
}; };
/** /**
* @enum {number} * @enum {number}
* @const
*/ */
ol.events.KeyCode = { ol.events.KeyCode = {
LEFT: 37, LEFT: 37,

View File

@@ -5,6 +5,22 @@ goog.require('ol.dom');
goog.require('ol.webgl'); goog.require('ol.webgl');
var ua = typeof navigator !== 'undefined' ?
navigator.userAgent.toLowerCase() : '';
/**
* User agent string says we are dealing with Firefox as browser.
* @type {boolean}
*/
ol.has.FIREFOX = ua.indexOf('firefox') !== -1;
/**
* User agent string says we are dealing with Safari as browser.
* @type {boolean}
*/
ol.has.SAFARI = ua.indexOf('safari') !== -1 && ua.indexOf('chrom') === -1;
/** /**
* The ratio between physical pixels and device-independent pixels * The ratio between physical pixels and device-independent pixels
* (dips) on the device (`window.devicePixelRatio`). * (dips) on the device (`window.devicePixelRatio`).

View File

@@ -1,10 +1,9 @@
goog.provide('ol.interaction.MouseWheelZoom'); goog.provide('ol.interaction.MouseWheelZoom');
goog.require('goog.asserts'); goog.require('goog.asserts');
goog.require('goog.events.MouseWheelEvent');
goog.require('goog.events.MouseWheelHandler.EventType');
goog.require('ol'); goog.require('ol');
goog.require('ol.Coordinate'); goog.require('ol.Coordinate');
goog.require('ol.events.EventType');
goog.require('ol.interaction.Interaction'); goog.require('ol.interaction.Interaction');
goog.require('ol.math'); goog.require('ol.math');
@@ -76,18 +75,36 @@ goog.inherits(ol.interaction.MouseWheelZoom, ol.interaction.Interaction);
*/ */
ol.interaction.MouseWheelZoom.handleEvent = function(mapBrowserEvent) { ol.interaction.MouseWheelZoom.handleEvent = function(mapBrowserEvent) {
var stopEvent = false; var stopEvent = false;
if (mapBrowserEvent.type == if (mapBrowserEvent.type == ol.events.EventType.WHEEL ||
goog.events.MouseWheelHandler.EventType.MOUSEWHEEL) { mapBrowserEvent.type == ol.events.EventType.MOUSEWHEEL) {
var map = mapBrowserEvent.map; var map = mapBrowserEvent.map;
var mouseWheelEvent = mapBrowserEvent.originalEvent; var wheelEvent = /** @type {WheelEvent} */ (mapBrowserEvent.originalEvent);
goog.asserts.assertInstanceof(mouseWheelEvent, goog.events.MouseWheelEvent,
'mouseWheelEvent should be of type MouseWheelEvent');
if (this.useAnchor_) { if (this.useAnchor_) {
this.lastAnchor_ = mapBrowserEvent.coordinate; this.lastAnchor_ = mapBrowserEvent.coordinate;
} }
this.delta_ += mouseWheelEvent.deltaY; // Delta normalisation inspired by
// https://github.com/mapbox/mapbox-gl-js/blob/001c7b9/js/ui/handler/scroll_zoom.js
//TODO There's more good stuff in there for inspiration to improve this interaction.
var delta;
if (mapBrowserEvent.type == ol.events.EventType.WHEEL) {
delta = wheelEvent.deltaY;
if (ol.has.FIREFOX &&
wheelEvent.deltaMode === goog.global.WheelEvent.DOM_DELTA_PIXEL) {
delta /= ol.has.DEVICE_PIXEL_RATIO;
}
if (wheelEvent.deltaMode === goog.global.WheelEvent.DOM_DELTA_LINE) {
delta *= 40;
}
} else if (mapBrowserEvent.type == ol.events.EventType.MOUSEWHEEL) {
delta = -wheelEvent.wheelDeltaY;
if (ol.has.SAFARI) {
delta /= 3;
}
}
this.delta_ += delta;
if (this.startTime_ === undefined) { if (this.startTime_ === undefined) {
this.startTime_ = Date.now(); this.startTime_ = Date.now();

View File

@@ -12,8 +12,6 @@ goog.require('goog.debug.Console');
goog.require('goog.dom'); goog.require('goog.dom');
goog.require('goog.dom.ViewportSizeMonitor'); goog.require('goog.dom.ViewportSizeMonitor');
goog.require('goog.dom.classlist'); goog.require('goog.dom.classlist');
goog.require('goog.events.MouseWheelHandler');
goog.require('goog.events.MouseWheelHandler.EventType');
goog.require('goog.functions'); goog.require('goog.functions');
goog.require('goog.log'); goog.require('goog.log');
goog.require('goog.log.Level'); goog.require('goog.log.Level');
@@ -311,11 +309,10 @@ ol.Map = function(options) {
*/ */
this.keyHandlerKey_; this.keyHandlerKey_;
var mouseWheelHandler = new goog.events.MouseWheelHandler(this.viewport_); ol.events.listen(this.viewport_, ol.events.EventType.WHEEL,
ol.events.listen(mouseWheelHandler, this.handleBrowserEvent, false, this);
goog.events.MouseWheelHandler.EventType.MOUSEWHEEL, ol.events.listen(this.viewport_, ol.events.EventType.MOUSEWHEEL,
this.handleBrowserEvent, false, this); this.handleBrowserEvent, false, this);
this.registerDisposable(mouseWheelHandler);
/** /**
* @type {ol.Collection.<ol.control.Control>} * @type {ol.Collection.<ol.control.Control>}
@@ -577,6 +574,14 @@ ol.Map.prototype.removePreRenderFunction = function(preRenderFunction) {
* @inheritDoc * @inheritDoc
*/ */
ol.Map.prototype.disposeInternal = function() { ol.Map.prototype.disposeInternal = function() {
ol.events.unlisten(this.viewport_, ol.events.EventType.WHEEL,
this.handleBrowserEvent, false, this);
ol.events.unlisten(this.viewport_, ol.events.EventType.MOUSEWHEEL,
this.handleBrowserEvent, false, this);
if (this.handleResize_ !== undefined) {
goog.global.removeEventListener(ol.events.EventType.RESIZE,
this.handleResize_, false, this);
}
goog.dom.removeNode(this.viewport_); goog.dom.removeNode(this.viewport_);
goog.base(this, 'disposeInternal'); goog.base(this, 'disposeInternal');
}; };