@@ -31,6 +31,7 @@ interface ZoomWindow {
3131}
3232
3333interface ZoomState {
34+ currentZoomLevel : number ;
3435 deferredActions : Array < ( ) => void > ;
3536 wheelZoomDelta : number ;
3637 wheelZoomTimeout : ReturnType < typeof setTimeout > | null ;
@@ -46,6 +47,10 @@ function getSavedZoomLevel(): number {
4647 return clampZoomLevel ( windowStateStore . get ( "zoomLevel" , 0 ) ) ;
4748}
4849
50+ function getCurrentZoomLevel ( window : ZoomWindow ) : number {
51+ return zoomStates . get ( window ) ?. currentZoomLevel ?? getSavedZoomLevel ( ) ;
52+ }
53+
4954function runAfterWheelZoom ( window : ZoomWindow , action : ( ) => void ) : void {
5055 const state = zoomStates . get ( window ) ;
5156 if ( ! state ?. wheelZoomTimeout ) {
@@ -58,6 +63,8 @@ function runAfterWheelZoom(window: ZoomWindow, action: () => void): void {
5863
5964export function setWindowZoom ( window : ZoomWindow , level : number ) : void {
6065 const nextLevel = clampZoomLevel ( level ) ;
66+ const state = zoomStates . get ( window ) ;
67+ if ( state ) state . currentZoomLevel = nextLevel ;
6168 window . webContents . setZoomLevel ( nextLevel ) ;
6269 saveZoomLevel ( nextLevel ) ;
6370}
@@ -67,19 +74,21 @@ export function adjustWindowZoom(
6774 delta : number | "reset" ,
6875) : void {
6976 runAfterWheelZoom ( window , ( ) => {
70- const nextLevel = delta === "reset" ? 0 : getSavedZoomLevel ( ) + delta ;
77+ const nextLevel =
78+ delta === "reset" ? 0 : getCurrentZoomLevel ( window ) + delta ;
7179 setWindowZoom ( window , nextLevel ) ;
7280 } ) ;
7381}
7482
7583export function restoreWindowZoom ( window : ZoomWindow ) : void {
7684 runAfterWheelZoom ( window , ( ) => {
77- window . webContents . setZoomLevel ( getSavedZoomLevel ( ) ) ;
85+ window . webContents . setZoomLevel ( getCurrentZoomLevel ( window ) ) ;
7886 } ) ;
7987}
8088
8189export function setupWindowZoom ( window : ZoomWindow ) : void {
8290 const state : ZoomState = {
91+ currentZoomLevel : getSavedZoomLevel ( ) ,
8392 deferredActions : [ ] ,
8493 wheelZoomDelta : 0 ,
8594 wheelZoomTimeout : null ,
@@ -100,7 +109,7 @@ export function setupWindowZoom(window: ZoomWindow): void {
100109 event . preventDefault ( ) ;
101110 state . wheelZoomDelta += zoomDirection === "in" ? ZOOM_STEP : - ZOOM_STEP ;
102111 state . wheelZoomTimeout ??= setTimeout ( ( ) => {
103- const nextLevel = getSavedZoomLevel ( ) + state . wheelZoomDelta ;
112+ const nextLevel = state . currentZoomLevel + state . wheelZoomDelta ;
104113 state . wheelZoomDelta = 0 ;
105114 state . wheelZoomTimeout = null ;
106115 setWindowZoom ( window , nextLevel ) ;
0 commit comments