diff --git a/package-lock.json b/package-lock.json index 9c76d4f..2b2607a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6471,37 +6471,6 @@ "jimp": "^0.2.27" } }, - "electron-is-accelerator": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/electron-is-accelerator/-/electron-is-accelerator-0.1.2.tgz", - "integrity": "sha1-UJ5RDCala1Xhf4Y6SwThEYRqsns=" - }, - "electron-localshortcut": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/electron-localshortcut/-/electron-localshortcut-3.1.0.tgz", - "integrity": "sha512-MgL/j5jdjW7iA0R6cI7S045B0GlKXWM1FjjujVPjlrmyXRa6yH0bGSaIAfxXAF9tpJm3pLEiQzerYHkRh9JG/A==", - "requires": { - "debug": "^2.6.8", - "electron-is-accelerator": "^0.1.0", - "keyboardevent-from-electron-accelerator": "^1.1.0", - "keyboardevents-areequal": "^0.2.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, "electron-osx-sign": { "version": "0.4.11", "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.4.11.tgz", @@ -10422,16 +10391,6 @@ "integrity": "sha1-edk9LTM2PW/dKXCzNdkUGtWR15s=", "dev": true }, - "keyboardevent-from-electron-accelerator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/keyboardevent-from-electron-accelerator/-/keyboardevent-from-electron-accelerator-1.1.0.tgz", - "integrity": "sha512-VDC4vKWGrR3VgIKCE4CsXnvObGgP8C2idnTKEMUkuEuvDGE1GEBX9FtNdJzrD00iQlhI3xFxRaeItsUmlERVng==" - }, - "keyboardevents-areequal": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/keyboardevents-areequal/-/keyboardevents-areequal-0.2.2.tgz", - "integrity": "sha512-Nv+Kr33T0mEjxR500q+I6IWisOQ0lK1GGOncV0kWE6n4KFmpcu7RUX5/2B0EUtX51Cb0HjZ9VJsSY3u4cBa0kw==" - }, "keyv": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", diff --git a/package.json b/package.json index 0894c90..6fc30b6 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,6 @@ "postuninstall": "electron-builder install-app-deps" }, "dependencies": { - "electron-localshortcut": "^3.1.0", "electron-window-state": "^5.0.3", "is-url-relative-without-domain": "^2.0.0", "lodash-id": "^0.14.0", diff --git a/src/background.js b/src/background.js index 2267aa3..9001e7a 100644 --- a/src/background.js +++ b/src/background.js @@ -1,4 +1,3 @@ -import electronLocalshortcut from 'electron-localshortcut'; import windowStateKeeper from 'electron-window-state'; import * as path from 'path'; import { format as formatUrl } from 'url'; @@ -115,8 +114,6 @@ app.on('ready', async () => { } mainWindow = createMainWindow(); - electronLocalshortcut.register('CmdOrCtrl+T', () => app.emit('app-router-goto-tabs-create')); - Menu.setApplicationMenu(Menu.buildFromTemplate([ { label: app.getName(), @@ -131,16 +128,6 @@ app.on('ready', async () => { { role: 'quit' }, ], }, - { - label: 'File', - submenu: [ - { - label: 'New Tab', - accelerator: 'CmdOrCtrl+N', - click: () => app.emit('app-router-goto-tabs-create'), - }, - ], - }, { label: 'Edit', submenu: [ @@ -154,6 +141,38 @@ app.on('ready', async () => { { role: 'selectAll' }, ], }, + { + label: 'Tabs', + submenu: [ + { label: 'New Tab', accelerator: 'CmdOrCtrl+N', click: () => app.emit('app-router-goto-tabs-create') }, + { type: 'separator' }, + { label: 'Show tab 1', accelerator: 'CmdOrCtrl+1', click: () => app.emit('app-router-goto-tab-list-index', 1) }, + { label: 'Show tab 2', accelerator: 'CmdOrCtrl+2', click: () => app.emit('app-router-goto-tab-list-index', 2) }, + { label: 'Show tab 3', accelerator: 'CmdOrCtrl+3', click: () => app.emit('app-router-goto-tab-list-index', 3) }, + { label: 'Show tab 4', accelerator: 'CmdOrCtrl+4', click: () => app.emit('app-router-goto-tab-list-index', 4) }, + { label: 'Show tab 5', accelerator: 'CmdOrCtrl+5', click: () => app.emit('app-router-goto-tab-list-index', 5) }, + { label: 'Show tab 6', accelerator: 'CmdOrCtrl+6', click: () => app.emit('app-router-goto-tab-list-index', 6) }, + { label: 'Show tab 7', accelerator: 'CmdOrCtrl+7', click: () => app.emit('app-router-goto-tab-list-index', 7) }, + { label: 'Show tab 8', accelerator: 'CmdOrCtrl+8', click: () => app.emit('app-router-goto-tab-list-index', 8) }, + { label: 'Show tab 9', accelerator: 'CmdOrCtrl+9', click: () => app.emit('app-router-goto-tab-list-index', 9) }, + { + label: 'Alternatives', + submenu: [ + { label: 'New Tab', accelerator: 'CmdOrCtrl+T', click: () => app.emit('app-router-goto-tabs-create') }, + { type: 'separator' }, + { label: 'Show tab 1', accelerator: 'CmdOrCtrl+num1', click: () => app.emit('app-router-goto-tab-list-index', 1) }, + { label: 'Show tab 2', accelerator: 'CmdOrCtrl+num2', click: () => app.emit('app-router-goto-tab-list-index', 2) }, + { label: 'Show tab 3', accelerator: 'CmdOrCtrl+num3', click: () => app.emit('app-router-goto-tab-list-index', 3) }, + { label: 'Show tab 4', accelerator: 'CmdOrCtrl+num4', click: () => app.emit('app-router-goto-tab-list-index', 4) }, + { label: 'Show tab 5', accelerator: 'CmdOrCtrl+num5', click: () => app.emit('app-router-goto-tab-list-index', 5) }, + { label: 'Show tab 6', accelerator: 'CmdOrCtrl+num6', click: () => app.emit('app-router-goto-tab-list-index', 6) }, + { label: 'Show tab 7', accelerator: 'CmdOrCtrl+num7', click: () => app.emit('app-router-goto-tab-list-index', 7) }, + { label: 'Show tab 8', accelerator: 'CmdOrCtrl+num8', click: () => app.emit('app-router-goto-tab-list-index', 8) }, + { label: 'Show tab 9', accelerator: 'CmdOrCtrl+num9', click: () => app.emit('app-router-goto-tab-list-index', 9) }, + ], + }, + ], + }, ])); const settingsMenu = Menu.buildFromTemplate([ diff --git a/src/components/TabMain.vue b/src/components/TabMain.vue index 206e333..80df84e 100644 --- a/src/components/TabMain.vue +++ b/src/components/TabMain.vue @@ -1,10 +1,10 @@ @@ -45,19 +45,26 @@ export default { }; }, computed: { - isActive() { - const { params, name } = this.$route; - return params.id === this.item.id && name === 'tabs'; + tab() { + const { params, name, query } = this.$route; + + return { + isActive: params.id === this.item.id && name === 'tabs', + addFocus: !query.doNotFocusWebview, + id: params.id, + }; }, }, watch: { - isActive(isActive) { - if (isActive) { - this.$store.commit('Pages/setState', { - tabId: this.item.id, - data: { hasNotificationBadge: false }, - }); + tab(value) { + if (!value.isActive) return; + + this.$store.commit('Pages/setState', { + tabId: value.id, + data: { hasNotificationBadge: false }, + }); + if (value.addFocus) { this.webviewEl.focus(); } }, diff --git a/src/utils/mixinEvents.js b/src/utils/mixinEvents.js index 1dfc074..7ba89e0 100644 --- a/src/utils/mixinEvents.js +++ b/src/utils/mixinEvents.js @@ -1,11 +1,30 @@ export default { + computed: { + tabListSorted() { + return this.$store.getters['Tabs/listSorted']; + }, + }, created() { const { app } = this.$electron.remote; const r = this.$router; app.on('app-router-goto-tabs-create', () => r.push({ name: 'tabs-create' })); + app.on('app-router-goto-tab-list-index', index => this.goToTabWithListIndex(index)); app.on('app-router-goto-settings', () => r.push({ name: 'settings' })); app.on('app-router-goto-welcome', () => r.push({ name: 'welcome' })); app.on('app-router-goto-changelog', () => r.push({ name: 'changelog' })); }, + methods: { + goToTabWithListIndex(index) { + const tab = this.tabListSorted[index - 1]; + + if (tab) { + this.$router.push({ + name: 'tabs', + params: { id: tab.id }, + query: { doNotFocusWebview: true }, + }); + } + }, + }, };