diff options
Diffstat (limited to 'ext/fg/js')
| -rw-r--r-- | ext/fg/js/popup.js | 49 | 
1 files changed, 24 insertions, 25 deletions
| diff --git a/ext/fg/js/popup.js b/ext/fg/js/popup.js index 5509c98c..9ca91afa 100644 --- a/ext/fg/js/popup.js +++ b/ext/fg/js/popup.js @@ -34,6 +34,9 @@ class Popup {          this.container.style.height = '0px';          this.injectPromise = null;          this.isInjected = false; +        this.visible = false; +        this.visibleOverride = null; +        this.updateVisibility();      }      inject(options) { @@ -105,9 +108,11 @@ class Popup {          container.style.top = `${y}px`;          container.style.width = `${width}px`;          container.style.height = `${height}px`; -        container.style.visibility = 'visible'; -        this.hideChildren(true); +        this.setVisible(true); +        if (this.child !== null) { +            this.child.hide(true); +        }      }      static getPositionForHorizontalText(elementRect, width, height, maxWidth, maxHeight, optionsGeneral) { @@ -209,41 +214,35 @@ class Popup {      }      hide(changeFocus) { -        if (this.isContainerHidden()) { -            changeFocus = false; +        if (!this.isVisible()) { +            return; +        } + +        this.setVisible(false); +        if (this.child !== null) { +            this.child.hide(false);          } -        this.hideChildren(changeFocus); -        this.hideContainer();          if (changeFocus) {              this.focusParent();          }      } -    hideChildren(changeFocus) { -        // Recursively hides all children. -        if (this.child !== null && !this.child.isContainerHidden()) { -            this.child.hide(changeFocus); -        } -    } - -    hideContainer() { -        this.container.style.visibility = 'hidden'; +    isVisible() { +        return this.isInjected && (this.visibleOverride !== null ? this.visibleOverride : this.visible);      } -    isContainerHidden() { -        return (this.container.style.visibility === 'hidden'); +    setVisible(visible) { +        this.visible = visible; +        this.updateVisibility();      } -    isVisible() { -        return this.isInjected && this.container.style.visibility !== 'hidden'; +    setVisibleOverride(visible) { +        this.visibleOverride = visible; +        this.updateVisibility();      } -    setVisibleOverride(visible) { -        if (visible) { -            this.container.style.setProperty('display', ''); -        } else { -            this.container.style.setProperty('display', 'none', 'important'); -        } +    updateVisibility() { +        this.container.style.setProperty('visibility', this.isVisible() ? 'visible' : 'hidden', 'important');      }      focusParent() { |