Skip to content

Commit 6868544

Browse files
authored
Merge pull request #472 from lzl1918/lzl1918/AddMarginForShadows
Add Margin When Enabling Box Shadows
2 parents 0fcceae + ef73c92 commit 6868544

File tree

1 file changed

+40
-1
lines changed

1 file changed

+40
-1
lines changed

Flow.Launcher.Core/Resource/Theme.cs

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ namespace Flow.Launcher.Core.Resource
1717
{
1818
public class Theme
1919
{
20+
private const int ShadowExtraMargin = 12;
21+
2022
private readonly List<string> _themeDirectories = new List<string>();
2123
private ResourceDictionary _oldResource;
2224
private string _oldTheme;
@@ -224,6 +226,27 @@ public void AddDropShadowEffectToCurrentTheme()
224226
BlurRadius = 15
225227
};
226228

229+
var marginSetter = windowBorderStyle.Setters.FirstOrDefault(setterBase => setterBase is Setter setter && setter.Property == Border.MarginProperty) as Setter;
230+
if (marginSetter == null)
231+
{
232+
marginSetter = new Setter()
233+
{
234+
Property = Border.MarginProperty,
235+
Value = new Thickness(ShadowExtraMargin),
236+
};
237+
windowBorderStyle.Setters.Add(marginSetter);
238+
}
239+
else
240+
{
241+
var baseMargin = (Thickness) marginSetter.Value;
242+
var newMargin = new Thickness(
243+
baseMargin.Left + ShadowExtraMargin,
244+
baseMargin.Top + ShadowExtraMargin,
245+
baseMargin.Right + ShadowExtraMargin,
246+
baseMargin.Bottom + ShadowExtraMargin);
247+
marginSetter.Value = newMargin;
248+
}
249+
227250
windowBorderStyle.Setters.Add(effectSetter);
228251

229252
UpdateResourceDictionary(dict);
@@ -234,7 +257,23 @@ public void RemoveDropShadowEffectToCurrentTheme()
234257
var dict = CurrentThemeResourceDictionary();
235258
var windowBorderStyle = dict["WindowBorderStyle"] as Style;
236259

237-
dict.Remove(Border.EffectProperty);
260+
var effectSetter = windowBorderStyle.Setters.FirstOrDefault(setterBase => setterBase is Setter setter && setter.Property == Border.EffectProperty) as Setter;
261+
var marginSetter = windowBorderStyle.Setters.FirstOrDefault(setterBase => setterBase is Setter setter && setter.Property == Border.MarginProperty) as Setter;
262+
263+
if(effectSetter != null)
264+
{
265+
windowBorderStyle.Setters.Remove(effectSetter);
266+
}
267+
if (marginSetter != null)
268+
{
269+
var currentMargin = (Thickness)marginSetter.Value;
270+
var newMargin = new Thickness(
271+
currentMargin.Left - ShadowExtraMargin,
272+
currentMargin.Top - ShadowExtraMargin,
273+
currentMargin.Right - ShadowExtraMargin,
274+
currentMargin.Bottom - ShadowExtraMargin);
275+
marginSetter.Value = newMargin;
276+
}
238277

239278
UpdateResourceDictionary(dict);
240279
}

0 commit comments

Comments
 (0)