From 1184320e3e0863c86238a68bc90dc77b3355e332 Mon Sep 17 00:00:00 2001 From: toasted-nutbread Date: Sun, 2 Aug 2020 18:59:35 -0400 Subject: Button and image scanning (#705) * Update TextSourceElement.equals check to match TextSourceRange.equals * Force full query to be visible when scanning buttons or images with more text * Update style of query parser --- ext/fg/js/frontend.js | 43 +++++++++++++++++++++++-------------------- ext/fg/js/source.js | 11 +++++++++-- 2 files changed, 32 insertions(+), 22 deletions(-) (limited to 'ext/fg/js') diff --git a/ext/fg/js/frontend.js b/ext/fg/js/frontend.js index 7bc104a7..685dbd28 100644 --- a/ext/fg/js/frontend.js +++ b/ext/fg/js/frontend.js @@ -20,6 +20,7 @@ * FrameOffsetForwarder * PopupProxy * TextScanner + * TextSourceElement * api * docSentenceExtract */ @@ -423,27 +424,29 @@ class Frontend { const sentenceExtent = this._options.anki.sentenceExt; const layoutAwareScan = this._options.scanning.layoutAwareScan; const sentence = docSentenceExtract(textSource, sentenceExtent, layoutAwareScan); - this._showPopupContent( - textSource, - optionsContext, - { - focus, - history: false, - params: { - type, - query: textSource.text(), - wildcards: 'off' - }, - state: { - focusEntry: 0, - sentence, - url - }, - content: { - definitions - } + const query = textSource.text(); + const details = { + focus, + history: false, + params: { + type, + query, + wildcards: 'off' + }, + state: { + focusEntry: 0, + sentence, + url + }, + content: { + definitions } - ); + }; + if (textSource instanceof TextSourceElement && textSource.fullContent !== query) { + details.params.full = textSource.fullContent; + details.params['full-visible'] = 'true'; + } + this._showPopupContent(textSource, optionsContext, details); } _showPopupContent(textSource, optionsContext, details=null) { diff --git a/ext/fg/js/source.js b/ext/fg/js/source.js index 38810f07..70f14179 100644 --- a/ext/fg/js/source.js +++ b/ext/fg/js/source.js @@ -32,6 +32,14 @@ class TextSourceRange { this.imposterSourceElement = imposterSourceElement; } + get startOffset() { + return this.range.startOffset; + } + + get endOffset() { + return this.range.endOffset; + } + clone() { return new TextSourceRange(this.range.cloneRange(), this.content, this.imposterContainer, this.imposterSourceElement); } @@ -230,8 +238,7 @@ class TextSourceElement { other instanceof TextSourceElement && this._element === other.element && this._fullContent === other.fullContent && - this._startOffset === other.startOffset && - this._endOffset === other.endOffset + this._startOffset === other.startOffset ); } -- cgit v1.2.3