diff options
-rw-r--r-- | ext/fg/js/client.js | 2 | ||||
-rw-r--r-- | ext/fg/js/source-image.js | 29 | ||||
-rw-r--r-- | ext/fg/js/source-range.js | 4 |
3 files changed, 19 insertions, 16 deletions
diff --git a/ext/fg/js/client.js b/ext/fg/js/client.js index 46e4683e..67400f34 100644 --- a/ext/fg/js/client.js +++ b/ext/fg/js/client.js @@ -108,7 +108,7 @@ class Client { return; } - if (this.lastTextSource !== null && this.lastTextSource.compareOrigin(textSource) === 0) { + if (this.lastTextSource !== null && this.lastTextSource.equals(textSource)) { return; } diff --git a/ext/fg/js/source-image.js b/ext/fg/js/source-image.js index 187b0a1d..8c87e31e 100644 --- a/ext/fg/js/source-image.js +++ b/ext/fg/js/source-image.js @@ -17,40 +17,43 @@ */ -class Image { +class ImageSource { constructor(image) { - + this.img = image; + this.length = -1; } text() { + const text = this.textRaw(); + return this.length < 0 ? text : text.substring(0, this.length); + } + textRaw() { + return this.img.getAttribute('alt') || ''; } setLength(length) { - + this.length = length; } containsPoint(point) { - + const rect = this.getRect(); + return point.x >= rect.left && point.x <= rect.right; } getRect() { - - } - - getPaddedRect() { - + return this.img.getBoundingClientRect(); } select() { - + // NOP } deselect() { - + // NOP } - compareOrigin(range) { - + equals(other) { + return other.img && other.textRaw() == this.textRaw(); } } diff --git a/ext/fg/js/source-range.js b/ext/fg/js/source-range.js index a6c3d722..bd13a1b6 100644 --- a/ext/fg/js/source-range.js +++ b/ext/fg/js/source-range.js @@ -63,8 +63,8 @@ class RangeSource { selection.removeAllRanges(); } - compareOrigin(range) { - return range.rng.compareBoundaryPoints(Range.START_TO_START, this.rng); + equals(other) { + return other.rng && other.rng.compareBoundaryPoints(Range.START_TO_START, this.rng) == 0; } static seekEnd(node, length) { |