From 47400489609c5834e9e57a1d64de48d0ced682b5 Mon Sep 17 00:00:00 2001 From: Norbert Renner Date: Thu, 28 Jun 2018 16:43:30 +0200 Subject: [PATCH] Fix reopened tooltip getting closed by timer Cases: - enabled tooltip gets closed after disable + re-enable - disabled tooltip gets closed after create + re-hover Superfluous clearTimeout calls in the regular case after timeout have no effect. --- js/plugin/NogoAreas.js | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/js/plugin/NogoAreas.js b/js/plugin/NogoAreas.js index 5c86455..2db2c70 100644 --- a/js/plugin/NogoAreas.js +++ b/js/plugin/NogoAreas.js @@ -263,15 +263,24 @@ BR.EditingTooltip = L.Handler.extend({ } }, + _setCloseTimeout: function(layer) { + var timeoutId = setTimeout(function () { + layer.closeTooltip(); + }, this.options.closeTimeout); + + // prevent timer to close tooltip that changed in the meantime + layer.once('tooltipopen', function (e) { + clearTimeout(timeoutId); + }); + }, + _postCreate: function () { // editing is disabled by another handler, tooltip won't stay open before this.editTools.once('editable:disable', function (e) { // show for a few seconds, as mouse often not hovering circle after create e.layer.openTooltip(e.layer); - setTimeout(function () { - e.layer.closeTooltip(); - }, this.options.closeTimeout); + this._setCloseTimeout(e.layer); }, this); }, @@ -285,10 +294,7 @@ BR.EditingTooltip = L.Handler.extend({ _disable: function (e) { e.layer.setTooltipContent(BR.NogoAreas.MSG_DISABLED); - - setTimeout(function () { - e.layer.closeTooltip(); - }, this.options.closeTimeout); + this._setCloseTimeout(e.layer); } });