@@ -420,6 +420,7 @@ private void ApplyPreviewBackground(Color? bgColor = null)
420420
421421 public void ColorizeWindow ( string Mode )
422422 {
423+ Debug . WriteLine ( "창 DWM 색상 설정" ) ;
423424 Application . Current . Dispatcher . Invoke ( ( ) =>
424425 {
425426 var dict = GetThemeResourceDictionary ( _settings . Theme ) ;
@@ -431,6 +432,37 @@ public void ColorizeWindow(string Mode)
431432 // ✅ 블러 테마인지 확인
432433 bool hasBlur = dict . Contains ( "ThemeBlurEnabled" ) && dict [ "ThemeBlurEnabled" ] is bool b && b ;
433434
435+ // ✅ SystemBG 값 확인 (Auto, Light, Dark)
436+ string systemBG = dict . Contains ( "SystemBG" ) ? dict [ "SystemBG" ] as string : "Auto" ; // 기본값 Auto
437+
438+ // ✅ 사용자의 ColorScheme 설정 확인
439+ string colorScheme = _settings . ColorScheme ;
440+
441+ // ✅ 시스템의 다크 모드 설정 확인 (AppsUseLightTheme 값 읽기)
442+ int themeValue = ( int ) Registry . GetValue ( @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize" , "AppsUseLightTheme" , 1 ) ;
443+ bool isSystemDark = themeValue == 0 ;
444+
445+ // ✅ 최종적으로 사용할 다크 모드 여부 결정
446+ bool useDarkMode = false ;
447+
448+ if ( colorScheme == "Dark" || systemBG == "Dark" )
449+ {
450+ useDarkMode = true ; // 사용자가 강제 다크 모드 선택
451+ }
452+ else if ( colorScheme == "Light" || systemBG == "Light" )
453+ {
454+ useDarkMode = false ; // 사용자가 강제 라이트 모드 선택
455+ }
456+ else if ( colorScheme == "System" || systemBG == "Auto" )
457+ {
458+ useDarkMode = isSystemDark ; // 시스템 설정을 따름
459+ }
460+
461+ Debug . WriteLine ( $ "[ColorizeWindow] SystemBG: { systemBG } , ColorScheme: { colorScheme } , 시스템 다크 모드 여부: { isSystemDark } , 최종 적용: { useDarkMode } ") ;
462+
463+ // ✅ DWM 다크 모드 설정 적용
464+ Methods . SetWindowAttribute ( new WindowInteropHelper ( mainWindow ) . Handle , DWMWINDOWATTRIBUTE . DWMWA_USE_IMMERSIVE_DARK_MODE , useDarkMode ? 1 : 0 ) ;
465+
434466 Color LightBG ;
435467 Color DarkBG ;
436468
@@ -454,11 +486,7 @@ public void ColorizeWindow(string Mode)
454486 DarkBG = LightBG ;
455487 }
456488
457- // ✅ 설정의 ColorScheme을 우선 사용
458- int themeValue = ( int ) Registry . GetValue ( @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize" , "AppsUseLightTheme" , 1 ) ;
459- bool isSystemDark = themeValue == 0 ;
460- bool useDarkMode = Mode == "Dark" || ( Mode == "Auto" && _settings . ColorScheme == "System" && isSystemDark ) || ( _settings . ColorScheme == "Dark" ) ;
461-
489+ // ✅ ColorScheme과 SystemBG에 맞춰서 배경색 선택
462490 Color selectedBG = useDarkMode ? DarkBG : LightBG ;
463491 ApplyPreviewBackground ( selectedBG ) ;
464492
@@ -479,16 +507,14 @@ public void ColorizeWindow(string Mode)
479507 mainWindow . Background = new SolidColorBrush ( selectedBG ) ;
480508 }
481509 }
482-
483- // ✅ DWM 다크 모드 적용
484- Methods . SetWindowAttribute ( new WindowInteropHelper ( mainWindow ) . Handle , DWMWINDOWATTRIBUTE . DWMWA_USE_IMMERSIVE_DARK_MODE , useDarkMode ? 1 : 0 ) ;
485510 } , DispatcherPriority . Normal ) ;
486511 }
487512
488513
489514
490515
491516
517+
492518 public bool IsBlurTheme ( )
493519 {
494520 if ( Environment . OSVersion . Version >= new Version ( 6 , 2 ) )
0 commit comments