diff options
| author | Alex Yatskov <FooSoft@users.noreply.github.com> | 2019-09-30 19:53:45 -0700 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-09-30 19:53:45 -0700 | 
| commit | 00d16433e705b916d4e078244b213cede8bff5bb (patch) | |
| tree | f9e7c3fc6dea6f761288a53bf31cc06fe6567978 | |
| parent | eadd03624c6630ce83ba89dc26d52a94c5c23a75 (diff) | |
| parent | 25a4dafd73890a8181bd072d0b514ec9668ecfea (diff) | |
Merge pull request #228 from toasted-nutbread/fix-tab-focus-changing
Fix tab focus being changed due to settings changes
| -rw-r--r-- | ext/fg/js/frontend.js | 14 | ||||
| -rw-r--r-- | ext/fg/js/popup-proxy-host.js | 6 | ||||
| -rw-r--r-- | ext/fg/js/popup-proxy.js | 4 | ||||
| -rw-r--r-- | ext/fg/js/popup.js | 21 | 
4 files changed, 25 insertions, 20 deletions
| diff --git a/ext/fg/js/frontend.js b/ext/fg/js/frontend.js index 167e82c0..d5bb00c0 100644 --- a/ext/fg/js/frontend.js +++ b/ext/fg/js/frontend.js @@ -128,7 +128,7 @@ class Frontend {          }          this.popupTimerClear(); -        this.searchClear(); +        this.searchClear(true);      }      onMouseOut(e) { @@ -138,7 +138,7 @@ class Frontend {      onFrameMessage(e) {          const handlers = {              popupClose: () => { -                this.searchClear(); +                this.searchClear(true);              },              selectionCopy: () => { @@ -153,7 +153,7 @@ class Frontend {      }      onResize() { -        this.searchClear(); +        this.searchClear(true);      }      onClick(e) { @@ -265,7 +265,7 @@ class Frontend {      async updateOptions() {          this.options = await apiOptionsGet(this.getOptionsContext());          if (!this.options.enable) { -            this.searchClear(); +            this.searchClear(false);          }      } @@ -320,7 +320,7 @@ class Frontend {                  textSource.cleanup();              }              if (hideResults && this.options.scanning.autoHideResults) { -                this.searchClear(); +                this.searchClear(true);              }              this.pendingLookup = false; @@ -392,8 +392,8 @@ class Frontend {          return true;      } -    searchClear() { -        this.popup.hide(); +    searchClear(changeFocus) { +        this.popup.hide(changeFocus);          this.popup.clearAutoPlayTimer();          if (this.options.scanning.selectText && this.textSourceLast) { diff --git a/ext/fg/js/popup-proxy-host.js b/ext/fg/js/popup-proxy-host.js index 396f7556..cb9741be 100644 --- a/ext/fg/js/popup-proxy-host.js +++ b/ext/fg/js/popup-proxy-host.js @@ -40,7 +40,7 @@ class PopupProxyHost {              createNestedPopup: ({parentId}) => this.createNestedPopup(parentId),              show: ({id, elementRect, options}) => this.show(id, elementRect, options),              showOrphaned: ({id, elementRect, options}) => this.show(id, elementRect, options), -            hide: ({id}) => this.hide(id), +            hide: ({id, changeFocus}) => this.hide(id, changeFocus),              setVisible: ({id, visible}) => this.setVisible(id, visible),              containsPoint: ({id, x, y}) => this.containsPoint(id, x, y),              termsShow: ({id, elementRect, writingMode, definitions, options, context}) => this.termsShow(id, elementRect, writingMode, definitions, options, context), @@ -98,9 +98,9 @@ class PopupProxyHost {          return await popup.showOrphaned(elementRect, options);      } -    async hide(id) { +    async hide(id, changeFocus) {          const popup = this.getPopup(id); -        return popup.hide(); +        return popup.hide(changeFocus);      }      async setVisible(id, visible) { diff --git a/ext/fg/js/popup-proxy.js b/ext/fg/js/popup-proxy.js index 235e1730..072cebc9 100644 --- a/ext/fg/js/popup-proxy.js +++ b/ext/fg/js/popup-proxy.js @@ -58,11 +58,11 @@ class PopupProxy {          return await this.invokeHostApi('showOrphaned', {id, elementRect, options});      } -    async hide() { +    async hide(changeFocus) {          if (this.id === null) {              return;          } -        return await this.invokeHostApi('hide', {id: this.id}); +        return await this.invokeHostApi('hide', {id: this.id, changeFocus});      }      async setVisible(visible) { diff --git a/ext/fg/js/popup.js b/ext/fg/js/popup.js index 08965084..64da9aef 100644 --- a/ext/fg/js/popup.js +++ b/ext/fg/js/popup.js @@ -105,7 +105,7 @@ class Popup {          container.style.height = `${height}px`;          container.style.visibility = 'visible'; -        this.hideChildren(); +        this.hideChildren(true);      }      static getPositionForHorizontalText(elementRect, width, height, maxWidth, maxHeight, optionsGeneral) { @@ -206,16 +206,21 @@ class Popup {          this.invokeApi('orphaned');      } -    hide() { -        this.hideChildren(); +    hide(changeFocus) { +        if (this.isContainerHidden()) { +            changeFocus = false; +        } +        this.hideChildren(changeFocus);          this.hideContainer(); -        this.focusParent(); +        if (changeFocus) { +            this.focusParent(); +        }      } -    hideChildren() { -        // recursively hides all children -        if (this.child && !this.child.isContainerHidden()) { -            this.child.hide(); +    hideChildren(changeFocus) { +        // Recursively hides all children. +        if (this.child !== null && !this.child.isContainerHidden()) { +            this.child.hide(changeFocus);          }      } |