From f208e99c647fb7804e88e3942f3ed56b7031d6c6 Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Fri, 25 Jan 2013 10:34:26 +0100 Subject: [PATCH 1/4] Add missing goog.events.EventType.DBLCLICK argument to unlisten --- src/ol/mapbrowserevent.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ol/mapbrowserevent.js b/src/ol/mapbrowserevent.js index 17defe5f20..6690d68e9d 100644 --- a/src/ol/mapbrowserevent.js +++ b/src/ol/mapbrowserevent.js @@ -287,7 +287,8 @@ ol.MapBrowserEventHandler.prototype.disposeInternal = function() { goog.events.EventType.MOUSEUP, this.handleUp_, false, this); goog.events.unlisten(element, - goog.events.EventType.CLICK, this.click_, false, this); + [goog.events.EventType.CLICK, goog.events.EventType.DBLCLICK], + this.click_, false, this); if (!goog.isNull(this.dragListenerKeys_)) { goog.array.forEach(this.dragListenerKeys_, goog.events.unlistenByKey); this.dragListenerKeys_ = null; From 01098c4d8c7d801d969c66296656b390af35ab3f Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Mon, 28 Jan 2013 10:26:09 +0100 Subject: [PATCH 2/4] Remove event listener with goog.events.unlistenByKey --- src/ol/mapbrowserevent.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/ol/mapbrowserevent.js b/src/ol/mapbrowserevent.js index 6690d68e9d..d32200fe5f 100644 --- a/src/ol/mapbrowserevent.js +++ b/src/ol/mapbrowserevent.js @@ -117,6 +117,12 @@ ol.MapBrowserEventHandler = function(map) { */ this.timestamp_ = 0; + /** + * @type {?number} + * @private + */ + this.clickListenerKey_ = null; + /** * @type {Array.} * @private @@ -131,7 +137,7 @@ ol.MapBrowserEventHandler = function(map) { var element = this.map_.getViewport(); if (!ol.BrowserFeature.HAS_TOUCH) { - goog.events.listen(element, + this.clickListenerKey_ = goog.events.listen(element, [goog.events.EventType.CLICK, goog.events.EventType.DBLCLICK], this.click_, false, this); } @@ -286,9 +292,7 @@ ol.MapBrowserEventHandler.prototype.disposeInternal = function() { goog.events.EventType.TOUCHEND : goog.events.EventType.MOUSEUP, this.handleUp_, false, this); - goog.events.unlisten(element, - [goog.events.EventType.CLICK, goog.events.EventType.DBLCLICK], - this.click_, false, this); + goog.events.unlistenByKey(this.clickListenerKey_); if (!goog.isNull(this.dragListenerKeys_)) { goog.array.forEach(this.dragListenerKeys_, goog.events.unlistenByKey); this.dragListenerKeys_ = null; From 9e030854b27e8278ee9f4242310bbb7ca15c28de Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Mon, 28 Jan 2013 10:31:24 +0100 Subject: [PATCH 3/4] Don't remove event listener for this.handleUp_ twice. The listener key is in this.dragListenerKeys_ --- src/ol/mapbrowserevent.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/ol/mapbrowserevent.js b/src/ol/mapbrowserevent.js index d32200fe5f..aa695f810b 100644 --- a/src/ol/mapbrowserevent.js +++ b/src/ol/mapbrowserevent.js @@ -287,11 +287,6 @@ ol.MapBrowserEventHandler.prototype.disposeInternal = function() { goog.events.EventType.TOUCHSTART : goog.events.EventType.MOUSEDOWN, this.handleDown_, false, this); - goog.events.unlisten(element, - ol.BrowserFeature.HAS_TOUCH ? - goog.events.EventType.TOUCHEND : - goog.events.EventType.MOUSEUP, - this.handleUp_, false, this); goog.events.unlistenByKey(this.clickListenerKey_); if (!goog.isNull(this.dragListenerKeys_)) { goog.array.forEach(this.dragListenerKeys_, goog.events.unlistenByKey); From f8646394ae60a569d26b1ffd2aaf4e33a864e593 Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Mon, 28 Jan 2013 10:37:32 +0100 Subject: [PATCH 4/4] Remove event listener with goog.events.unlistenByKey --- src/ol/mapbrowserevent.js | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/ol/mapbrowserevent.js b/src/ol/mapbrowserevent.js index aa695f810b..cdb40d3e66 100644 --- a/src/ol/mapbrowserevent.js +++ b/src/ol/mapbrowserevent.js @@ -123,6 +123,12 @@ ol.MapBrowserEventHandler = function(map) { */ this.clickListenerKey_ = null; + /** + * @type {?number} + * @private + */ + this.downListenerKey_ = null; + /** * @type {Array.} * @private @@ -141,7 +147,7 @@ ol.MapBrowserEventHandler = function(map) { [goog.events.EventType.CLICK, goog.events.EventType.DBLCLICK], this.click_, false, this); } - goog.events.listen(element, + this.downListenerKey_ = goog.events.listen(element, ol.BrowserFeature.HAS_TOUCH ? goog.events.EventType.TOUCHSTART : goog.events.EventType.MOUSEDOWN, @@ -281,13 +287,8 @@ ol.MapBrowserEventHandler.prototype.drag_ = function(browserEvent) { * FIXME empty description for jsdoc */ ol.MapBrowserEventHandler.prototype.disposeInternal = function() { - var element = this.map_.getViewport(); - goog.events.unlisten(element, - ol.BrowserFeature.HAS_TOUCH ? - goog.events.EventType.TOUCHSTART : - goog.events.EventType.MOUSEDOWN, - this.handleDown_, false, this); goog.events.unlistenByKey(this.clickListenerKey_); + goog.events.unlistenByKey(this.downListenerKey_); if (!goog.isNull(this.dragListenerKeys_)) { goog.array.forEach(this.dragListenerKeys_, goog.events.unlistenByKey); this.dragListenerKeys_ = null;