From fc83365f1f1163fa990d5377f9b20512594631d7 Mon Sep 17 00:00:00 2001 From: Kuuuube <61125188+Kuuuube@users.noreply.github.com> Date: Sun, 12 May 2024 21:54:45 -0400 Subject: Restore shift click behavior for search button opening as a popup (#920) --- ext/js/background/backend.js | 17 ++++++++++------- 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(); }; /** -- cgit v1.2.3