@@ -17,6 +17,8 @@ namespace Flow.Launcher.Core.Resource
17
17
{
18
18
public class Theme
19
19
{
20
+ private const int ShadowExtraMargin = 12 ;
21
+
20
22
private readonly List < string > _themeDirectories = new List < string > ( ) ;
21
23
private ResourceDictionary _oldResource ;
22
24
private string _oldTheme ;
@@ -224,6 +226,27 @@ public void AddDropShadowEffectToCurrentTheme()
224
226
BlurRadius = 15
225
227
} ;
226
228
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
+
227
250
windowBorderStyle . Setters . Add ( effectSetter ) ;
228
251
229
252
UpdateResourceDictionary ( dict ) ;
@@ -234,7 +257,23 @@ public void RemoveDropShadowEffectToCurrentTheme()
234
257
var dict = CurrentThemeResourceDictionary ( ) ;
235
258
var windowBorderStyle = dict [ "WindowBorderStyle" ] as Style ;
236
259
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
+ }
238
277
239
278
UpdateResourceDictionary ( dict ) ;
240
279
}
0 commit comments