diff --git a/main.js b/main.js index 5faa8eb80..a74b56c49 100644 --- a/main.js +++ b/main.js @@ -310,6 +310,27 @@ function handleCommonWindowEvents(window) { console.error(`Preload error in ${preloadPath}: `, error.message); }); + // Works only for mainWindow because it has `enablePreferredSizeMode` + let lastZoomFactor = window.webContents.getZoomFactor(); + const onZoomChanged = () => { + const zoomFactor = mainWindow.webContents.getZoomFactor(); + if (lastZoomFactor === zoomFactor) { + return; + } + + if (window.webContents) { + window.webContents.send('callbacks:call:setPassiveZoomFactor', [ + zoomFactor, + ]); + if (settingsWindow && settingsWindow.webContents) { + settingsWindow.webContents.send('render'); + } + } + + lastZoomFactor = zoomFactor; + }; + window.webContents.on('preferred-size-changed', onZoomChanged); + nativeThemeNotifier.addWindow(window); } @@ -386,6 +407,7 @@ async function createWindow() { nativeWindowOpen: true, spellcheck: await getSpellCheckSetting(), backgroundThrottling: false, + enablePreferredSizeMode: true, }, icon: windowIcon, ..._.pick(windowConfig, ['autoHideMenuBar', 'width', 'height', 'x', 'y']), diff --git a/ts/components/Preferences.tsx b/ts/components/Preferences.tsx index add2fce55..7cf298415 100644 --- a/ts/components/Preferences.tsx +++ b/ts/components/Preferences.tsx @@ -154,6 +154,29 @@ enum Page { ChatColor = 'ChatColor', } +const DEFAULT_ZOOM_FACTORS = [ + { + text: '75%', + value: 0.75, + }, + { + text: '100%', + value: 1, + }, + { + text: '125%', + value: 1.25, + }, + { + text: '150%', + value: 1.5, + }, + { + text: '200%', + value: 2, + }, +]; + export const Preferences = ({ addCustomColor, availableCameras, @@ -386,6 +409,18 @@ export const Preferences = ({ ); } else if (page === Page.Appearance) { + let zoomFactors = DEFAULT_ZOOM_FACTORS; + + if (!zoomFactors.some(({ value }) => value === zoomFactor)) { + zoomFactors = [ + ...zoomFactors, + { + text: `${Math.round(zoomFactor * 100)}%`, + value: zoomFactor, + }, + ].sort((a, b) => a.value - b.value); + } + settings = ( <>
@@ -438,28 +473,7 @@ export const Preferences = ({ right={