diff options
| -rw-r--r-- | ext/mixed/js/display.js | 104 | 
1 files changed, 50 insertions, 54 deletions
| diff --git a/ext/mixed/js/display.js b/ext/mixed/js/display.js index 40febadc..ab0f59a5 100644 --- a/ext/mixed/js/display.js +++ b/ext/mixed/js/display.js @@ -521,78 +521,74 @@ class Display extends EventDispatcher {      _onGlossaryMouseUp(e) {          if (!this._clickScanPrevent && DOM.isMouseButtonPressed(e, 'primary')) { -            this._onTermLookup(e); +            try { +                this._onTermLookup(e); +            } catch (error) { +                this.onError(error); +            }          }      }      async _onTermLookup(e) { -        try { -            if (!this._historyHasState()) { return; } +        if (!this._historyHasState()) { return; } -            const termLookupResults = await this._termLookup(e); -            if (!termLookupResults || !this._historyHasState()) { return; } +        const termLookupResults = await this._termLookup(e); +        if (!termLookupResults || !this._historyHasState()) { return; } -            const {state} = this._history; -            const {textSource, definitions} = termLookupResults; +        const {state} = this._history; +        const {textSource, definitions} = termLookupResults; -            const scannedElement = e.target; -            const sentenceExtent = this._options.anki.sentenceExt; -            const layoutAwareScan = this._options.scanning.layoutAwareScan; -            const sentence = docSentenceExtract(textSource, sentenceExtent, layoutAwareScan); +        const scannedElement = e.target; +        const sentenceExtent = this._options.anki.sentenceExt; +        const layoutAwareScan = this._options.scanning.layoutAwareScan; +        const sentence = docSentenceExtract(textSource, sentenceExtent, layoutAwareScan); -            state.focusEntry = this._entryIndexFind(scannedElement); -            state.scrollX = this._windowScroll.x; -            state.scrollY = this._windowScroll.y; -            this._historyStateUpdate(state); +        state.focusEntry = this._entryIndexFind(scannedElement); +        state.scrollX = this._windowScroll.x; +        state.scrollY = this._windowScroll.y; +        this._historyStateUpdate(state); -            const query = textSource.text(); -            const details = { -                focus: false, -                history: true, -                params: this._createSearchParams('terms', query, false), -                state: { -                    focusEntry: 0, -                    sentence, -                    url: state.url -                }, -                content: { -                    definitions -                } -            }; -            this.setContent(details); -        } catch (error) { -            this.onError(error); -        } +        const query = textSource.text(); +        const details = { +            focus: false, +            history: true, +            params: this._createSearchParams('terms', query, false), +            state: { +                focusEntry: 0, +                sentence, +                url: state.url +            }, +            content: { +                definitions +            } +        }; +        this.setContent(details);      }      async _termLookup(e) { -        try { -            e.preventDefault(); - -            const {length: scanLength, deepDomScan: deepScan, layoutAwareScan} = this._options.scanning; -            const textSource = docRangeFromPoint(e.clientX, e.clientY, deepScan); -            if (textSource === null) { -                return false; -            } +        e.preventDefault(); -            let definitions, length; -            try { -                textSource.setEndOffset(scanLength, layoutAwareScan); +        const {length: scanLength, deepDomScan: deepScan, layoutAwareScan} = this._options.scanning; +        const textSource = docRangeFromPoint(e.clientX, e.clientY, deepScan); +        if (textSource === null) { +            return false; +        } -                ({definitions, length} = await api.termsFind(textSource.text(), {}, this.getOptionsContext())); -                if (definitions.length === 0) { -                    return false; -                } +        let definitions, length; +        try { +            textSource.setEndOffset(scanLength, layoutAwareScan); -                textSource.setEndOffset(length, layoutAwareScan); -            } finally { -                textSource.cleanup(); +            ({definitions, length} = await api.termsFind(textSource.text(), {}, this.getOptionsContext())); +            if (definitions.length === 0) { +                return false;              } -            return {textSource, definitions}; -        } catch (error) { -            this.onError(error); +            textSource.setEndOffset(length, layoutAwareScan); +        } finally { +            textSource.cleanup();          } + +        return {textSource, definitions};      }      _onAudioPlay(e) { |