Merge pull request #160 from fredj/dblclick-unlisten

Remove event listener cleanups
This commit is contained in:
Frédéric Junod
2013-01-28 04:19:24 -08:00
+16 -15
View File
@@ -117,6 +117,18 @@ ol.MapBrowserEventHandler = function(map) {
*/ */
this.timestamp_ = 0; this.timestamp_ = 0;
/**
* @type {?number}
* @private
*/
this.clickListenerKey_ = null;
/**
* @type {?number}
* @private
*/
this.downListenerKey_ = null;
/** /**
* @type {Array.<number>} * @type {Array.<number>}
* @private * @private
@@ -131,11 +143,11 @@ ol.MapBrowserEventHandler = function(map) {
var element = this.map_.getViewport(); var element = this.map_.getViewport();
if (!ol.BrowserFeature.HAS_TOUCH) { if (!ol.BrowserFeature.HAS_TOUCH) {
goog.events.listen(element, this.clickListenerKey_ = goog.events.listen(element,
[goog.events.EventType.CLICK, goog.events.EventType.DBLCLICK], [goog.events.EventType.CLICK, goog.events.EventType.DBLCLICK],
this.click_, false, this); this.click_, false, this);
} }
goog.events.listen(element, this.downListenerKey_ = goog.events.listen(element,
ol.BrowserFeature.HAS_TOUCH ? ol.BrowserFeature.HAS_TOUCH ?
goog.events.EventType.TOUCHSTART : goog.events.EventType.TOUCHSTART :
goog.events.EventType.MOUSEDOWN, goog.events.EventType.MOUSEDOWN,
@@ -275,19 +287,8 @@ ol.MapBrowserEventHandler.prototype.drag_ = function(browserEvent) {
* FIXME empty description for jsdoc * FIXME empty description for jsdoc
*/ */
ol.MapBrowserEventHandler.prototype.disposeInternal = function() { ol.MapBrowserEventHandler.prototype.disposeInternal = function() {
var element = this.map_.getViewport(); goog.events.unlistenByKey(this.clickListenerKey_);
goog.events.unlisten(element, goog.events.unlistenByKey(this.downListenerKey_);
ol.BrowserFeature.HAS_TOUCH ?
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.unlisten(element,
goog.events.EventType.CLICK, this.click_, false, this);
if (!goog.isNull(this.dragListenerKeys_)) { if (!goog.isNull(this.dragListenerKeys_)) {
goog.array.forEach(this.dragListenerKeys_, goog.events.unlistenByKey); goog.array.forEach(this.dragListenerKeys_, goog.events.unlistenByKey);
this.dragListenerKeys_ = null; this.dragListenerKeys_ = null;