diff options
author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2021-04-26 21:11:43 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-26 21:11:43 -0400 |
commit | 763c6c76aa5bceb1eb929aa3a87bacf91e37407f (patch) | |
tree | 1624a83faeac46cc6d977ca0cd176c1f399b3da0 /ext/js/app | |
parent | 6f5ad490fb54b4d0431d56cc644c76d62213abd7 (diff) |
Add scanTextAtCaret option (#1632)
Diffstat (limited to 'ext/js/app')
-rw-r--r-- | ext/js/app/frontend.js | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/ext/js/app/frontend.js b/ext/js/app/frontend.js index e1b531d4..7913d7d8 100644 --- a/ext/js/app/frontend.js +++ b/ext/js/app/frontend.js @@ -79,7 +79,8 @@ class Frontend { ]); this._hotkeyHandler.registerActions([ - ['scanSelectedText', this._onActionScanSelectedText.bind(this)] + ['scanSelectedText', this._onActionScanSelectedText.bind(this)], + ['scanTextAtCaret', this._onActionScanTextAtCaret.bind(this)] ]); } @@ -172,7 +173,11 @@ class Frontend { // Action handlers _onActionScanSelectedText() { - this._scanSelectedText(); + this._scanSelectedText(false); + } + + _onActionScanTextAtCaret() { + this._scanSelectedText(true); } // API message handlers @@ -679,19 +684,19 @@ class Frontend { }; } - async _scanSelectedText() { - const range = this._getFirstNonEmptySelectionRange(); + async _scanSelectedText(allowEmptyRange) { + const range = this._getFirstSelectionRange(allowEmptyRange); if (range === null) { return false; } const source = new TextSourceRange(range, range.toString(), null, null); await this._textScanner.search(source, {focus: true, restoreSelection: true}); return true; } - _getFirstNonEmptySelectionRange() { + _getFirstSelectionRange(allowEmptyRange) { const selection = window.getSelection(); for (let i = 0, ii = selection.rangeCount; i < ii; ++i) { const range = selection.getRangeAt(i); - if (range.toString().length > 0) { + if (range.toString().length > 0 || allowEmptyRange) { return range; } } |