@@ -31,6 +31,8 @@ export interface WindowState {
31
31
isMaximized : boolean ;
32
32
}
33
33
34
+
35
+
34
36
/**
35
37
* 窗口大小管理器
36
38
* 负责保存、恢复和维护窗口大小状态
@@ -337,19 +339,23 @@ class WindowSizeManager {
337
339
isMaximized : false
338
340
} ;
339
341
}
340
-
342
+
343
+ // 检查是否是mini模式窗口(根据窗口大小判断)
344
+ const [ currentWidth , currentHeight ] = win . getSize ( ) ;
345
+ const isMiniMode = currentWidth === DEFAULT_MINI_WIDTH && currentHeight === DEFAULT_MINI_HEIGHT ;
346
+
341
347
const isMaximized = win . isMaximized ( ) ;
342
348
let state : WindowState ;
343
-
349
+
344
350
if ( isMaximized ) {
345
351
// 如果窗口处于最大化状态,保存最大化标志
346
352
// 由于 Electron 的限制,最大化状态下 getBounds() 可能不准确
347
353
// 所以我们尽量保留之前保存的非最大化时的大小
348
354
const currentBounds = win . getBounds ( ) ;
349
- const previousSize = this . savedState && ! this . savedState . isMaximized
355
+ const previousSize = this . savedState && ! this . savedState . isMaximized
350
356
? { width : this . savedState . width , height : this . savedState . height }
351
357
: { width : currentBounds . width , height : currentBounds . height } ;
352
-
358
+
353
359
state = {
354
360
width : previousSize . width ,
355
361
height : previousSize . height ,
@@ -359,7 +365,7 @@ class WindowSizeManager {
359
365
} ;
360
366
console . log ( 'state IsMaximized' , state )
361
367
362
- }
368
+ }
363
369
else if ( win . isMinimized ( ) ) {
364
370
// 最小化状态下不保存窗口大小,因为可能不准确
365
371
console . log ( 'state IsMinimized' , this . savedState )
@@ -368,12 +374,12 @@ class WindowSizeManager {
368
374
height : DEFAULT_MAIN_HEIGHT ,
369
375
isMaximized : false
370
376
} ;
371
- }
377
+ }
372
378
else {
373
379
// 正常状态下保存当前大小和位置
374
380
const [ width , height ] = win . getSize ( ) ;
375
381
const [ x , y ] = win . getPosition ( ) ;
376
-
382
+
377
383
state = {
378
384
width,
379
385
height,
@@ -383,15 +389,21 @@ class WindowSizeManager {
383
389
} ;
384
390
console . log ( 'state IsNormal' , state )
385
391
}
386
-
392
+
393
+ // 如果是mini模式,不保存到持久化存储,只返回状态用于内存中的恢复
394
+ if ( isMiniMode ) {
395
+ console . log ( '检测到mini模式窗口,不保存到持久化存储' ) ;
396
+ return state ;
397
+ }
398
+
387
399
// 保存状态到存储
388
400
this . store . set ( WINDOW_STATE_KEY , state ) ;
389
401
console . log ( `已保存窗口状态: ${ JSON . stringify ( state ) } ` ) ;
390
-
402
+
391
403
// 更新内部状态
392
404
this . savedState = state ;
393
405
console . log ( 'state' , state )
394
-
406
+
395
407
return state ;
396
408
}
397
409
@@ -400,12 +412,12 @@ class WindowSizeManager {
400
412
*/
401
413
getWindowState ( ) : WindowState | null {
402
414
const state = this . store . get ( WINDOW_STATE_KEY ) as WindowState | undefined ;
403
-
415
+
404
416
if ( ! state ) {
405
417
console . log ( '未找到保存的窗口状态,将使用默认值' ) ;
406
418
return null ;
407
419
}
408
-
420
+
409
421
// 验证尺寸,确保不小于最小值
410
422
const validatedState : WindowState = {
411
423
width : Math . max ( MIN_WIDTH , state . width || DEFAULT_MAIN_WIDTH ) ,
@@ -414,11 +426,13 @@ class WindowSizeManager {
414
426
y : state . y ,
415
427
isMaximized : ! ! state . isMaximized
416
428
} ;
417
-
429
+
418
430
console . log ( `读取保存的窗口状态: ${ JSON . stringify ( validatedState ) } ` ) ;
419
-
431
+
420
432
return validatedState ;
421
433
}
434
+
435
+
422
436
423
437
/**
424
438
* 检查位置是否在可见屏幕范围内
@@ -697,4 +711,5 @@ export const initWindowSizeHandlers = (mainWindow: BrowserWindow | null): void =
697
711
698
712
export const calculateMinimumWindowSize = ( ) : { minWidth : number ; minHeight : number } => {
699
713
return { minWidth : MIN_WIDTH , minHeight : MIN_HEIGHT } ;
700
- } ;
714
+ } ;
715
+
0 commit comments