From 8f936c172509546c9e8c6e9886a429de034ea70f Mon Sep 17 00:00:00 2001 From: Yuya Ochiai Date: Wed, 18 May 2016 23:02:03 +0900 Subject: [PATCH] Add Ctrl+n shortcut to switch tab This also shows the main window. Close #51 --- src/browser/index.jsx | 6 +++++- src/main.js | 2 +- src/main/menus/app.js | 20 ++++++++++++++++---- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/src/browser/index.jsx b/src/browser/index.jsx index 671c683b..6f254b3b 100644 --- a/src/browser/index.jsx +++ b/src/browser/index.jsx @@ -54,6 +54,9 @@ var MainPage = React.createClass({ loginQueue: loginQueue }); }); + ipcRenderer.on('switch-tab', (event, key) => { + this.handleSelect(key); + }); var focusListener = function() { var webview = document.getElementById('mattermostView' + thisObj.state.key); @@ -69,8 +72,9 @@ var MainPage = React.createClass({ }); }, handleSelect: function(key) { + const newKey = key % this.props.teams.length; this.setState({ - key: key + key: newKey }); this.handleOnTeamFocused(key); }, diff --git a/src/main.js b/src/main.js index bce357db..1042d91c 100644 --- a/src/main.js +++ b/src/main.js @@ -274,7 +274,7 @@ app.on('ready', function() { saveWindowState(bounds_info_path, mainWindow); }); - var app_menu = appMenu.createMenu(mainWindow); + var app_menu = appMenu.createMenu(mainWindow, config); Menu.setApplicationMenu(app_menu); // Emitted when the window is closed. diff --git a/src/main/menus/app.js b/src/main/menus/app.js index 81633cdb..049dad41 100644 --- a/src/main/menus/app.js +++ b/src/main/menus/app.js @@ -3,7 +3,8 @@ const electron = require('electron'); const Menu = electron.Menu; -var createTemplate = function(mainWindow) { +var createTemplate = function(mainWindow, config) { + console.log(config); var app_name = electron.app.getName(); var first_menu_name = (process.platform === 'darwin') ? app_name : 'File'; var template = []; @@ -153,13 +154,24 @@ var createTemplate = function(mainWindow) { focusedWindow.close(); } } - }] + }, { + type: 'separator' + }, ...config.teams.slice(0, 9).map((team, i) => { + return { + label: team.name, + accelerator: `CmdOrCtrl+${i + 1}`, + click: (item, focusedWindow) => { + mainWindow.show(); // for OS X + mainWindow.webContents.send('switch-tab', i); + } + }; + })] }); return template; }; -var createMenu = function(mainWindow) { - return Menu.buildFromTemplate(createTemplate(mainWindow)); +var createMenu = function(mainWindow, config) { + return Menu.buildFromTemplate(createTemplate(mainWindow, config)); }; module.exports = {