aboutsummaryrefslogtreecommitdiff
path: root/ext/fg/js/client.js
diff options
context:
space:
mode:
authorAlex Yatskov <alex@foosoft.net>2016-07-22 22:14:59 -0700
committerAlex Yatskov <alex@foosoft.net>2016-07-22 22:14:59 -0700
commit6099de71d86b923e1bc76b32833a7ccfcab73692 (patch)
treebf9d1f2a45cedc790b5c0e636e3355e2cd7cefc1 /ext/fg/js/client.js
parent4e46f4bded6244f0d4963bf36f23545fdc02c487 (diff)
Work on supporting different text sources
Diffstat (limited to 'ext/fg/js/client.js')
-rw-r--r--ext/fg/js/client.js34
1 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;
}