Skip to content

Commit aaefd3a

Browse files
committed
broadcast zoom changed notifications
1 parent f59fdb5 commit aaefd3a

3 files changed

Lines changed: 21 additions & 11 deletions

File tree

emain/emain-menu.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { focusedBuilderWindow, getBuilderWindowById } from "./emain-builder";
99
import { openBuilderWindow } from "./emain-ipc";
1010
import { isDev, unamePlatform } from "./emain-platform";
1111
import { clearTabCache } from "./emain-tabview";
12-
import { decreaseZoomLevel, increaseZoomLevel } from "./emain-util";
12+
import { decreaseZoomLevel, increaseZoomLevel, resetZoomLevel } from "./emain-util";
1313
import {
1414
createNewWaveWindow,
1515
createWorkspace,
@@ -238,8 +238,7 @@ function makeViewMenu(
238238
click: (_, window) => {
239239
const wc = getWindowWebContents(window) ?? webContents;
240240
if (wc) {
241-
wc.setZoomFactor(1);
242-
wc.send("zoom-factor-change", 1);
241+
resetZoomLevel(wc);
243242
}
244243
},
245244
},

emain/emain-tabview.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
handleCtrlShiftFocus,
1616
handleCtrlShiftState,
1717
increaseZoomLevel,
18+
resetZoomLevel,
1819
shFrameNavHandler,
1920
shNavHandler,
2021
} from "./emain-util";
@@ -48,8 +49,7 @@ function handleWindowsMenuAccelerators(
4849
}
4950

5051
if (checkKeyPressed(waveEvent, "Ctrl:0")) {
51-
tabView.webContents.setZoomFactor(1);
52-
tabView.webContents.send("zoom-factor-change", 1);
52+
resetZoomLevel(tabView.webContents);
5353
return true;
5454
}
5555

@@ -165,7 +165,7 @@ export class WaveTabView extends WebContentsView {
165165
removeWaveTabView(this.waveTabId);
166166
this.isDestroyed = true;
167167
});
168-
this.webContents.on("zoom-changed", (_event, zoomDirection) => {
168+
this.webContents.on("zoom-changed", (_event, _zoomDirection) => {
169169
this.webContents.send("zoom-factor-change", this.webContents.getZoomFactor());
170170
});
171171
this.setBackgroundColor(computeBgColor(fullConfig));
@@ -339,9 +339,6 @@ export async function getOrCreateWebViewForTab(waveWindowId: string, tabId: stri
339339
}
340340
}
341341
});
342-
tabView.webContents.on("zoom-changed", (e) => {
343-
tabView.webContents.send("zoom-changed");
344-
});
345342
tabView.webContents.setWindowOpenHandler(({ url, frameName }) => {
346343
if (url.startsWith("http://") || url.startsWith("https://") || url.startsWith("file://")) {
347344
console.log("openExternal fallback", url);

emain/emain-util.ts

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,30 @@ const MinZoomLevel = 0.4;
1212
const MaxZoomLevel = 2.6;
1313
const ZoomDelta = 0.2;
1414

15+
function broadcastZoomFactorChanged(newZoomFactor: number): void {
16+
for (const wc of electron.webContents.getAllWebContents()) {
17+
if (wc.isDestroyed()) {
18+
continue;
19+
}
20+
wc.send("zoom-factor-change", newZoomFactor);
21+
}
22+
}
23+
1524
export function increaseZoomLevel(webContents: electron.WebContents): void {
1625
const newZoom = Math.min(MaxZoomLevel, webContents.getZoomFactor() + ZoomDelta);
1726
webContents.setZoomFactor(newZoom);
18-
webContents.send("zoom-factor-change", newZoom);
27+
broadcastZoomFactorChanged(newZoom);
1928
}
2029

2130
export function decreaseZoomLevel(webContents: electron.WebContents): void {
2231
const newZoom = Math.max(MinZoomLevel, webContents.getZoomFactor() - ZoomDelta);
2332
webContents.setZoomFactor(newZoom);
24-
webContents.send("zoom-factor-change", newZoom);
33+
broadcastZoomFactorChanged(newZoom);
34+
}
35+
36+
export function resetZoomLevel(webContents: electron.WebContents): void {
37+
webContents.setZoomFactor(1);
38+
broadcastZoomFactorChanged(1);
2539
}
2640

2741
export function getElectronExecPath(): string {

0 commit comments

Comments
 (0)