From edbb8086bc834b837268d10a54371a0247d99827 Mon Sep 17 00:00:00 2001 From: Alex Yatskov Date: Thu, 7 Apr 2016 20:51:05 -0700 Subject: [PATCH] Optimization --- ext/fg/js/client.js | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/ext/fg/js/client.js b/ext/fg/js/client.js index d5ad0c2f..56d43c3e 100644 --- a/ext/fg/js/client.js +++ b/ext/fg/js/client.js @@ -19,8 +19,9 @@ class Client { constructor() { - this.popupOffset = 10; this.lastMosePos = null; + this.popupText = ''; + this.popupOffset = 10; this.enabled = false; this.options = null; @@ -93,7 +94,12 @@ class Client { return; } - findTerm(range.toString(), ({results, length}) => { + const text = range.toString(); + if (text === this.popupText) { + return; + } + + findTerm(text, ({results, length}) => { if (length === 0) { this.hidePopup(); } else { @@ -113,17 +119,22 @@ class Client { const pos = getPopupPositionForRange(this.popup, range, this.popupOffset); + this.popupText = range.toString(); this.popup.style.left = pos.x + 'px'; this.popup.style.top = pos.y + 'px'; this.popup.style.visibility = 'visible'; } hidePopup() { - if (this.popup.style.visibility !== 'hidden') { - const selection = window.getSelection(); - selection.removeAllRanges(); - this.popup.style.visibility = 'hidden'; + if (this.popup.style.visibility === 'hidden') { + return; } + + const selection = window.getSelection(); + selection.removeAllRanges(); + + this.popupText = ''; + this.popup.style.visibility = 'hidden'; } setEnabled(enabled) {