From d6149b168af7761c7af857fa355cd4d1de61645c Mon Sep 17 00:00:00 2001 From: Andrew K Date: Thu, 12 May 2022 23:33:50 +0200 Subject: [PATCH 1/2] Add Restore Last Tab menu item --- js/menuRenderer.js | 18 ++++++++++++++++++ localization/languages/en-US.json | 1 + localization/languages/fr.json | 1 + localization/languages/it.json | 1 + localization/languages/pl.json | 1 + localization/languages/ru.json | 1 + localization/languages/uk.json | 1 + main/menu.js | 24 ++++++++++++++++++++---- 8 files changed, 44 insertions(+), 4 deletions(-) diff --git a/js/menuRenderer.js b/js/menuRenderer.js index 78b06df4e..181ba6db2 100644 --- a/js/menuRenderer.js +++ b/js/menuRenderer.js @@ -75,6 +75,24 @@ module.exports = { browserUI.duplicateTab(tabs.getSelected()) }) + ipc.on('restoreTab', function (e) { + if (focusMode.enabled()) { + focusMode.warn() + return + } + + var restoredTab = tasks.getSelected().tabHistory.pop() + + // The tab history stack is empty + if (!restoredTab) { + return + } + + browserUI.addTab(tabs.add(restoredTab), { + enterEditMode: false + }) + }) + ipc.on('addTab', function (e, data) { /* new tabs can't be created in modal mode */ if (modalMode.enabled()) { diff --git a/localization/languages/en-US.json b/localization/languages/en-US.json index 08ef4a661..fef28f661 100644 --- a/localization/languages/en-US.json +++ b/localization/languages/en-US.json @@ -184,6 +184,7 @@ "appMenuDuplicateTab": "Duplicate Tab", "appMenuNewPrivateTab": "New Private Tab", "appMenuNewTask": "New Task", + "appMenuRestoreTab": "Restore closed tab", "appMenuSavePageAs": "Save Page As", "appMenuPrint": "Print", "appMenuEdit": "Edit", diff --git a/localization/languages/fr.json b/localization/languages/fr.json index 67d33fc6c..d0864d420 100644 --- a/localization/languages/fr.json +++ b/localization/languages/fr.json @@ -185,6 +185,7 @@ "appMenuNewPrivateTab": "Nouvel onglet de navigation privée", "appMenuNewTask": "Nouvelle tâche", "appMenuSavePageAs": "Enregistrer la page sous", + "appMenuRestoreTab": "Reuvrir l'onglet fermé", "appMenuPrint": "Imprimer", "appMenuEdit": "Editer", "appMenuUndo": "Retour", diff --git a/localization/languages/it.json b/localization/languages/it.json index b3ec1e9eb..3b9c3c834 100644 --- a/localization/languages/it.json +++ b/localization/languages/it.json @@ -185,6 +185,7 @@ "appMenuNewPrivateTab": "Nuova scheda privata", "appMenuNewTask": "Nuovo task", "appMenuSavePageAs": "Salva pagina con nome", + "appMenuRestoreTab": "Riapri scheda chiusa", "appMenuPrint": "Stampa", "appMenuEdit": "Modifica", "appMenuUndo": "Annulla", diff --git a/localization/languages/pl.json b/localization/languages/pl.json index 9b5d012b0..133850381 100644 --- a/localization/languages/pl.json +++ b/localization/languages/pl.json @@ -185,6 +185,7 @@ "appMenuNewPrivateTab": "Nowa karta prywatna", "appMenuNewTask": "Nowe zadanie", "appMenuSavePageAs": "Zapisz stronę jako", + "appMenuRestoreTab": "Przywróć zamkniętą kartę", "appMenuPrint": "Drukuj", "appMenuEdit": "Edytuj", "appMenuUndo": "Cofnij", diff --git a/localization/languages/ru.json b/localization/languages/ru.json index b6dcfcf3b..b3539b421 100644 --- a/localization/languages/ru.json +++ b/localization/languages/ru.json @@ -185,6 +185,7 @@ "appMenuNewPrivateTab": "Новая приватная вкладка", "appMenuNewTask": "Новая задача", "appMenuSavePageAs": "Сохранить страницу как...", + "appMenuRestoreTab": "Восстановить закрытую вкладку", "appMenuPrint": "Печать", "appMenuEdit": "Правка", "appMenuUndo": "Отменить", diff --git a/localization/languages/uk.json b/localization/languages/uk.json index 56f85c314..271139662 100644 --- a/localization/languages/uk.json +++ b/localization/languages/uk.json @@ -185,6 +185,7 @@ "appMenuDuplicateTab": "Дублювати вкладку", "appMenuNewPrivateTab": "Нова приватна вкладка", "appMenuNewTask": "Нове завдання", + "appMenuRestoreTab": "Відновити закриту вкладку", "appMenuSavePageAs": "Зберегти сторінку як", "appMenuPrint": "Друк", "appMenuEdit": "Редагувати", diff --git a/main/menu.js b/main/menu.js index 7b23a2f6f..d3dc84ebe 100644 --- a/main/menu.js +++ b/main/menu.js @@ -1,5 +1,5 @@ -function buildAppMenu (options = {}) { - function getFormattedKeyMapEntry (keybinding) { +function buildAppMenu(options = {}) { + function getFormattedKeyMapEntry(keybinding) { const value = settings.get('keyMap')?.[keybinding] if (value) { @@ -54,6 +54,18 @@ function buildAppMenu (options = {}) { } ] + var closedTabTaskActions = [ + { + label: l('appMenuRestoreTab'), + accelerator: getFormattedKeyMapEntry('restoreTab') || 'shift+CmdOrCtrl+t', + click: function (item, window, event) { + if (!event.triggeredByAccelerator) { + sendIPCToWindow(window, 'restoreTab') + } + } + } + ] + var personalDataItems = [ { label: l('appMenuBookmarks'), @@ -98,6 +110,8 @@ function buildAppMenu (options = {}) { var template = [ ...(options.secondary ? tabTaskActions : []), ...(options.secondary ? [{ type: 'separator' }] : []), + ...(options.secondary ? closedTabTaskActions : []), + ...(options.secondary ? [{ type: 'separator' }] : []), ...(options.secondary ? personalDataItems : []), ...(options.secondary ? [{ type: 'separator' }] : []), ...(options.secondary ? [preferencesAction] : []), @@ -149,6 +163,8 @@ function buildAppMenu (options = {}) { submenu: [ ...(!options.secondary ? tabTaskActions : []), ...(!options.secondary ? [{ type: 'separator' }] : []), + ...(!options.secondary ? closedTabTaskActions : []), + ...(!options.secondary ? [{ type: 'separator' }] : []), { label: l('appMenuSavePageAs'), accelerator: 'CmdOrCtrl+s', @@ -342,7 +358,7 @@ function buildAppMenu (options = {}) { } } } - // otherwise, this event will be handled in the main window + // otherwise, this event will be handled in the main window } }, { @@ -418,7 +434,7 @@ function buildAppMenu (options = {}) { return Menu.buildFromTemplate(template) } -function createDockMenu () { +function createDockMenu() { // create the menu. based on example from https://github.com/electron/electron/blob/master/docs/tutorial/desktop-environment-integration.md#custom-dock-menu-macos if (process.platform === 'darwin') { var Menu = electron.Menu From bf2104c85e515d29b6469ec6c76804ea74efe51c Mon Sep 17 00:00:00 2001 From: Andrew K Date: Thu, 12 May 2022 23:37:45 +0200 Subject: [PATCH 2/2] Fix eslint artefacts --- main/menu.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/main/menu.js b/main/menu.js index d3dc84ebe..b81fb21b0 100644 --- a/main/menu.js +++ b/main/menu.js @@ -1,5 +1,5 @@ -function buildAppMenu(options = {}) { - function getFormattedKeyMapEntry(keybinding) { +function buildAppMenu (options = {}) { + function getFormattedKeyMapEntry (keybinding) { const value = settings.get('keyMap')?.[keybinding] if (value) { @@ -434,7 +434,7 @@ function buildAppMenu(options = {}) { return Menu.buildFromTemplate(template) } -function createDockMenu() { +function createDockMenu () { // create the menu. based on example from https://github.com/electron/electron/blob/master/docs/tutorial/desktop-environment-integration.md#custom-dock-menu-macos if (process.platform === 'darwin') { var Menu = electron.Menu