aboutsummaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
Diffstat (limited to 'ext')
-rw-r--r--ext/js/app/frontend.js17
-rw-r--r--ext/js/pages/settings/keyboard-shortcuts-controller.js1
-rw-r--r--ext/settings.html1
3 files changed, 13 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;
}
}
diff --git a/ext/js/pages/settings/keyboard-shortcuts-controller.js b/ext/js/pages/settings/keyboard-shortcuts-controller.js
index aeff15b6..5e7b7783 100644
--- a/ext/js/pages/settings/keyboard-shortcuts-controller.js
+++ b/ext/js/pages/settings/keyboard-shortcuts-controller.js
@@ -52,6 +52,7 @@ class KeyboardShortcutController {
['playAudioFromSource', {scopes: new Set(['popup', 'search']), argument: {template: 'hotkey-argument-audio-source', default: 'jpod101'}}],
['copyHostSelection', {scopes: new Set(['popup'])}],
['scanSelectedText', {scopes: new Set(['web'])}],
+ ['scanTextAtCaret', {scopes: new Set(['web'])}],
['toggleOption', {scopes: new Set(['popup', 'search']), argument: {template: 'hotkey-argument-setting-path', default: ''}}]
]);
}
diff --git a/ext/settings.html b/ext/settings.html
index 732a96e2..7f9cc8ec 100644
--- a/ext/settings.html
+++ b/ext/settings.html
@@ -3227,6 +3227,7 @@
<option value="playAudioFromSource">Play audio from source</option>
<option value="copyHostSelection">Copy host window selection</option>
<option value="scanSelectedText">Scan selected text</option>
+ <option value="scanTextAtCaret">Scan text at caret</option>
<option value="toggleOption">Toggle option</option>
</select>
<div class="hotkey-list-item-action-argument-container"></div>