diff options
-rw-r--r-- | ext/js/background/backend.js | 17 | ||||
-rw-r--r-- | ext/js/pages/action-popup-main.js | 10 |
2 files changed, 19 insertions, 8 deletions
diff --git a/ext/js/background/backend.js b/ext/js/background/backend.js index d042a253..dfb85e05 100644 --- a/ext/js/background/backend.js +++ b/ext/js/background/backend.js @@ -964,10 +964,10 @@ export class Backend { // Command handlers /** - * @param {undefined|{mode: 'existingOrNewTab'|'newTab', query?: string}} params + * @param {undefined|{mode: 'existingOrNewTab'|'newTab'|'popup', query?: string}} params */ async _onCommandOpenSearchPage(params) { - /** @type {'existingOrNewTab'|'newTab'} */ + /** @type {'existingOrNewTab'|'newTab'|'popup'} */ let mode = 'existingOrNewTab'; let query = ''; if (typeof params === 'object' && params !== null) { @@ -1023,6 +1023,8 @@ export class Backend { case 'newTab': await this._createTab(queryUrl); return; + case 'popup': + return; } } @@ -1034,10 +1036,10 @@ export class Backend { } /** - * @param {undefined|{mode: 'existingOrNewTab'|'newTab'}} params + * @param {undefined|{mode: 'existingOrNewTab'|'newTab'|'popup'}} params */ async _onCommandOpenSettingsPage(params) { - /** @type {'existingOrNewTab'|'newTab'} */ + /** @type {'existingOrNewTab'|'newTab'|'popup'} */ let mode = 'existingOrNewTab'; if (typeof params === 'object' && params !== null) { mode = this._normalizeOpenSettingsPageMode(params.mode, mode); @@ -2544,7 +2546,7 @@ export class Backend { } /** - * @param {'existingOrNewTab'|'newTab'} mode + * @param {'existingOrNewTab'|'newTab'|'popup'} mode */ async _openSettingsPage(mode) { const manifest = chrome.runtime.getManifest(); @@ -2673,13 +2675,14 @@ export class Backend { /** * @param {unknown} mode - * @param {'existingOrNewTab'|'newTab'} defaultValue - * @returns {'existingOrNewTab'|'newTab'} + * @param {'existingOrNewTab'|'newTab'|'popup'} defaultValue + * @returns {'existingOrNewTab'|'newTab'|'popup'} */ _normalizeOpenSettingsPageMode(mode, defaultValue) { switch (mode) { case 'existingOrNewTab': case 'newTab': + case 'popup': return mode; default: return defaultValue; diff --git a/ext/js/pages/action-popup-main.js b/ext/js/pages/action-popup-main.js index 4125b2d1..9689e1af 100644 --- a/ext/js/pages/action-popup-main.js +++ b/ext/js/pages/action-popup-main.js @@ -114,7 +114,15 @@ class DisplayController { const result = customHandler(e); if (typeof result !== 'undefined') { return; } } - void this._api.commandExec(command, {mode: e.ctrlKey ? 'newTab' : 'existingOrNewTab'}); + + let mode = 'existingOrNewTab'; + if (e.ctrlKey) { + mode = 'newTab'; + } else if (e.shiftKey) { + mode = 'popup'; + } + + void this._api.commandExec(command, {mode: mode}); e.preventDefault(); }; /** |