diff --git a/CHANGELOG.md b/CHANGELOG.md index ccb4f081..6ddf1441 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,7 @@ Release date: TBD ### Bug Fixes - Fixed an issue where the maximized state of the app window was lost in some cases. +- Fixed an issue some shortcuts didn't work when switching applications or tabs in some cases. #### Windows - Fixed pixelated application icons in top left of the window. diff --git a/package.json b/package.json index 0c581b86..55987a5c 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "electron-builder": "5.2.1", "electron-connect": "~0.3.9", "electron-packager": "^7.0.1", - "electron-prebuilt": "1.2.7", + "electron-prebuilt": "1.2.8", "electron-winstaller": "^2.2.0", "esformatter": "^0.9.6", "esformatter-jsx": "^7.0.1", diff --git a/src/browser/index.jsx b/src/browser/index.jsx index c7871cf9..4f00cbe0 100644 --- a/src/browser/index.jsx +++ b/src/browser/index.jsx @@ -82,10 +82,8 @@ var MainPage = React.createClass({ }); var focusListener = function() { - var webview = document.getElementById('mattermostView' + thisObj.state.key); - webview.focus(); - thisObj.handleOnTeamFocused(thisObj.state.key); + thisObj.refs[`mattermostView${thisObj.state.key}`].focusOnWebView(); }; var currentWindow = remote.getCurrentWindow(); @@ -94,14 +92,17 @@ var MainPage = React.createClass({ currentWindow.removeListener('focus', focusListener); }); }, + componentDidUpdate: function() { + this.refs[`mattermostView${this.state.key}`].focusOnWebView(); + }, handleSelect: function(key) { const newKey = (this.props.teams.length + key) % this.props.teams.length; this.setState({ key: newKey }); - this.handleOnTeamFocused(key); + this.handleOnTeamFocused(newKey); - var webview = document.getElementById('mattermostView' + key); + var webview = document.getElementById('mattermostView' + newKey); ipcRenderer.send('update-title', { title: webview.getTitle() }); @@ -455,6 +456,13 @@ var MattermostView = React.createClass({ webContents.reload(); }); }, + focusOnWebView: function() { + const webview = ReactDOM.findDOMNode(this.refs.webview); + if (!webview.getWebContents().isFocused()) { + webview.focus(); + webview.getWebContents().focus(); + } + }, render: function() { const errorView = this.state.errorInfo ? () : null; // 'disablewebsecurity' is necessary to display external images.