From 9536ba8e147a160019714688b7ae762c70698b82 Mon Sep 17 00:00:00 2001 From: ahocevar Date: Thu, 27 Sep 2012 17:08:48 +0200 Subject: [PATCH] Common place to store browser features The ol.BrowserFeature object is supposed to provide all detected browser features in a central place. --- src/ol/browserfeature.js | 10 ++++++++++ src/ol/mapbrowserevent.js | 23 +++++++++-------------- 2 files changed, 19 insertions(+), 14 deletions(-) create mode 100644 src/ol/browserfeature.js diff --git a/src/ol/browserfeature.js b/src/ol/browserfeature.js new file mode 100644 index 0000000000..515a860a4f --- /dev/null +++ b/src/ol/browserfeature.js @@ -0,0 +1,10 @@ +goog.provide('ol.BrowserFeature'); + + +/** + * @type {Object} + */ +ol.BrowserFeature = { + // Do we have touch events? + HAS_TOUCH: document && 'ontouchstart' in document.documentElement +}; diff --git a/src/ol/mapbrowserevent.js b/src/ol/mapbrowserevent.js index 73257fce86..e4c56637b2 100644 --- a/src/ol/mapbrowserevent.js +++ b/src/ol/mapbrowserevent.js @@ -7,6 +7,7 @@ goog.require('goog.events.BrowserEvent'); goog.require('goog.events.EventTarget'); goog.require('goog.events.EventType'); goog.require('goog.style'); +goog.require('ol.BrowserFeature'); goog.require('ol.Coordinate'); goog.require('ol.MapEvent'); goog.require('ol.Pixel'); @@ -63,7 +64,7 @@ ol.MapBrowserEvent.prototype.getCoordinate = function() { */ ol.MapBrowserEvent.prototype.isMouseActionButton = function() { // always assume a left-click on touch devices - return ('ontouchstart' in document.documentElement) || + return ol.BrowserFeature.HAS_TOUCH || this.browserEvent.isMouseActionButton(); }; @@ -113,20 +114,14 @@ ol.MapBrowserEventHandler = function(map) { */ this.down_ = null; - /** - * @type {boolean} - * @private - */ - this.isTouch_ = document && ('ontouchstart' in document.documentElement); - var element = this.map_.getViewport(); goog.events.listen(element, - this.isTouch_ ? + ol.BrowserFeature.HAS_TOUCH ? goog.events.EventType.TOUCHSTART : goog.events.EventType.MOUSEDOWN, this.dragstart_, false, this); goog.events.listen(element, - this.isTouch_ ? + ol.BrowserFeature.HAS_TOUCH ? goog.events.EventType.TOUCHEND : goog.events.EventType.MOUSEUP, this.dblclick_, false, this); @@ -142,7 +137,7 @@ goog.inherits(ol.MapBrowserEventHandler, goog.events.EventTarget); */ ol.MapBrowserEventHandler.prototype.touchEnableBrowserEvent_ = function(browserEvent) { - if (this.isTouch_) { + if (ol.BrowserFeature.HAS_TOUCH) { goog.asserts.assert(browserEvent instanceof goog.events.BrowserEvent); var nativeEvent = browserEvent.getBrowserEvent(); if (nativeEvent.touches && nativeEvent.touches.length) { @@ -205,12 +200,12 @@ ol.MapBrowserEventHandler.prototype.dragstart_ = function(browserEvent) { this.dragged_ = false; this.dragListenerKeys_ = [ goog.events.listen(document, - this.isTouch_ ? + ol.BrowserFeature.HAS_TOUCH ? goog.events.EventType.TOUCHMOVE : goog.events.EventType.MOUSEMOVE, this.drag_, false, this), goog.events.listen(document, - this.isTouch_ ? + ol.BrowserFeature.HAS_TOUCH ? goog.events.EventType.TOUCHEND : goog.events.EventType.MOUSEUP, this.dragend_, false, this) @@ -266,12 +261,12 @@ ol.MapBrowserEventHandler.prototype.dragend_ = function(browserEvent) { ol.MapBrowserEventHandler.prototype.disposeInternal = function() { var element = this.map_.getViewport(); goog.events.unlisten(element, - this.isTouch_ ? + ol.BrowserFeature.HAS_TOUCH ? goog.events.EventType.TOUCHSTART : goog.events.EventType.MOUSEDOWN, this.dragstart_, false, this); goog.events.unlisten(element, - this.isTouch_ ? + ol.BrowserFeature.HAS_TOUCH ? goog.events.EventType.TOUCHEND : goog.events.EventType.MOUSEUP, this.dblclick_, false, this);