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..b81fb21b0 100644 --- a/main/menu.js +++ b/main/menu.js @@ -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 } }, {