diff --git a/Flow.Launcher.Core/Resource/Theme.cs b/Flow.Launcher.Core/Resource/Theme.cs index e30216ef9..a2258ea57 100644 --- a/Flow.Launcher.Core/Resource/Theme.cs +++ b/Flow.Launcher.Core/Resource/Theme.cs @@ -236,36 +236,36 @@ namespace Flow.Launcher.Core.Resource } - public void SetCornerForWindow() - { - Application.Current.Dispatcher.Invoke(() => - { - var dict = GetThemeResourceDictionary(_settings.Theme); - if (dict == null) - return; + //public void SetCornerForWindow() + //{ + // Application.Current.Dispatcher.Invoke(() => + // { + // var dict = GetThemeResourceDictionary(_settings.Theme); + // if (dict == null) + // return; - System.Windows.Window mainWindow = Application.Current.MainWindow; - if (mainWindow == null) - return; + // System.Windows.Window mainWindow = Application.Current.MainWindow; + // if (mainWindow == null) + // return; - if (dict.Contains("CornerType") && dict["CornerType"] is string cornerMode) - { - DWM_WINDOW_CORNER_PREFERENCE preference = cornerMode switch - { - "DoNotRound" => DWM_WINDOW_CORNER_PREFERENCE.DoNotRound, - "Round" => DWM_WINDOW_CORNER_PREFERENCE.Round, - "RoundSmall" => DWM_WINDOW_CORNER_PREFERENCE.RoundSmall, - _ => DWM_WINDOW_CORNER_PREFERENCE.Default, - }; + // if (dict.Contains("CornerType") && dict["CornerType"] is string cornerMode) + // { + // DWM_WINDOW_CORNER_PREFERENCE preference = cornerMode switch + // { + // "DoNotRound" => DWM_WINDOW_CORNER_PREFERENCE.DoNotRound, + // "Round" => DWM_WINDOW_CORNER_PREFERENCE.Round, + // "RoundSmall" => DWM_WINDOW_CORNER_PREFERENCE.RoundSmall, + // _ => DWM_WINDOW_CORNER_PREFERENCE.Default, + // }; - SetWindowCornerPreference(mainWindow, preference); - } - else - { - SetWindowCornerPreference(mainWindow, DWM_WINDOW_CORNER_PREFERENCE.Default); - } - }, DispatcherPriority.Normal); - } + // SetWindowCornerPreference(mainWindow, preference); + // } + // else + // { + // SetWindowCornerPreference(mainWindow, DWM_WINDOW_CORNER_PREFERENCE.Default); + // } + // }, DispatcherPriority.Normal); + //} /// @@ -389,7 +389,7 @@ namespace Flow.Launcher.Core.Resource Application.Current.Dispatcher.Invoke(() => { - // 1. 기존 WindowBorderStyle을 복사 + // ✅ 기존 WindowBorderStyle을 복사 var previewStyle = new Style(typeof(Border)); if (Application.Current.Resources.Contains("WindowBorderStyle")) { @@ -403,16 +403,23 @@ namespace Flow.Launcher.Core.Resource } } - // 2. 투명도 제거 후 background 적용 + // ✅ 배경색 적용 (투명도 제거) Color backgroundColor = Color.FromRgb(bgColor.Value.R, bgColor.Value.G, bgColor.Value.B); previewStyle.Setters.Add(new Setter(Border.BackgroundProperty, new SolidColorBrush(backgroundColor))); - // 3. 기타 설정 추가 - previewStyle.Setters.Add(new Setter(Border.BorderThicknessProperty, new Thickness(0))); - previewStyle.Setters.Add(new Setter(Border.CornerRadiusProperty, new CornerRadius(5))); - previewStyle.Setters.Add(new Setter(Border.UseLayoutRoundingProperty, true)); - previewStyle.Setters.Add(new Setter(Border.SnapsToDevicePixelsProperty, true)); + // ✅ 블러 테마면 CornerRadius = 5, 비블러 테마면 기존 스타일 유지 + if (BlurEnabled) + { + previewStyle.Setters.Add(new Setter(Border.CornerRadiusProperty, new CornerRadius(5))); + previewStyle.Setters.Add(new Setter(Border.BorderThicknessProperty, new Thickness(1))); + } + // ✅ 기타 설정 추가 + //previewStyle.Setters.Add(new Setter(Border.BorderThicknessProperty, new Thickness(1))); + //previewStyle.Setters.Add(new Setter(Border.UseLayoutRoundingProperty, true)); + //reviewStyle.Setters.Add(new Setter(Border.SnapsToDevicePixelsProperty, true)); + + // ✅ 최종 적용 Application.Current.Resources["PreviewWindowBorderStyle"] = previewStyle; }, DispatcherPriority.Render); } diff --git a/Flow.Launcher/SettingPages/ViewModels/SettingsPaneThemeViewModel.cs b/Flow.Launcher/SettingPages/ViewModels/SettingsPaneThemeViewModel.cs index 2f1362db2..73ce7217c 100644 --- a/Flow.Launcher/SettingPages/ViewModels/SettingsPaneThemeViewModel.cs +++ b/Flow.Launcher/SettingPages/ViewModels/SettingsPaneThemeViewModel.cs @@ -35,20 +35,23 @@ public partial class SettingsPaneThemeViewModel : BaseModel _selectedTheme = value; ThemeManager.Instance.ChangeTheme(value.FileNameWithoutExtension); - // ✅ 테마 변경 후 BackdropType 자동 업데이트 + // ✅ 비블러 테마로 변경 시 BackdropType을 None으로 자동 설정 if (!ThemeManager.Instance.BlurEnabled) { Settings.BackdropType = BackdropTypes.None; } + // ✅ 블러 테마에서는 DropShadow를 자동으로 켜고 비활성화 (사용자 변경 불가) + if (ThemeManager.Instance.BlurEnabled) + { + Settings.UseDropShadowEffect = true; + } + + // ✅ UI 상태 업데이트 OnPropertyChanged(nameof(BackdropType)); OnPropertyChanged(nameof(IsBackdropEnabled)); - - if (ThemeManager.Instance.BlurEnabled && Settings.UseDropShadowEffect == false) - { - DropShadowEffect = true; - OnPropertyChanged(nameof(IsDropShadowEnabled)); - } + OnPropertyChanged(nameof(IsDropShadowEnabled)); + OnPropertyChanged(nameof(DropShadowEffect)); ThemeManager.Instance.RefreshFrame(); } @@ -61,12 +64,14 @@ public partial class SettingsPaneThemeViewModel : BaseModel get => Settings.UseDropShadowEffect; set { - if (ThemeManager.Instance.BlurEnabled && value == false) + if (ThemeManager.Instance.BlurEnabled) { + // 🔥 블러 테마에서는 항상 DropShadowEffect = true 유지 Settings.UseDropShadowEffect = true; return; } + // ✅ 비블러 테마에서는 사용자가 수동으로 변경 가능 if (value) { ThemeManager.Instance.AddDropShadowEffectToCurrentTheme(); @@ -77,6 +82,9 @@ public partial class SettingsPaneThemeViewModel : BaseModel } Settings.UseDropShadowEffect = value; + + // ✅ UI 업데이트 + OnPropertyChanged(nameof(DropShadowEffect)); } }