@@ -17,7 +17,11 @@ import {
1717import AppMenu , { AppMenuItem } from "../menu" ;
1818import showManageWindow from "../windows/manage" ;
1919import { registerGlobalShortcut , unregisterGlobalShortcut } from "../shortcuts" ;
20- import { kvGet } from "../kv" ;
20+ import {
21+ addEventListener as addKVEventListener ,
22+ KvChangeEvent ,
23+ kvGet ,
24+ } from "../kv" ;
2125
2226function shouldApplyScaleFactor ( ) {
2327 return (
@@ -137,6 +141,8 @@ registerCallHandler<[], [WindowPosition]>(
137141 }
138142) ;
139143
144+ type SizeLimit = { x : number ; y : number } ;
145+ let mainWindowSizeLimits : [ SizeLimit , SizeLimit ] | null = null ;
140146registerCallHandler < [ { x : number ; y : number } , { x : number ; y : number } ] , void > (
141147 "winhelper.setWindowSizeLimit" ,
142148 ( event , min , max ) => {
@@ -145,11 +151,42 @@ registerCallHandler<[{ x: number; y: number }, { x: number; y: number }], void>(
145151 const scaleFactor = shouldApplyScaleFactor ( )
146152 ? getWindowScaleFactor ( wnd )
147153 : 1 ;
148- // Use window module to set maximum size to avoid issues with maximized/fullscreen windows
149- setMinimumSize ( wnd , min . x , min . y ) ;
150- setMaximumSize ( wnd , max . x * scaleFactor , max . y * scaleFactor ) ;
154+ if (
155+ wnd !== mainWindow ||
156+ kvGet ( "window.overrideMainWindowSizeLimit" ) !== "true"
157+ ) {
158+ // Use window module to set maximum size to avoid issues with maximized/fullscreen windows
159+ setMinimumSize ( wnd , min . x , min . y ) ;
160+ setMaximumSize ( wnd , max . x * scaleFactor , max . y * scaleFactor ) ;
161+ }
162+ if ( wnd == mainWindow ) {
163+ mainWindowSizeLimits = [
164+ min ,
165+ { x : max . x * scaleFactor , y : max . y * scaleFactor } ,
166+ ] ;
167+ }
151168 }
152169) ;
170+ addKVEventListener ( "change" , ( ( e : KvChangeEvent ) => {
171+ const { key, current } = e . detail ;
172+ if ( key === "window.overrideMainWindowSizeLimit" ) {
173+ if ( current === "true" || ! mainWindowSizeLimits ) {
174+ setMinimumSize ( mainWindow , 0 , 0 ) ;
175+ setMaximumSize ( mainWindow , 0 , 0 ) ;
176+ } else {
177+ setMinimumSize (
178+ mainWindow ,
179+ mainWindowSizeLimits [ 0 ] . x ,
180+ mainWindowSizeLimits [ 0 ] . y
181+ ) ;
182+ setMaximumSize (
183+ mainWindow ,
184+ mainWindowSizeLimits [ 1 ] . x ,
185+ mainWindowSizeLimits [ 1 ] . y
186+ ) ;
187+ }
188+ }
189+ } ) as EventListener ) ;
153190
154191registerCallHandler < [ ] , void > ( "winhelper.bringWindowToTop" , ( event ) => {
155192 const wnd = BrowserWindow . fromWebContents ( event . sender ) ;
0 commit comments