diff --git a/Flow.Launcher.Core/Resource/Theme.cs b/Flow.Launcher.Core/Resource/Theme.cs
index 1d840930663..2c2feeae171 100644
--- a/Flow.Launcher.Core/Resource/Theme.cs
+++ b/Flow.Launcher.Core/Resource/Theme.cs
@@ -11,6 +11,7 @@
using Flow.Launcher.Infrastructure;
using Flow.Launcher.Infrastructure.Logger;
using Flow.Launcher.Infrastructure.UserSettings;
+using System.Windows.Shell;
namespace Flow.Launcher.Core.Resource
{
@@ -306,12 +307,15 @@ public void AddDropShadowEffectToCurrentTheme()
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 = new Thickness(ShadowExtraMargin, 12, ShadowExtraMargin, ShadowExtraMargin),
+ Value = margin,
};
windowBorderStyle.Setters.Add(marginSetter);
+
+ SetResizeBoarderThickness(margin);
}
else
{
@@ -322,6 +326,8 @@ public void AddDropShadowEffectToCurrentTheme()
baseMargin.Right + ShadowExtraMargin,
baseMargin.Bottom + ShadowExtraMargin);
marginSetter.Value = newMargin;
+
+ SetResizeBoarderThickness(newMargin);
}
windowBorderStyle.Setters.Add(effectSetter);
@@ -352,9 +358,36 @@ public void RemoveDropShadowEffectFromCurrentTheme()
marginSetter.Value = newMargin;
}
+ SetResizeBoarderThickness(null);
+
UpdateResourceDictionary(dict);
}
+ // because adding drop shadow effect will change the margin of the window,
+ // we need to update the window chrome thickness to correct set the resize border
+ private static void SetResizeBoarderThickness(Thickness? effectMargin)
+ {
+ var window = Application.Current.MainWindow;
+ if (WindowChrome.GetWindowChrome(window) is WindowChrome windowChrome)
+ {
+ Thickness thickness;
+ if (effectMargin == null)
+ {
+ thickness = SystemParameters.WindowResizeBorderThickness;
+ }
+ else
+ {
+ thickness = new Thickness(
+ effectMargin.Value.Left + SystemParameters.WindowResizeBorderThickness.Left,
+ effectMargin.Value.Top + SystemParameters.WindowResizeBorderThickness.Top,
+ effectMargin.Value.Right + SystemParameters.WindowResizeBorderThickness.Right,
+ effectMargin.Value.Bottom + SystemParameters.WindowResizeBorderThickness.Bottom);
+ }
+
+ windowChrome.ResizeBorderThickness = thickness;
+ }
+ }
+
public record ThemeData(string FileNameWithoutExtension, string Name, bool? IsDark = null, bool? HasBlur = null);
}
}
diff --git a/Flow.Launcher/MainWindow.xaml b/Flow.Launcher/MainWindow.xaml
index f5fd729d45b..4cc887c411a 100644
--- a/Flow.Launcher/MainWindow.xaml
+++ b/Flow.Launcher/MainWindow.xaml
@@ -37,7 +37,7 @@
mc:Ignorable="d">
-
+