[PTRun]Bring back acrylic and proper fix to title bar accent showing (#33458)

* Revert "[PTRun]Fix accent on title bar bleed into UI (#33046)"

This reverts commit 8bb5a33572.

* Revert "[PTRun]Use Mica backdrop to fix crashes with WPFUI (#32118)"

This reverts commit b9da1e6abf.

* Fix DWMAttributes in Wox Plugin Native Methods

* Fix titlebar accent showing

* Fix number on wrong enum
This commit is contained in:
Jaime Bernardo 2024-06-21 10:30:13 +01:00 committed by GitHub
parent 6043898ee5
commit 9509d7c1cc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 60 additions and 33 deletions

View File

@ -19,13 +19,13 @@ namespace Microsoft.Plugin.WindowWalker.Components
/// <param name="hwnd">handle to the window to exclude</param>
public static void SetWindowExclusionFromLivePreview(IntPtr hwnd)
{
int renderPolicy = (int)DwmNCRenderingPolicies.Enabled;
uint renderPolicy = (uint)DwmNCRenderingPolicies.Enabled;
_ = NativeMethods.DwmSetWindowAttribute(
hwnd,
12,
ref renderPolicy,
sizeof(int));
sizeof(uint));
}
/// <summary>

View File

@ -32,9 +32,9 @@
<Grid x:Name="RootGrid" MouseDown="OnMouseDown">
<!-- We set the background here because the Acrylic can be too translucent / background too bright on Light theme -->
<!--<Grid.Background>
<Grid.Background>
<SolidColorBrush Opacity="0.8" Color="{DynamicResource ApplicationBackgroundColor}" />
</Grid.Background>-->
</Grid.Background>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
@ -45,11 +45,6 @@
Grid.Row="0"
Padding="12,4,12,3">
<local:LauncherControl x:Name="SearchBox" />
<Border.Background>
<!-- Setting the background of the search bar to fix https://github.com/microsoft/PowerToys/issues/30206 -->
<!-- The title bar accent would bleed if the option to "Show accent color on title bars and windows borders" is enabled on Windows -->
<SolidColorBrush Opacity="1" Color="{DynamicResource ApplicationBackgroundColor}" />
</Border.Background>
</Border>
<!-- Have to use a Grid instead of a StackPanel for scrolling to work? -->

View File

@ -63,7 +63,7 @@ namespace PowerLauncher
if (OSVersionHelper.IsWindows11())
{
WindowBackdropType = Wpf.Ui.Controls.WindowBackdropType.Mica;
WindowBackdropType = Wpf.Ui.Controls.WindowBackdropType.Acrylic;
}
else
{

View File

@ -8,11 +8,13 @@ using System.Collections.ObjectModel;
using System.Globalization;
using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Input;
using System.Windows.Interop;
using System.Windows.Threading;
using Common.UI;
using interop;
@ -1006,6 +1008,36 @@ namespace PowerLauncher.ViewModel
if (MainWindowVisibility != Visibility.Visible)
{
MainWindowVisibility = Visibility.Visible;
// HACK: The following code in this if is a fix for https://github.com/microsoft/PowerToys/issues/30206 and https://github.com/microsoft/PowerToys/issues/33135
// WPF UI theme watcher removes the composition target background color, among other weird stuff.
// https://github.com/lepoco/wpfui/blob/303f0aefcd59a142bc681415dc4360a34a15f33d/src/Wpf.Ui/Controls/Window/WindowBackdrop.cs#L280
// So we set it back with https://github.com/lepoco/wpfui/blob/303f0aefcd59a142bc681415dc4360a34a15f33d/src/Wpf.Ui/Controls/Window/WindowBackdrop.cs#L191
var window = Application.Current.MainWindow;
Wpf.Ui.Controls.WindowBackdrop.RemoveBackground(window);
// Taken from WPFUI's fix for the title bar issue. We should be able to remove this fix when WPF UI 4 is integrated.
// https://github.com/lepoco/wpfui/pull/1122/files#diff-196b404f4db09632665ef546da6c8e57302b2f3e3d082eb4b5c295ae3482d94a
IntPtr windowHandle = new WindowInteropHelper(window).Handle;
if (windowHandle == IntPtr.Zero)
{
return;
}
HwndSource windowSource = HwndSource.FromHwnd(windowHandle);
// Remove background from client area
if (windowSource != null && windowSource.Handle != IntPtr.Zero && windowSource?.CompositionTarget != null)
{
// NOTE: https://learn.microsoft.com/en-us/windows/win32/api/dwmapi/ne-dwmapi-dwmwindowattribute
// Specifying DWMWA_COLOR_DEFAULT (value 0xFFFFFFFF) for the color will reset the window back to using the system's default behavior for the caption color.
uint titlebarPvAttribute = 0xFFFFFFFE;
_ = Wox.Plugin.Common.Win32.NativeMethods.DwmSetWindowAttribute(
windowSource.Handle,
(int)Wox.Plugin.Common.Win32.DwmWindowAttributes.CaptionColor,
ref titlebarPvAttribute,
Marshal.SizeOf(typeof(uint)));
}
}
else
{

View File

@ -66,7 +66,7 @@ namespace Wox.Plugin.Common.Win32
public static extern int DwmpActivateLivePreview([MarshalAs(UnmanagedType.Bool)] bool fActivate, IntPtr hWndExclude, IntPtr hWndInsertBefore, LivePreviewTrigger lpt, IntPtr prcFinalRect);
[DllImport("dwmapi.dll", PreserveSig = false)]
public static extern int DwmSetWindowAttribute(IntPtr hwnd, int attr, ref int attrValue, int attrSize);
public static extern int DwmSetWindowAttribute(IntPtr hwnd, int attr, ref uint attrValue, int attrSize);
[DllImport("dwmapi.dll", PreserveSig = false)]
public static extern int DwmGetWindowAttribute(IntPtr hwnd, int dwAttribute, out int pvAttribute, int cbAttribute);
@ -493,28 +493,28 @@ namespace Wox.Plugin.Common.Win32
public enum DwmWindowAttributes
{
NCRenderingEnabled = 1,
NCRenderingPolicy,
TransitionsForceDisabled,
AllowNCPaint,
CaptionButtonBounds,
NonClientRtlLayout,
ForceIconicRepresentation,
Flip3DPolicy,
ExtendedFrameBounds,
HasIconicBitmap,
DisallowPeek,
ExcludedFromPeek,
Cloak,
Cloaked,
FreezeRepresentation,
PassiveUpdateMode,
UseHostbackdropbrush,
UseImmersiveDarkMode,
WindowCornerPreference,
BorderColor,
CaptionColor,
TextColor,
VisibleFrameBorderThickness,
NCRenderingPolicy = 2,
TransitionsForceDisabled = 3,
AllowNCPaint = 4,
CaptionButtonBounds = 5,
NonClientRtlLayout = 6,
ForceIconicRepresentation = 7,
Flip3DPolicy = 8,
ExtendedFrameBounds = 9,
HasIconicBitmap = 10,
DisallowPeek = 11,
ExcludedFromPeek = 12,
Cloak = 13,
Cloaked = 14,
FreezeRepresentation = 15,
PassiveUpdateMode = 16,
UseHostbackdropbrush = 17,
UseImmersiveDarkMode = 20,
WindowCornerPreference = 33,
BorderColor = 34,
CaptionColor = 35,
TextColor = 36,
VisibleFrameBorderThickness = 37,
Last,
}