summaryrefslogtreecommitdiff
path: root/ext/fg/js
diff options
context:
space:
mode:
Diffstat (limited to 'ext/fg/js')
-rw-r--r--ext/fg/js/popup.js49
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() {