From 75cd5572aa825ac8e68f8a4e51f53b27c0e1721d Mon Sep 17 00:00:00 2001 From: Antoine Abt Date: Wed, 4 Jun 2014 16:55:02 +0200 Subject: [PATCH 1/2] =?UTF-8?q?Restore=20control=E2=80=99s=20keyboard=20na?= =?UTF-8?q?vigation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ol/control/fullscreencontrol.js | 8 +++++++- src/ol/control/rotatecontrol.js | 8 +++++++- src/ol/control/zoomcontrol.js | 12 +++++++++++- src/ol/control/zoomtoextentcontrol.js | 8 +++++++- 4 files changed, 32 insertions(+), 4 deletions(-) diff --git a/src/ol/control/fullscreencontrol.js b/src/ol/control/fullscreencontrol.js index 569a4c124d..318008929c 100644 --- a/src/ol/control/fullscreencontrol.js +++ b/src/ol/control/fullscreencontrol.js @@ -52,6 +52,8 @@ ol.control.FullScreen = function(opt_options) { this.registerDisposable(buttonHandler); goog.events.listen(buttonHandler, ol.pointer.EventType.POINTERUP, this.handleClick_, false, this); + goog.events.listen(button, goog.events.EventType.CLICK, + this.handleClick_, false, this); goog.events.listen(button, [ goog.events.EventType.MOUSEOUT, @@ -92,7 +94,11 @@ ol.control.FullScreen.prototype.handleClick_ = function(pointerEvent) { if (!googx.dom.fullscreen.isSupported()) { return; } - pointerEvent.browserEvent.preventDefault(); + if (goog.isDef(pointerEvent.browserEvent)) { + pointerEvent.browserEvent.preventDefault(); + } else if (pointerEvent.screenX !== 0 && pointerEvent.screenY !== 0) { + return; + } var map = this.getMap(); if (goog.isNull(map)) { return; diff --git a/src/ol/control/rotatecontrol.js b/src/ol/control/rotatecontrol.js index 8596e6dbb3..80aa7eca93 100644 --- a/src/ol/control/rotatecontrol.js +++ b/src/ol/control/rotatecontrol.js @@ -52,6 +52,8 @@ ol.control.Rotate = function(opt_options) { this.registerDisposable(handler); goog.events.listen(handler, ol.pointer.EventType.POINTERUP, ol.control.Rotate.prototype.resetNorth_, false, this); + goog.events.listen(button, goog.events.EventType.CLICK, + ol.control.Rotate.prototype.resetNorth_, false, this); goog.events.listen(button, [ goog.events.EventType.MOUSEOUT, @@ -92,7 +94,11 @@ goog.inherits(ol.control.Rotate, ol.control.Control); * @private */ ol.control.Rotate.prototype.resetNorth_ = function(pointerEvent) { - pointerEvent.browserEvent.preventDefault(); + if (goog.isDef(pointerEvent.browserEvent)) { + pointerEvent.browserEvent.preventDefault(); + } else if (pointerEvent.screenX !== 0 && pointerEvent.screenY !== 0) { + return; + } // prevent the anchor from getting appended to the url var map = this.getMap(); // FIXME works for View2D only diff --git a/src/ol/control/zoomcontrol.js b/src/ol/control/zoomcontrol.js index 4b8fe5154e..e05cf15c22 100644 --- a/src/ol/control/zoomcontrol.js +++ b/src/ol/control/zoomcontrol.js @@ -56,6 +56,9 @@ ol.control.Zoom = function(opt_options) { goog.events.listen(inElementHandler, ol.pointer.EventType.POINTERUP, goog.partial( ol.control.Zoom.prototype.zoomByDelta_, delta), false, this); + goog.events.listen(inElement, + goog.events.EventType.CLICK, goog.partial( + ol.control.Zoom.prototype.zoomByDelta_, delta), false, this); goog.events.listen(inElement, [ goog.events.EventType.MOUSEOUT, @@ -77,6 +80,9 @@ ol.control.Zoom = function(opt_options) { goog.events.listen(outElementHandler, ol.pointer.EventType.POINTERUP, goog.partial( ol.control.Zoom.prototype.zoomByDelta_, -delta), false, this); + goog.events.listen(outElement, + goog.events.EventType.CLICK, goog.partial( + ol.control.Zoom.prototype.zoomByDelta_, -delta), false, this); goog.events.listen(outElement, [ goog.events.EventType.MOUSEOUT, @@ -111,7 +117,11 @@ goog.inherits(ol.control.Zoom, ol.control.Control); * @private */ ol.control.Zoom.prototype.zoomByDelta_ = function(delta, pointerEvent) { - pointerEvent.browserEvent.preventDefault(); + if (goog.isDef(pointerEvent.browserEvent)) { + pointerEvent.browserEvent.preventDefault(); + } else if (pointerEvent.screenX !== 0 && pointerEvent.screenY !== 0) { + return; + } // 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 03aa7fbbea..0be54736ba 100644 --- a/src/ol/control/zoomtoextentcontrol.js +++ b/src/ol/control/zoomtoextentcontrol.js @@ -48,6 +48,8 @@ ol.control.ZoomToExtent = function(opt_options) { this.registerDisposable(buttonHandler); goog.events.listen(buttonHandler, ol.pointer.EventType.POINTERUP, this.handleZoomToExtent_, false, this); + goog.events.listen(button, goog.events.EventType.CLICK, + this.handleZoomToExtent_, false, this); goog.events.listen(button, [ goog.events.EventType.MOUSEOUT, @@ -73,7 +75,11 @@ goog.inherits(ol.control.ZoomToExtent, ol.control.Control); * @private */ ol.control.ZoomToExtent.prototype.handleZoomToExtent_ = function(pointerEvent) { - pointerEvent.browserEvent.preventDefault(); + if (goog.isDef(pointerEvent.browserEvent)) { + pointerEvent.browserEvent.preventDefault(); + } else if (pointerEvent.screenX !== 0 && pointerEvent.screenY !== 0) { + return; + } // prevent #zoomExtent anchor from getting appended to the url var map = this.getMap(); var view = map.getView(); From 09719bdc703e88131007e342cfccd64063b610e3 Mon Sep 17 00:00:00 2001 From: Antoine Abt Date: Thu, 5 Jun 2014 11:21:03 +0200 Subject: [PATCH 2/2] Fixes button handlers event type --- src/ol/control/fullscreencontrol.js | 30 +++++++++++++++++----- src/ol/control/rotatecontrol.js | 31 ++++++++++++++++------ src/ol/control/zoomcontrol.js | 37 +++++++++++++++++++-------- src/ol/control/zoomtoextentcontrol.js | 31 ++++++++++++++++------ 4 files changed, 96 insertions(+), 33 deletions(-) diff --git a/src/ol/control/fullscreencontrol.js b/src/ol/control/fullscreencontrol.js index 318008929c..4c524d4a80 100644 --- a/src/ol/control/fullscreencontrol.js +++ b/src/ol/control/fullscreencontrol.js @@ -51,7 +51,7 @@ ol.control.FullScreen = function(opt_options) { var buttonHandler = new ol.pointer.PointerEventHandler(button); this.registerDisposable(buttonHandler); goog.events.listen(buttonHandler, - ol.pointer.EventType.POINTERUP, this.handleClick_, false, this); + ol.pointer.EventType.POINTERUP, this.handlePointerUp_, false, this); goog.events.listen(button, goog.events.EventType.CLICK, this.handleClick_, false, this); @@ -87,16 +87,32 @@ goog.inherits(ol.control.FullScreen, ol.control.Control); /** - * @param {ol.pointer.PointerEvent} pointerEvent Pointer event. + * @param {goog.events.BrowserEvent} event The event to handle * @private */ -ol.control.FullScreen.prototype.handleClick_ = function(pointerEvent) { - if (!googx.dom.fullscreen.isSupported()) { +ol.control.FullScreen.prototype.handleClick_ = function(event) { + if (event.screenX !== 0 && event.screenY !== 0) { return; } - if (goog.isDef(pointerEvent.browserEvent)) { - pointerEvent.browserEvent.preventDefault(); - } else if (pointerEvent.screenX !== 0 && pointerEvent.screenY !== 0) { + this.handleFullScreen_(); +}; + + +/** + * @param {ol.pointer.PointerEvent} pointerEvent The event to handle + * @private + */ +ol.control.FullScreen.prototype.handlePointerUp_ = function(pointerEvent) { + pointerEvent.browserEvent.preventDefault(); + this.handleFullScreen_(); +}; + + +/** + * @private + */ +ol.control.FullScreen.prototype.handleFullScreen_ = function() { + if (!googx.dom.fullscreen.isSupported()) { return; } var map = this.getMap(); diff --git a/src/ol/control/rotatecontrol.js b/src/ol/control/rotatecontrol.js index 80aa7eca93..e393289f32 100644 --- a/src/ol/control/rotatecontrol.js +++ b/src/ol/control/rotatecontrol.js @@ -51,9 +51,9 @@ ol.control.Rotate = function(opt_options) { var handler = new ol.pointer.PointerEventHandler(button); this.registerDisposable(handler); goog.events.listen(handler, ol.pointer.EventType.POINTERUP, - ol.control.Rotate.prototype.resetNorth_, false, this); + ol.control.Rotate.prototype.handlePointerUp_, false, this); goog.events.listen(button, goog.events.EventType.CLICK, - ol.control.Rotate.prototype.resetNorth_, false, this); + ol.control.Rotate.prototype.handleClick_, false, this); goog.events.listen(button, [ goog.events.EventType.MOUSEOUT, @@ -90,16 +90,31 @@ goog.inherits(ol.control.Rotate, ol.control.Control); /** - * @param {ol.pointer.PointerEvent} pointerEvent The pointer event to handle. + * @param {goog.events.BrowserEvent} event The event to handle * @private */ -ol.control.Rotate.prototype.resetNorth_ = function(pointerEvent) { - if (goog.isDef(pointerEvent.browserEvent)) { - pointerEvent.browserEvent.preventDefault(); - } else if (pointerEvent.screenX !== 0 && pointerEvent.screenY !== 0) { +ol.control.Rotate.prototype.handleClick_ = function(event) { + if (event.screenX !== 0 && event.screenY !== 0) { return; } - // prevent the anchor from getting appended to the url + this.resetNorth_(); +}; + + +/** + * @param {ol.pointer.PointerEvent} pointerEvent The event to handle + * @private + */ +ol.control.Rotate.prototype.handlePointerUp_ = function(pointerEvent) { + pointerEvent.browserEvent.preventDefault(); + this.resetNorth_(); +}; + + +/** + * @private + */ +ol.control.Rotate.prototype.resetNorth_ = function() { var map = this.getMap(); // FIXME works for View2D only var view = map.getView(); diff --git a/src/ol/control/zoomcontrol.js b/src/ol/control/zoomcontrol.js index e05cf15c22..d1fece14e4 100644 --- a/src/ol/control/zoomcontrol.js +++ b/src/ol/control/zoomcontrol.js @@ -55,10 +55,10 @@ ol.control.Zoom = function(opt_options) { this.registerDisposable(inElementHandler); goog.events.listen(inElementHandler, ol.pointer.EventType.POINTERUP, goog.partial( - ol.control.Zoom.prototype.zoomByDelta_, delta), false, this); + ol.control.Zoom.prototype.handlePointerUp_, delta), false, this); goog.events.listen(inElement, goog.events.EventType.CLICK, goog.partial( - ol.control.Zoom.prototype.zoomByDelta_, delta), false, this); + ol.control.Zoom.prototype.handleClick_, delta), false, this); goog.events.listen(inElement, [ goog.events.EventType.MOUSEOUT, @@ -79,10 +79,10 @@ ol.control.Zoom = function(opt_options) { this.registerDisposable(outElementHandler); goog.events.listen(outElementHandler, ol.pointer.EventType.POINTERUP, goog.partial( - ol.control.Zoom.prototype.zoomByDelta_, -delta), false, this); + ol.control.Zoom.prototype.handlePointerUp_, -delta), false, this); goog.events.listen(outElement, goog.events.EventType.CLICK, goog.partial( - ol.control.Zoom.prototype.zoomByDelta_, -delta), false, this); + ol.control.Zoom.prototype.handleClick_, -delta), false, this); goog.events.listen(outElement, [ goog.events.EventType.MOUSEOUT, @@ -113,16 +113,33 @@ goog.inherits(ol.control.Zoom, ol.control.Control); /** * @param {number} delta Zoom delta. - * @param {ol.pointer.PointerEvent} pointerEvent The pointer event to handle. + * @param {goog.events.BrowserEvent} event The event to handle * @private */ -ol.control.Zoom.prototype.zoomByDelta_ = function(delta, pointerEvent) { - if (goog.isDef(pointerEvent.browserEvent)) { - pointerEvent.browserEvent.preventDefault(); - } else if (pointerEvent.screenX !== 0 && pointerEvent.screenY !== 0) { +ol.control.Zoom.prototype.handleClick_ = function(delta, event) { + if (event.screenX !== 0 && event.screenY !== 0) { return; } - // prevent the anchor from getting appended to the url + this.zoomByDelta_(delta); +}; + + +/** + * @param {number} delta Zoom delta. + * @param {ol.pointer.PointerEvent} pointerEvent The event to handle + * @private + */ +ol.control.Zoom.prototype.handlePointerUp_ = function(delta, pointerEvent) { + pointerEvent.browserEvent.preventDefault(); + this.zoomByDelta_(delta); +}; + + +/** + * @param {number} delta Zoom delta. + * @private + */ +ol.control.Zoom.prototype.zoomByDelta_ = function(delta) { var map = this.getMap(); // FIXME works for View2D only var view = map.getView(); diff --git a/src/ol/control/zoomtoextentcontrol.js b/src/ol/control/zoomtoextentcontrol.js index 0be54736ba..d42d0ea003 100644 --- a/src/ol/control/zoomtoextentcontrol.js +++ b/src/ol/control/zoomtoextentcontrol.js @@ -47,9 +47,9 @@ ol.control.ZoomToExtent = function(opt_options) { var buttonHandler = new ol.pointer.PointerEventHandler(button); this.registerDisposable(buttonHandler); goog.events.listen(buttonHandler, ol.pointer.EventType.POINTERUP, - this.handleZoomToExtent_, false, this); + this.handlePointerUp_, false, this); goog.events.listen(button, goog.events.EventType.CLICK, - this.handleZoomToExtent_, false, this); + this.handleClick_, false, this); goog.events.listen(button, [ goog.events.EventType.MOUSEOUT, @@ -71,16 +71,31 @@ goog.inherits(ol.control.ZoomToExtent, ol.control.Control); /** - * @param {ol.pointer.PointerEvent} pointerEvent Pointer event. + * @param {goog.events.BrowserEvent} event The event to handle * @private */ -ol.control.ZoomToExtent.prototype.handleZoomToExtent_ = function(pointerEvent) { - if (goog.isDef(pointerEvent.browserEvent)) { - pointerEvent.browserEvent.preventDefault(); - } else if (pointerEvent.screenX !== 0 && pointerEvent.screenY !== 0) { +ol.control.ZoomToExtent.prototype.handleClick_ = function(event) { + if (event.screenX !== 0 && event.screenY !== 0) { return; } - // prevent #zoomExtent anchor from getting appended to the url + this.handleZoomToExtent_(); +}; + + +/** + * @param {ol.pointer.PointerEvent} pointerEvent The event to handle + * @private + */ +ol.control.ZoomToExtent.prototype.handlePointerUp_ = function(pointerEvent) { + pointerEvent.browserEvent.preventDefault(); + this.handleZoomToExtent_(); +}; + + +/** + * @private + */ +ol.control.ZoomToExtent.prototype.handleZoomToExtent_ = function() { var map = this.getMap(); var view = map.getView(); goog.asserts.assert(goog.isDef(view));