mirror of
https://github.com/zulip/zulip-desktop.git
synced 2025-10-30 19:43:39 +00:00
macOS: Fix undo redo not working on macOS.
The default API provided by Electron doesn't work as expected. More info here - https://github.com/electron/electron/issues/15728 Fixes: #866.
This commit is contained in:
@@ -711,10 +711,8 @@ class ServerManagerView {
|
||||
}
|
||||
|
||||
updateGeneralSettings(setting: string, value: any): void {
|
||||
const selector = 'webview:not([class*=disabled])';
|
||||
const webview: Electron.WebviewTag = document.querySelector(selector);
|
||||
if (webview) {
|
||||
const webContents = webview.getWebContents();
|
||||
if (this.getActiveWebview()) {
|
||||
const webContents = this.getActiveWebview().getWebContents();
|
||||
webContents.send(setting, value);
|
||||
}
|
||||
}
|
||||
@@ -738,6 +736,12 @@ class ServerManagerView {
|
||||
return !(url.endsWith('/login/') || this.tabs[tabIndex].webview.loading);
|
||||
}
|
||||
|
||||
getActiveWebview(): Electron.WebviewTag {
|
||||
const selector = 'webview:not(.disabled)';
|
||||
const webview: Electron.WebviewTag = document.querySelector(selector);
|
||||
return webview;
|
||||
}
|
||||
|
||||
addContextMenu($serverImg: HTMLImageElement, index: number): void {
|
||||
$serverImg.addEventListener('contextmenu', e => {
|
||||
e.preventDefault();
|
||||
@@ -909,9 +913,7 @@ class ServerManagerView {
|
||||
ipcRenderer.on('toggle-dnd', (event: Event, state: boolean, newSettings: SettingsOptions) => {
|
||||
this.toggleDNDButton(state);
|
||||
ipcRenderer.send('forward-message', 'toggle-silent', newSettings.silent);
|
||||
const selector = 'webview:not([class*=disabled])';
|
||||
const webview: Electron.WebviewTag = document.querySelector(selector);
|
||||
const webContents = webview.getWebContents();
|
||||
const webContents = this.getActiveWebview().getWebContents();
|
||||
webContents.send('toggle-dnd', state, newSettings);
|
||||
});
|
||||
|
||||
@@ -1016,6 +1018,15 @@ class ServerManagerView {
|
||||
this.openSettings('AddServer');
|
||||
});
|
||||
|
||||
// Redo and undo functionality since the default API doesn't work on macOS
|
||||
ipcRenderer.on('undo', () => {
|
||||
return this.getActiveWebview().undo();
|
||||
});
|
||||
|
||||
ipcRenderer.on('redo', () => {
|
||||
return this.getActiveWebview().redo();
|
||||
});
|
||||
|
||||
ipcRenderer.on('set-active', () => {
|
||||
const webviews: NodeListOf<Electron.WebviewTag> = document.querySelectorAll('webview');
|
||||
webviews.forEach(webview => {
|
||||
|
||||
Reference in New Issue
Block a user