[MM-20822] Added cut/paste/zoom events to other pages and added exceptions for dev tools and new server modal (#1133)

* [MM-20822] Added cut/paste/zoom events to other pages and added exceptions for dev tools and new server modal

* Using getFocusedWebContents

* Fixed an issue where the webcontents aren't found if you're on a login page

* Potential fix for mojave pasting on new team modal
This commit is contained in:
Devin Binnie
2020-01-13 12:28:00 -05:00
committed by GitHub
parent 8f45afa080
commit 5a237d8d88
3 changed files with 175 additions and 1 deletions

View File

@@ -76,6 +76,17 @@ export default class MainPage extends React.Component {
}
getTabWebContents(index = this.state.key || 0, teams = this.props.teams) {
const allWebContents = remote.webContents.getAllWebContents();
const openDevTools = allWebContents.find((webContents) => webContents.getURL().includes('chrome-devtools') && webContents.isFocused());
if (openDevTools) {
return openDevTools;
}
if (this.state.showNewTeamModal) {
const indexURL = '/browser/index.html';
return allWebContents.find((webContents) => webContents.getURL().includes(indexURL));
}
if (!teams || !teams.length || index > teams.length) {
return null;
}
@@ -83,7 +94,7 @@ export default class MainPage extends React.Component {
if (!tabURL) {
return null;
}
return remote.webContents.getAllWebContents().find((webContents) => webContents.getURL().includes(tabURL));
return allWebContents.find((webContents) => webContents.getURL().includes(tabURL) || webContents.getURL().includes(this.refs[`mattermostView${index}`].getSrc()));
}
componentDidMount() {

View File

@@ -38,6 +38,10 @@ export default class SettingsPage extends React.Component {
this.saveQueue = [];
}
getTabWebContents() {
return remote.webContents.getFocusedWebContents();
}
componentDidMount() {
config.on('update', (configData) => {
this.updateSaveState();
@@ -75,6 +79,84 @@ export default class SettingsPage extends React.Component {
ipcRenderer.on('switch-tab', (event, key) => {
backToIndex(key);
});
ipcRenderer.on('zoom-in', () => {
const activeTabWebContents = this.getTabWebContents();
if (!activeTabWebContents) {
return;
}
if (activeTabWebContents.getZoomLevel() >= 9) {
return;
}
activeTabWebContents.setZoomLevel(activeTabWebContents.getZoomLevel() + 1);
});
ipcRenderer.on('zoom-out', () => {
const activeTabWebContents = this.getTabWebContents();
if (!activeTabWebContents) {
return;
}
if (activeTabWebContents.getZoomLevel() <= -8) {
return;
}
activeTabWebContents.setZoomLevel(activeTabWebContents.getZoomLevel() - 1);
});
ipcRenderer.on('zoom-reset', () => {
const activeTabWebContents = this.getTabWebContents();
if (!activeTabWebContents) {
return;
}
activeTabWebContents.setZoomLevel(0);
});
ipcRenderer.on('undo', () => {
const activeTabWebContents = this.getTabWebContents();
if (!activeTabWebContents) {
return;
}
activeTabWebContents.undo();
});
ipcRenderer.on('redo', () => {
const activeTabWebContents = this.getTabWebContents();
if (!activeTabWebContents) {
return;
}
activeTabWebContents.redo();
});
ipcRenderer.on('cut', () => {
const activeTabWebContents = this.getTabWebContents();
if (!activeTabWebContents) {
return;
}
activeTabWebContents.cut();
});
ipcRenderer.on('copy', () => {
const activeTabWebContents = this.getTabWebContents();
if (!activeTabWebContents) {
return;
}
activeTabWebContents.copy();
});
ipcRenderer.on('paste', () => {
const activeTabWebContents = this.getTabWebContents();
if (!activeTabWebContents) {
return;
}
activeTabWebContents.paste();
});
ipcRenderer.on('paste-and-match', () => {
const activeTabWebContents = this.getTabWebContents();
if (!activeTabWebContents) {
return;
}
activeTabWebContents.pasteAndMatchStyle();
});
}
convertConfigDataToState = (configData, currentState = {}) => {

View File

@@ -19,6 +19,10 @@ class UpdaterPageContainer extends React.Component {
this.state = props.initialState;
}
getTabWebContents() {
return remote.webContents.getFocusedWebContents();
}
componentDidMount() {
ipcRenderer.on('start-download', () => {
this.setState({
@@ -30,6 +34,83 @@ class UpdaterPageContainer extends React.Component {
progress,
});
});
ipcRenderer.on('zoom-in', () => {
const activeTabWebContents = this.getTabWebContents();
if (!activeTabWebContents) {
return;
}
if (activeTabWebContents.getZoomLevel() >= 9) {
return;
}
activeTabWebContents.setZoomLevel(activeTabWebContents.getZoomLevel() + 1);
});
ipcRenderer.on('zoom-out', () => {
const activeTabWebContents = this.getTabWebContents();
if (!activeTabWebContents) {
return;
}
if (activeTabWebContents.getZoomLevel() <= -8) {
return;
}
activeTabWebContents.setZoomLevel(activeTabWebContents.getZoomLevel() - 1);
});
ipcRenderer.on('zoom-reset', () => {
const activeTabWebContents = this.getTabWebContents();
if (!activeTabWebContents) {
return;
}
activeTabWebContents.setZoomLevel(0);
});
ipcRenderer.on('undo', () => {
const activeTabWebContents = this.getTabWebContents();
if (!activeTabWebContents) {
return;
}
activeTabWebContents.undo();
});
ipcRenderer.on('redo', () => {
const activeTabWebContents = this.getTabWebContents();
if (!activeTabWebContents) {
return;
}
activeTabWebContents.redo();
});
ipcRenderer.on('cut', () => {
const activeTabWebContents = this.getTabWebContents();
if (!activeTabWebContents) {
return;
}
activeTabWebContents.cut();
});
ipcRenderer.on('copy', () => {
const activeTabWebContents = this.getTabWebContents();
if (!activeTabWebContents) {
return;
}
activeTabWebContents.copy();
});
ipcRenderer.on('paste', () => {
const activeTabWebContents = this.getTabWebContents();
if (!activeTabWebContents) {
return;
}
activeTabWebContents.paste();
});
ipcRenderer.on('paste-and-match', () => {
const activeTabWebContents = this.getTabWebContents();
if (!activeTabWebContents) {
return;
}
activeTabWebContents.pasteAndMatchStyle();
});
}
render() {