diff options
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; } } |