diff options
author | Alex Yatskov <alex@foosoft.net> | 2016-07-22 22:14:59 -0700 |
---|---|---|
committer | Alex Yatskov <alex@foosoft.net> | 2016-07-22 22:14:59 -0700 |
commit | 6099de71d86b923e1bc76b32833a7ccfcab73692 (patch) | |
tree | bf9d1f2a45cedc790b5c0e636e3355e2cd7cefc1 /ext/fg/js | |
parent | 4e46f4bded6244f0d4963bf36f23545fdc02c487 (diff) |
Work on supporting different text sources
Diffstat (limited to 'ext/fg/js')
-rw-r--r-- | ext/fg/js/client.js | 34 | ||||
-rw-r--r-- | ext/fg/js/source-image.js (renamed from ext/fg/js/image.js) | 0 | ||||
-rw-r--r-- | ext/fg/js/source-range.js (renamed from ext/fg/js/range.js) | 0 |
3 files changed, 19 insertions, 15 deletions
diff --git a/ext/fg/js/client.js b/ext/fg/js/client.js index 587ced86..16ee0b24 100644 --- a/ext/fg/js/client.js +++ b/ext/fg/js/client.js @@ -22,7 +22,7 @@ class Client { this.popup = new Popup(); this.audio = {}; this.lastMousePos = null; - this.lastRange = null; + this.lastTextSource = null; this.activateKey = 16; this.activateBtn = 2; this.enabled = false; @@ -87,31 +87,35 @@ class Client { } } + textSourceFromPoint(point) { + return Range.fromPoint(point); + } + searchAt(point) { - const range = Range.fromPoint(point); - if (range === null || !range.containsPoint(point)) { + const textSource = this.textSourceFromPoint(point); + if (textSource === null || !textSource.containsPoint(point)) { this.hidePopup(); return; } - if (this.lastRange !== null && this.lastRange.compareOrigin(range) === 0) { + if (this.lastTextSource !== null && this.lastTextSource.compareOrigin(textSource) === 0) { return; } - range.setLength(this.options.scanLength); - bgFindTerm(range.text(), ({definitions, length}) => { + textSource.setLength(this.options.scanLength); + bgFindTerm(textSource.text(), ({definitions, length}) => { if (length === 0) { this.hidePopup(); } else { const sequence = ++this.sequence; - range.setLength(length); + textSource.setLength(length); bgRenderText( {definitions, root: this.fgRoot, options: this.options, sequence}, 'term-list.html', (content) => { this.definitions = definitions; - this.showPopup(range, content); + this.showPopup(textSource, content); bgCanAddDefinitions(definitions, ['vocab_kanji', 'vocab_kana'], (states) => { if (states !== null) { @@ -124,24 +128,24 @@ class Client { }); } - showPopup(range, content) { - this.popup.showNextTo(range.getRect(), content); + showPopup(textSource, content) { + this.popup.showNextTo(textSource.getRect(), content); if (this.options.selectMatchedText) { - range.select(); + textSource.select(); } - this.lastRange = range; + this.lastTextSource = textSource; } hidePopup() { this.popup.hide(); - if (this.options.selectMatchedText && this.lastRange !== null) { - this.lastRange.deselect(); + if (this.options.selectMatchedText && this.lastTextSource !== null) { + this.lastTextSource.deselect(); } - this.lastRange = null; + this.lastTextSource = null; this.definitions = null; } diff --git a/ext/fg/js/image.js b/ext/fg/js/source-image.js index 187b0a1d..187b0a1d 100644 --- a/ext/fg/js/image.js +++ b/ext/fg/js/source-image.js diff --git a/ext/fg/js/range.js b/ext/fg/js/source-range.js index c4cabf4b..c4cabf4b 100644 --- a/ext/fg/js/range.js +++ b/ext/fg/js/source-range.js |