From 5b81cf5484468839131b276ee4d25ecc2d7f4c07 Mon Sep 17 00:00:00 2001 From: DB p Date: Sun, 2 Mar 2025 07:51:20 +0900 Subject: [PATCH] Adjust Shadow Effect --- Flow.Launcher.Core/Resource/Theme.cs | 109 +++++++++--------- Flow.Launcher/Languages/en.xaml | 2 + Flow.Launcher/MainWindow.xaml.cs | 5 + .../ViewModels/SettingsPaneThemeViewModel.cs | 25 ++-- .../SettingPages/Views/SettingsPaneTheme.xaml | 2 +- 5 files changed, 76 insertions(+), 67 deletions(-) diff --git a/Flow.Launcher.Core/Resource/Theme.cs b/Flow.Launcher.Core/Resource/Theme.cs index a075b7d54..fe3520812 100644 --- a/Flow.Launcher.Core/Resource/Theme.cs +++ b/Flow.Launcher.Core/Resource/Theme.cs @@ -189,7 +189,6 @@ namespace Flow.Launcher.Core.Resource /// public void SetBlurForWindow() { - //SetWindowAccent(); var dict = GetThemeResourceDictionary(_settings.Theme); if (dict == null) @@ -218,6 +217,7 @@ namespace Flow.Launcher.Core.Resource // windowBorderStyle.Setters.Add(windowBorderStyle.Setters.OfType().FirstOrDefault(x => x.Property.Name == "Background")); //} Methods.SetWindowAttribute(new WindowInteropHelper(mainWindow).Handle, DWMWINDOWATTRIBUTE.DWMWA_SYSTEMBACKDROP_TYPE, 1); + } UpdateResourceDictionary(dict); } @@ -655,47 +655,47 @@ namespace Flow.Launcher.Core.Resource { var dict = GetCurrentResourceDictionary(); - var windowBorderStyle = dict["WindowBorderStyle"] as Style; + //var windowBorderStyle = dict["WindowBorderStyle"] as Style; - var effectSetter = new Setter - { - Property = Border.EffectProperty, - Value = new DropShadowEffect - { - Opacity = 0.3, - ShadowDepth = 12, - Direction = 270, - BlurRadius = 30 - } - }; + //var effectSetter = new Setter + //{ + // Property = Border.EffectProperty, + // Value = new DropShadowEffect + // { + // Opacity = 0.3, + // ShadowDepth = 12, + // Direction = 270, + // BlurRadius = 30 + // } + //}; - var marginSetter = windowBorderStyle.Setters.FirstOrDefault(setterBase => setterBase is Setter setter && setter.Property == Border.MarginProperty) as Setter; - if (marginSetter == null) - { - var margin = new Thickness(ShadowExtraMargin, 12, ShadowExtraMargin, ShadowExtraMargin); - marginSetter = new Setter() - { - Property = Border.MarginProperty, - Value = margin, - }; - windowBorderStyle.Setters.Add(marginSetter); + //var marginSetter = windowBorderStyle.Setters.FirstOrDefault(setterBase => setterBase is Setter setter && setter.Property == Border.MarginProperty) as Setter; + //if (marginSetter == null) + //{ + // var margin = new Thickness(ShadowExtraMargin, 12, ShadowExtraMargin, ShadowExtraMargin); + // marginSetter = new Setter() + // { + // Property = Border.MarginProperty, + // Value = margin, + // }; + // windowBorderStyle.Setters.Add(marginSetter); - SetResizeBoarderThickness(margin); - } - else - { - var baseMargin = (Thickness)marginSetter.Value; - var newMargin = new Thickness( - baseMargin.Left + ShadowExtraMargin, - baseMargin.Top + ShadowExtraMargin, - baseMargin.Right + ShadowExtraMargin, - baseMargin.Bottom + ShadowExtraMargin); - marginSetter.Value = newMargin; + // SetResizeBoarderThickness(margin); + //} + //else + //{ + // var baseMargin = (Thickness)marginSetter.Value; + // var newMargin = new Thickness( + // baseMargin.Left + ShadowExtraMargin, + // baseMargin.Top + ShadowExtraMargin, + // baseMargin.Right + ShadowExtraMargin, + // baseMargin.Bottom + ShadowExtraMargin); + // marginSetter.Value = newMargin; - SetResizeBoarderThickness(newMargin); - } + // SetResizeBoarderThickness(newMargin); + //} - windowBorderStyle.Setters.Add(effectSetter); + //windowBorderStyle.Setters.Add(effectSetter); UpdateResourceDictionary(dict); } @@ -703,25 +703,26 @@ namespace Flow.Launcher.Core.Resource public void RemoveDropShadowEffectFromCurrentTheme() { var dict = GetCurrentResourceDictionary(); - var windowBorderStyle = dict["WindowBorderStyle"] as Style; + mainWindow.WindowStyle = WindowStyle.None; + //var windowBorderStyle = dict["WindowBorderStyle"] as Style; - var effectSetter = windowBorderStyle.Setters.FirstOrDefault(setterBase => setterBase is Setter setter && setter.Property == Border.EffectProperty) as Setter; - var marginSetter = windowBorderStyle.Setters.FirstOrDefault(setterBase => setterBase is Setter setter && setter.Property == Border.MarginProperty) as Setter; + //var effectSetter = windowBorderStyle.Setters.FirstOrDefault(setterBase => setterBase is Setter setter && setter.Property == Border.EffectProperty) as Setter; + //var marginSetter = windowBorderStyle.Setters.FirstOrDefault(setterBase => setterBase is Setter setter && setter.Property == Border.MarginProperty) as Setter; - if (effectSetter != null) - { - windowBorderStyle.Setters.Remove(effectSetter); - } - if (marginSetter != null) - { - var currentMargin = (Thickness)marginSetter.Value; - var newMargin = new Thickness( - currentMargin.Left - ShadowExtraMargin, - currentMargin.Top - ShadowExtraMargin, - currentMargin.Right - ShadowExtraMargin, - currentMargin.Bottom - ShadowExtraMargin); - marginSetter.Value = newMargin; - } + //if (effectSetter != null) + //{ + // windowBorderStyle.Setters.Remove(effectSetter); + //} + //if (marginSetter != null) + //{ + // var currentMargin = (Thickness)marginSetter.Value; + // var newMargin = new Thickness( + // currentMargin.Left - ShadowExtraMargin, + // currentMargin.Top - ShadowExtraMargin, + // currentMargin.Right - ShadowExtraMargin, + // currentMargin.Bottom - ShadowExtraMargin); + // marginSetter.Value = newMargin; + //} SetResizeBoarderThickness(null); diff --git a/Flow.Launcher/Languages/en.xaml b/Flow.Launcher/Languages/en.xaml index 058a51ae3..36a1aa2d4 100644 --- a/Flow.Launcher/Languages/en.xaml +++ b/Flow.Launcher/Languages/en.xaml @@ -104,6 +104,8 @@ Always Preview Always open preview panel when Flow activates. Press {0} to toggle preview. Shadow effect is not allowed while current theme has blur effect enabled + The shadow effect transition takes effect after the program restarts + Translucent themes cannot turn off shadow effects Search Plugin diff --git a/Flow.Launcher/MainWindow.xaml.cs b/Flow.Launcher/MainWindow.xaml.cs index 5237bdf38..7ffd5e3e3 100644 --- a/Flow.Launcher/MainWindow.xaml.cs +++ b/Flow.Launcher/MainWindow.xaml.cs @@ -67,6 +67,11 @@ namespace Flow.Launcher var win = HwndSource.FromHwnd(handle); win.AddHook(WndProc); }; + if (_settings.UseDropShadowEffect == false) /* Shadow Effect */ + { + FlowMainWindow.WindowStyle = WindowStyle.None; + FlowMainWindow.AllowsTransparency = true; + } } DispatcherTimer timer = new DispatcherTimer { Interval = new TimeSpan(0, 0, 0, 0, 500), IsEnabled = false }; diff --git a/Flow.Launcher/SettingPages/ViewModels/SettingsPaneThemeViewModel.cs b/Flow.Launcher/SettingPages/ViewModels/SettingsPaneThemeViewModel.cs index 523dac413..cd5abb958 100644 --- a/Flow.Launcher/SettingPages/ViewModels/SettingsPaneThemeViewModel.cs +++ b/Flow.Launcher/SettingPages/ViewModels/SettingsPaneThemeViewModel.cs @@ -35,8 +35,8 @@ public partial class SettingsPaneThemeViewModel : BaseModel _selectedTheme = value; ThemeManager.Instance.ChangeTheme(value.FileNameWithoutExtension); - if (ThemeManager.Instance.BlurEnabled && Settings.UseDropShadowEffect) - DropShadowEffect = false; + if (ThemeManager.Instance.BlurEnabled && Settings.UseDropShadowEffect == false) + DropShadowEffect = true; ThemeManager.Instance.RefreshFrame(); } } @@ -46,20 +46,21 @@ public partial class SettingsPaneThemeViewModel : BaseModel get => Settings.UseDropShadowEffect; set { - if (ThemeManager.Instance.BlurEnabled && value) + if (ThemeManager.Instance.BlurEnabled && value == false) { - App.API.ShowMsgBox(InternationalizationManager.Instance.GetTranslation("shadowEffectNotAllowed")); + App.API.ShowMsgBox(InternationalizationManager.Instance.GetTranslation("shadowEffectNotAllowedBlur")); + Settings.UseDropShadowEffect = true; return; } - if (value) - { - ThemeManager.Instance.AddDropShadowEffectToCurrentTheme(); - } - else - { - ThemeManager.Instance.RemoveDropShadowEffectFromCurrentTheme(); - } + //if (value) + //{ + // ThemeManager.Instance.AddDropShadowEffectToCurrentTheme(); + //} + //else + //{ + // ThemeManager.Instance.RemoveDropShadowEffectFromCurrentTheme(); + //} Settings.UseDropShadowEffect = value; } diff --git a/Flow.Launcher/SettingPages/Views/SettingsPaneTheme.xaml b/Flow.Launcher/SettingPages/Views/SettingsPaneTheme.xaml index 18835259b..703ae85bb 100644 --- a/Flow.Launcher/SettingPages/Views/SettingsPaneTheme.xaml +++ b/Flow.Launcher/SettingPages/Views/SettingsPaneTheme.xaml @@ -375,7 +375,7 @@ Title="{DynamicResource queryWindowShadowEffect}" Margin="0 8 0 0" Icon="" - Sub="{DynamicResource shadowEffectCPUUsage}"> + Sub="{DynamicResource shadowEffectRestart}">