From 661a182553ecbfcb4aecee2d3510286406b65fb6 Mon Sep 17 00:00:00 2001 From: qinware Date: Mon, 4 Aug 2025 15:24:22 +0800 Subject: [PATCH] Fix CaptionButtonGroup State bug --- src/AtomUI.Controls/Chrome/CaptionButtonGroup.cs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/AtomUI.Controls/Chrome/CaptionButtonGroup.cs b/src/AtomUI.Controls/Chrome/CaptionButtonGroup.cs index a4c08ff89..82ff9bea5 100644 --- a/src/AtomUI.Controls/Chrome/CaptionButtonGroup.cs +++ b/src/AtomUI.Controls/Chrome/CaptionButtonGroup.cs @@ -176,13 +176,17 @@ internal class CaptionButtonGroup : TemplatedControl, IOperationSystemAware { PseudoClasses.Set(StdPseudoClass.Minimized, x == WindowState.Minimized); PseudoClasses.Set(StdPseudoClass.Normal, x == WindowState.Normal); - PseudoClasses.Set(StdPseudoClass.Maximized, IsWindowMaximized); + PseudoClasses.Set(StdPseudoClass.Maximized, x == WindowState.Maximized); PseudoClasses.Set(StdPseudoClass.Fullscreen, x == WindowState.FullScreen); + IsWindowMaximized = x == WindowState.Maximized; + IsWindowFullScreen = x == WindowState.FullScreen; + }), + HostWindow.GetObservable(Window.TopmostProperty) + .Subscribe(x => + { + IsWindowPinned = HostWindow.Topmost; }) }; - IsWindowPinned = HostWindow.Topmost; - IsWindowMaximized = HostWindow.WindowState == WindowState.Maximized; - IsWindowFullScreen = HostWindow.WindowState == WindowState.FullScreen; } public virtual void Detach()