From ec679cb04562d30746ac210cffc32ab8c2b7f8fa Mon Sep 17 00:00:00 2001
From: Daniel Carl <danielcarl@gmx.de>
Date: Wed, 21 Jun 2017 22:43:34 +0200
Subject: [PATCH] Remove event observers in clear().

---
 src/hints.c          |  2 +-
 src/scripts/hints.js | 24 +++++++++++-------------
 2 files changed, 12 insertions(+), 14 deletions(-)

diff --git a/src/hints.c b/src/hints.c
index 6046706..13ca0af 100644
--- a/src/hints.c
+++ b/src/hints.c
@@ -87,7 +87,7 @@ void hints_clear(Client *c)
         c->mode->flags &= ~FLAG_HINTING;
         vb_input_set_text(c, "");
 
-        call_hints_function(c, "clear", "");
+        call_hints_function(c, "clear", "true");
 
         /* if open window was not allowed for JavaScript, restore this */
         if (!hints.allow_open_win) {
diff --git a/src/scripts/hints.js b/src/scripts/hints.js
index 6f5b6f5..0bdc71b 100644
--- a/src/scripts/hints.js
+++ b/src/scripts/hints.js
@@ -49,13 +49,17 @@ var hints = Object.freeze((function(){
     }
 
     function onresize() {
-        clear();
+        clear(false);
         create();
         show(false);
     }
 
-    function clear() {
-        var i, j, doc, e;
+    function clear(removeListener) {
+        var i, j, doc, e, w = window;
+        if (removeListener && w) {
+            w.removeEventListener("resize", onresize, true);
+            w.removeEventListener("scroll", onresize, false);
+        }
         for (i = 0; i < docs.length; i++) {
             doc = docs[i];
             /* find all hinted elements vimbhint 'hint' */
@@ -378,7 +382,7 @@ var hints = Object.freeze((function(){
             filterKeys = "";
             show(false);
         } else {
-            clear();
+            clear(true);
         }
 
         return res || config.action(e);
@@ -536,14 +540,8 @@ var hints = Object.freeze((function(){
             }
             return "ERROR:";
         },
-        clear: function() {
-            clear();
-            if (window) {
-                window.removeEventListener("resize", onresize, true);
-                window.removeEventListener("scroll", onresize, false);
-            }
-        },
-        fire:         fire,
-        focus:        focus,
+        clear: clear,
+        fire:  fire,
+        focus: focus,
     };
 })());
-- 
2.20.1