diff --git a/src/ol/Map.js b/src/ol/Map.js index b5dcb76676..dea0e0a8d3 100644 --- a/src/ol/Map.js +++ b/src/ol/Map.js @@ -13,6 +13,15 @@ goog.require('goog.math'); goog.require('goog.asserts'); goog.require('goog.events.EventTarget'); +/** + * @define {boolean} Whether to enable the drag handler. + */ +ol.ENABLE_DRAG_HANDLER = true; + +/** + * @define {boolean} Whether to enable the mousewheel handler. + */ +ol.ENABLE_MOUSEWHEEL_HANDLER = true; /** * @export @@ -509,14 +518,19 @@ ol.Map.prototype.setViewport = function() { ol.Map.prototype.initHandlers = function() { goog.asserts.assert(!goog.isNull(this.viewport_)); - var dragHandler = new ol.handler.Drag(this, this.viewport_); - this.registerDisposable(dragHandler); + var handler, + states = {}; - var mouseWheelHandler = new ol.handler.MouseWheel(this, this.viewport_); - this.registerDisposable(mouseWheelHandler); + if (ol.ENABLE_DRAG_HANDLER) { + handler = new ol.handler.Drag(this, this.viewport_, states); + this.registerDisposable(handler); + } + if (ol.ENABLE_MOUSEWHEEL_HANDLER) { + handler = new ol.handler.MouseWheel(this, this.viewport_, states); + this.registerDisposable(handler); + } }; - ol.Map.prototype.createRenderer = function() { var Renderer = ol.renderer.MapRenderer.pickRendererType( ol.Map.preferredRenderers); diff --git a/src/ol/handler/Drag.js b/src/ol/handler/Drag.js index 233f8eb065..19a10ada16 100644 --- a/src/ol/handler/Drag.js +++ b/src/ol/handler/Drag.js @@ -19,8 +19,9 @@ goog.require('goog.fx.Dragger'); * @extends {goog.Disposable} * @param {ol.Map} map The map instance. * @param {Element} elt The element that will be dragged. + * @param {Object} states An object for the handlers to share states. */ -ol.handler.Drag = function(map, elt) { +ol.handler.Drag = function(map, elt, states) { /** */ this.map_ = map; @@ -28,8 +29,11 @@ ol.handler.Drag = function(map, elt) { /** */ this.elt_ = elt; - /** */ - var dragger = this.dragger_ = new goog.fx.Dragger(elt); + /** + * @type {Object} + */ + this.states_ = states; + dragger.defaultAction = function() {}; /** */ @@ -65,7 +69,7 @@ ol.handler.Drag.prototype.disposeInternal = function() { /** */ ol.handler.Drag.prototype.handleDragStart = function(e) { - this.dragged_ = false; + this.states_.dragged = false; this.prevX_ = e.clientX; this.prevY_ = e.clientY; var newE = { @@ -84,7 +88,7 @@ ol.handler.Drag.prototype.handleDragStart = function(e) { /** */ ol.handler.Drag.prototype.handleDrag = function(e) { - this.dragged_ = true; + this.states_.dragged = true; var newE = { type: 'drag', deltaX: e.clientX - this.prevX_, diff --git a/src/ol/handler/MouseWheel.js b/src/ol/handler/MouseWheel.js index 50d293e33a..41b2726c51 100644 --- a/src/ol/handler/MouseWheel.js +++ b/src/ol/handler/MouseWheel.js @@ -18,8 +18,9 @@ goog.require('goog.events.MouseWheelHandler'); * @extends {goog.Disposable} * @param {ol.Map} map The map instance. * @param {Element} elt The element we listen to mousewheel on. + * @param {Object} states An object for the handlers to share states. */ -ol.handler.MouseWheel = function(map, elt) { +ol.handler.MouseWheel = function(map, elt, states) { goog.base(this); var handler = new goog.events.MouseWheelHandler(elt); diff --git a/test/spec/ol/handler/Drag.test.js b/test/spec/ol/handler/Drag.test.js index 18b5e32117..3b82a92463 100644 --- a/test/spec/ol/handler/Drag.test.js +++ b/test/spec/ol/handler/Drag.test.js @@ -9,7 +9,7 @@ describe('ol.handler.Drag', function() { describe('create a drag handler', function() { it('returns an ol.handler.Drag instance', function() { - var handler = new ol.handler.Drag(map, elt); + var handler = new ol.handler.Drag(map, elt, {}); expect(handler).toBeA(ol.handler.Drag); }); diff --git a/test/spec/ol/handler/MouseWheel.test.js b/test/spec/ol/handler/MouseWheel.test.js index 5135bfbc0f..9baebd9d24 100644 --- a/test/spec/ol/handler/MouseWheel.test.js +++ b/test/spec/ol/handler/MouseWheel.test.js @@ -9,7 +9,7 @@ describe('ol.handler.MouseWheel', function() { describe('create a mouse wheel handler', function() { it('returns an ol.handler.MouseWheel instance', function() { - var handler = new ol.handler.MouseWheel(map, elt); + var handler = new ol.handler.MouseWheel(map, elt, {}); expect(handler).toBeA(ol.handler.MouseWheel); });