diff --git a/build/Common.props b/build/Common.props index 3c65873e3..8932faff4 100644 --- a/build/Common.props +++ b/build/Common.props @@ -41,6 +41,11 @@ $(DefineConstants);PLATFORM_MACOS + + + $(DefineConstants);PLATFORM_LINUX + + \ No newline at end of file diff --git a/src/AtomUI.Controls/Window/Window.cs b/src/AtomUI.Controls/Window/Window.cs index c6b0adfd2..09d99d74d 100644 --- a/src/AtomUI.Controls/Window/Window.cs +++ b/src/AtomUI.Controls/Window/Window.cs @@ -1,3 +1,6 @@ +using Avalonia; +using Avalonia.Controls; + namespace AtomUI.Controls; using AvaloniaWindow = Avalonia.Controls.Window; @@ -5,4 +8,25 @@ using AvaloniaWindow = Avalonia.Controls.Window; public class Window : AvaloniaWindow { protected override Type StyleKeyOverride { get; } = typeof(Window); + + private WindowState? _originState; + + protected override void OnPropertyChanged(AvaloniaPropertyChangedEventArgs change) + { + base.OnPropertyChanged(change); + if (change.Property == WindowStateProperty) + { + if (change.NewValue is WindowState newState) + { + if (newState == WindowState.FullScreen) + { + _originState = change.GetOldValue(); + } + else + { + WindowState = _originState.HasValue ? _originState.Value : newState;; + } + } + } + } } \ No newline at end of file