remove blur when there is no blur in theme #711

This commit is contained in:
bao-qian
2017-02-19 22:28:42 +00:00
parent 50ef826114
commit 2e01153363

View File

@@ -58,10 +58,20 @@ namespace Wox.Core.Resource
ResourceMerger.UpdateResource(this); ResourceMerger.UpdateResource(this);
// Exception of FindResource can't be cathed if global exception handle is set // Exception of FindResource can't be cathed if global exception handle is set
var isBlur = Application.Current.TryFindResource("ThemeBlurEnabled"); if (Environment.OSVersion.Version >= new Version(6, 2))
if (isBlur is bool && Environment.OSVersion.Version >= new Version(6, 2))
{ {
SetBlurForWindow(Application.Current.MainWindow, (bool)isBlur); var resource = Application.Current.TryFindResource("ThemeBlurEnabled");
bool blur;
if (resource is bool)
{
blur = (bool)resource;
}
else
{
blur = false;
}
SetBlurForWindow(Application.Current.MainWindow, blur);
} }
} }
@@ -165,20 +175,24 @@ namespace Wox.Core.Resource
/// <summary> /// <summary>
/// Sets the blur for a window via SetWindowCompositionAttribute /// Sets the blur for a window via SetWindowCompositionAttribute
/// </summary> /// </summary>
/// <param name="wind">window to blur</param> /// <param name="w">window to blur</param>
/// <param name="isBlur">true/false - on or off correspondingly</param> /// <param name="blur">true/false - on or off correspondingly</param>
private void SetBlurForWindow(Window wind, bool isBlur) private void SetBlurForWindow(Window w, bool blur)
{ {
if (isBlur) if (blur)
{ {
SetWindowAccent(wind, AccentState.ACCENT_ENABLE_BLURBEHIND); SetWindowAccent(w, AccentState.ACCENT_ENABLE_BLURBEHIND);
}
else
{
SetWindowAccent(w, AccentState.ACCENT_DISABLED);
} }
} }
private void SetWindowAccent(Window wind, AccentState themeAccentMode) private void SetWindowAccent(Window w, AccentState state)
{ {
var windowHelper = new WindowInteropHelper(wind); var windowHelper = new WindowInteropHelper(w);
var accent = new AccentPolicy { AccentState = themeAccentMode }; var accent = new AccentPolicy { AccentState = state };
var accentStructSize = Marshal.SizeOf(accent); var accentStructSize = Marshal.SizeOf(accent);
var accentPtr = Marshal.AllocHGlobal(accentStructSize); var accentPtr = Marshal.AllocHGlobal(accentStructSize);