From e05cff670bcf4f0d600687206d7393f4df89de4c Mon Sep 17 00:00:00 2001 From: ahocevar Date: Tue, 1 Apr 2014 13:46:58 +0200 Subject: [PATCH 1/2] Use pointer events for button clicks --- src/ol/control/fullscreencontrol.js | 13 ++++++------- src/ol/control/zoomcontrol.js | 22 +++++++++++----------- src/ol/control/zoomtoextentcontrol.js | 14 +++++++------- 3 files changed, 24 insertions(+), 25 deletions(-) diff --git a/src/ol/control/fullscreencontrol.js b/src/ol/control/fullscreencontrol.js index ffc8a89ab8..1ac4233fd5 100644 --- a/src/ol/control/fullscreencontrol.js +++ b/src/ol/control/fullscreencontrol.js @@ -10,6 +10,7 @@ goog.require('googx.dom.fullscreen'); goog.require('googx.dom.fullscreen.EventType'); goog.require('ol.control.Control'); goog.require('ol.css'); +goog.require('ol.pointer.PointerEventHandler'); @@ -47,10 +48,8 @@ ol.control.FullScreen = function(opt_options) { ' ol-has-tooltip' }); goog.dom.appendChild(button, tip); - goog.events.listen(button, [ - goog.events.EventType.CLICK, - goog.events.EventType.TOUCHEND - ], this.handleClick_, false, this); + goog.events.listen(new ol.pointer.PointerEventHandler(button), + ol.pointer.EventType.POINTERUP, this.handleClick_, false, this); goog.events.listen(button, [ goog.events.EventType.MOUSEOUT, @@ -84,14 +83,14 @@ goog.inherits(ol.control.FullScreen, ol.control.Control); /** - * @param {goog.events.BrowserEvent} browserEvent Browser event. + * @param {ol.pointer.PointerEvent} pointerEvent Pointer event. * @private */ -ol.control.FullScreen.prototype.handleClick_ = function(browserEvent) { +ol.control.FullScreen.prototype.handleClick_ = function(pointerEvent) { if (!googx.dom.fullscreen.isSupported()) { return; } - browserEvent.preventDefault(); + pointerEvent.browserEvent.preventDefault(); var map = this.getMap(); if (goog.isNull(map)) { return; diff --git a/src/ol/control/zoomcontrol.js b/src/ol/control/zoomcontrol.js index c5eb49ad42..c786aa6c91 100644 --- a/src/ol/control/zoomcontrol.js +++ b/src/ol/control/zoomcontrol.js @@ -12,6 +12,7 @@ goog.require('ol.animation'); goog.require('ol.control.Control'); goog.require('ol.css'); goog.require('ol.easing'); +goog.require('ol.pointer.PointerEventHandler'); @@ -51,10 +52,9 @@ ol.control.Zoom = function(opt_options) { 'type' : 'button' }, tTipZoomIn, zoomInLabel); - goog.events.listen(inElement, [ - goog.events.EventType.TOUCHEND, - goog.events.EventType.CLICK - ], goog.partial(ol.control.Zoom.prototype.zoomByDelta_, delta), false, this); + goog.events.listen(new ol.pointer.PointerEventHandler(inElement), + ol.pointer.EventType.POINTERUP, goog.partial( + ol.control.Zoom.prototype.zoomByDelta_, delta), false, this); goog.events.listen(inElement, [ goog.events.EventType.MOUSEOUT, @@ -71,10 +71,10 @@ ol.control.Zoom = function(opt_options) { 'class': className + '-out ol-has-tooltip', 'name' : 'ZoomOut' }, tTipsZoomOut, zoomOutLabel); - goog.events.listen(outElement, [ - goog.events.EventType.TOUCHEND, - goog.events.EventType.CLICK - ], goog.partial(ol.control.Zoom.prototype.zoomByDelta_, -delta), false, this); + + goog.events.listen(new ol.pointer.PointerEventHandler(outElement), + ol.pointer.EventType.POINTERUP, goog.partial( + ol.control.Zoom.prototype.zoomByDelta_, -delta), false, this); goog.events.listen(outElement, [ goog.events.EventType.MOUSEOUT, @@ -104,11 +104,11 @@ goog.inherits(ol.control.Zoom, ol.control.Control); /** * @param {number} delta Zoom delta. - * @param {goog.events.BrowserEvent} browserEvent The browser event to handle. + * @param {ol.pointer.PointerEvent} pointerEvent The pointer event to handle. * @private */ -ol.control.Zoom.prototype.zoomByDelta_ = function(delta, browserEvent) { - browserEvent.preventDefault(); +ol.control.Zoom.prototype.zoomByDelta_ = function(delta, pointerEvent) { + pointerEvent.browserEvent.preventDefault(); // prevent the anchor from getting appended to the url var map = this.getMap(); // FIXME works for View2D only diff --git a/src/ol/control/zoomtoextentcontrol.js b/src/ol/control/zoomtoextentcontrol.js index 9db50f69d0..d0bd7d2936 100644 --- a/src/ol/control/zoomtoextentcontrol.js +++ b/src/ol/control/zoomtoextentcontrol.js @@ -9,6 +9,7 @@ goog.require('goog.events'); goog.require('goog.events.EventType'); goog.require('ol.control.Control'); goog.require('ol.css'); +goog.require('ol.pointer.PointerEventHandler'); @@ -47,10 +48,9 @@ ol.control.ZoomToExtent = function(opt_options) { goog.dom.appendChild(button, tip); goog.dom.appendChild(element, button); - goog.events.listen(button, [ - goog.events.EventType.TOUCHEND, - goog.events.EventType.CLICK - ], this.handleZoomToExtent_, false, this); + goog.events.listen(new ol.pointer.PointerEventHandler(button), + ol.pointer.EventType.POINTERUP, + this.handleZoomToExtent_, false, this); goog.events.listen(button, [ goog.events.EventType.MOUSEOUT, @@ -68,11 +68,11 @@ goog.inherits(ol.control.ZoomToExtent, ol.control.Control); /** - * @param {goog.events.BrowserEvent} browserEvent Browser event. + * @param {ol.pointer.PointerEvent} pointerEvent Pointer event. * @private */ -ol.control.ZoomToExtent.prototype.handleZoomToExtent_ = function(browserEvent) { - browserEvent.preventDefault(); +ol.control.ZoomToExtent.prototype.handleZoomToExtent_ = function(pointerEvent) { + pointerEvent.browserEvent.preventDefault(); // prevent #zoomExtent anchor from getting appended to the url var map = this.getMap(); var view = map.getView(); From a3be9e720af4e268bb4f466058e2dea91fcd4751 Mon Sep 17 00:00:00 2001 From: ahocevar Date: Tue, 1 Apr 2014 15:31:39 +0200 Subject: [PATCH 2/2] Register pointer event handlers as disposable --- src/ol/control/fullscreencontrol.js | 4 +++- src/ol/control/zoomcontrol.js | 8 ++++++-- src/ol/control/zoomtoextentcontrol.js | 5 +++-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/ol/control/fullscreencontrol.js b/src/ol/control/fullscreencontrol.js index 1ac4233fd5..4b8e42a7c4 100644 --- a/src/ol/control/fullscreencontrol.js +++ b/src/ol/control/fullscreencontrol.js @@ -48,7 +48,9 @@ ol.control.FullScreen = function(opt_options) { ' ol-has-tooltip' }); goog.dom.appendChild(button, tip); - goog.events.listen(new ol.pointer.PointerEventHandler(button), + var buttonHandler = new ol.pointer.PointerEventHandler(button); + this.registerDisposable(buttonHandler); + goog.events.listen(buttonHandler, ol.pointer.EventType.POINTERUP, this.handleClick_, false, this); goog.events.listen(button, [ diff --git a/src/ol/control/zoomcontrol.js b/src/ol/control/zoomcontrol.js index c786aa6c91..8f42acf811 100644 --- a/src/ol/control/zoomcontrol.js +++ b/src/ol/control/zoomcontrol.js @@ -52,7 +52,9 @@ ol.control.Zoom = function(opt_options) { 'type' : 'button' }, tTipZoomIn, zoomInLabel); - goog.events.listen(new ol.pointer.PointerEventHandler(inElement), + var inElementHandler = new ol.pointer.PointerEventHandler(inElement); + this.registerDisposable(inElementHandler); + goog.events.listen(inElementHandler, ol.pointer.EventType.POINTERUP, goog.partial( ol.control.Zoom.prototype.zoomByDelta_, delta), false, this); @@ -72,7 +74,9 @@ ol.control.Zoom = function(opt_options) { 'name' : 'ZoomOut' }, tTipsZoomOut, zoomOutLabel); - goog.events.listen(new ol.pointer.PointerEventHandler(outElement), + var outElementHandler = new ol.pointer.PointerEventHandler(outElement); + this.registerDisposable(outElementHandler); + goog.events.listen(outElementHandler, ol.pointer.EventType.POINTERUP, goog.partial( ol.control.Zoom.prototype.zoomByDelta_, -delta), false, this); diff --git a/src/ol/control/zoomtoextentcontrol.js b/src/ol/control/zoomtoextentcontrol.js index d0bd7d2936..404a2efdf7 100644 --- a/src/ol/control/zoomtoextentcontrol.js +++ b/src/ol/control/zoomtoextentcontrol.js @@ -48,8 +48,9 @@ ol.control.ZoomToExtent = function(opt_options) { goog.dom.appendChild(button, tip); goog.dom.appendChild(element, button); - goog.events.listen(new ol.pointer.PointerEventHandler(button), - ol.pointer.EventType.POINTERUP, + var buttonHandler = new ol.pointer.PointerEventHandler(button); + this.registerDisposable(buttonHandler); + goog.events.listen(buttonHandler, ol.pointer.EventType.POINTERUP, this.handleZoomToExtent_, false, this); goog.events.listen(button, [