Add Ctrl+n shortcut to switch tab

This also shows the main window.
Close #51
This commit is contained in:
Yuya Ochiai 2016-05-18 23:02:03 +09:00
parent e2d7d18804
commit 8f936c1725
3 changed files with 22 additions and 6 deletions

View file

@ -54,6 +54,9 @@ var MainPage = React.createClass({
loginQueue: loginQueue loginQueue: loginQueue
}); });
}); });
ipcRenderer.on('switch-tab', (event, key) => {
this.handleSelect(key);
});
var focusListener = function() { var focusListener = function() {
var webview = document.getElementById('mattermostView' + thisObj.state.key); var webview = document.getElementById('mattermostView' + thisObj.state.key);
@ -69,8 +72,9 @@ var MainPage = React.createClass({
}); });
}, },
handleSelect: function(key) { handleSelect: function(key) {
const newKey = key % this.props.teams.length;
this.setState({ this.setState({
key: key key: newKey
}); });
this.handleOnTeamFocused(key); this.handleOnTeamFocused(key);
}, },

View file

@ -274,7 +274,7 @@ app.on('ready', function() {
saveWindowState(bounds_info_path, mainWindow); saveWindowState(bounds_info_path, mainWindow);
}); });
var app_menu = appMenu.createMenu(mainWindow); var app_menu = appMenu.createMenu(mainWindow, config);
Menu.setApplicationMenu(app_menu); Menu.setApplicationMenu(app_menu);
// Emitted when the window is closed. // Emitted when the window is closed.

View file

@ -3,7 +3,8 @@
const electron = require('electron'); const electron = require('electron');
const Menu = electron.Menu; const Menu = electron.Menu;
var createTemplate = function(mainWindow) { var createTemplate = function(mainWindow, config) {
console.log(config);
var app_name = electron.app.getName(); var app_name = electron.app.getName();
var first_menu_name = (process.platform === 'darwin') ? app_name : 'File'; var first_menu_name = (process.platform === 'darwin') ? app_name : 'File';
var template = []; var template = [];
@ -153,13 +154,24 @@ var createTemplate = function(mainWindow) {
focusedWindow.close(); 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; return template;
}; };
var createMenu = function(mainWindow) { var createMenu = function(mainWindow, config) {
return Menu.buildFromTemplate(createTemplate(mainWindow)); return Menu.buildFromTemplate(createTemplate(mainWindow, config));
}; };
module.exports = { module.exports = {