@@ -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