From 061ac89f3e268846209fafb4a8c3506f9edc5809 Mon Sep 17 00:00:00 2001 From: mat1jaczyyy Date: Tue, 6 Jul 2021 23:34:18 +0200 Subject: [PATCH] IWindowImpl: IsEnabled method TODO: macOS implementation --- src/Avalonia.Controls/Platform/IWindowImpl.cs | 5 +++++ src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs | 2 ++ src/Avalonia.DesignerSupport/Remote/Stubs.cs | 2 ++ src/Avalonia.Native/WindowImpl.cs | 3 +++ src/Avalonia.X11/X11Window.cs | 2 ++ src/Windows/Avalonia.Win32/WindowImpl.cs | 2 ++ 6 files changed, 16 insertions(+) diff --git a/src/Avalonia.Controls/Platform/IWindowImpl.cs b/src/Avalonia.Controls/Platform/IWindowImpl.cs index 8a1554d344..89fe00453c 100644 --- a/src/Avalonia.Controls/Platform/IWindowImpl.cs +++ b/src/Avalonia.Controls/Platform/IWindowImpl.cs @@ -37,6 +37,11 @@ namespace Avalonia.Platform /// true if the window is enabled, or false if it is disabled. void SetEnabled(bool enable); + /// + /// Gets a value to indicate if the window is currently enabled. + /// + bool IsEnabled { get; } + /// /// Called when a disabled window received input. Can be used to activate child windows. /// diff --git a/src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs b/src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs index 787f44887f..8a9250b666 100644 --- a/src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs +++ b/src/Avalonia.DesignerSupport/Remote/PreviewerWindowImpl.cs @@ -91,6 +91,8 @@ namespace Avalonia.DesignerSupport.Remote public bool NeedsManagedDecorations => false; + public bool IsEnabled => true; + public void Activate() { } diff --git a/src/Avalonia.DesignerSupport/Remote/Stubs.cs b/src/Avalonia.DesignerSupport/Remote/Stubs.cs index eedfc52d9d..a287605d45 100644 --- a/src/Avalonia.DesignerSupport/Remote/Stubs.cs +++ b/src/Avalonia.DesignerSupport/Remote/Stubs.cs @@ -47,6 +47,8 @@ namespace Avalonia.DesignerSupport.Remote public Thickness OffScreenMargin { get; } = new Thickness(); + public bool IsEnabled => true; + public WindowStub(IWindowImpl parent = null) { if (parent != null) diff --git a/src/Avalonia.Native/WindowImpl.cs b/src/Avalonia.Native/WindowImpl.cs index f3b60f07be..328d64da25 100644 --- a/src/Avalonia.Native/WindowImpl.cs +++ b/src/Avalonia.Native/WindowImpl.cs @@ -220,5 +220,8 @@ namespace Avalonia.Native { _native.SetEnabled(enable.AsComBool()); } + + // TODO: Implement + public bool IsEnabled => throw new NotImplementedException(); } } diff --git a/src/Avalonia.X11/X11Window.cs b/src/Avalonia.X11/X11Window.cs index 37260aa78b..3761b481b9 100644 --- a/src/Avalonia.X11/X11Window.cs +++ b/src/Avalonia.X11/X11Window.cs @@ -1041,6 +1041,8 @@ namespace Avalonia.X11 _disabled = !enable; } + public bool IsEnabled => !_disabled; + public void SetExtendClientAreaToDecorationsHint(bool extendIntoClientAreaHint) { } diff --git a/src/Windows/Avalonia.Win32/WindowImpl.cs b/src/Windows/Avalonia.Win32/WindowImpl.cs index 3a3342fd14..50744a9e1a 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.cs @@ -595,6 +595,8 @@ namespace Avalonia.Win32 public void SetEnabled(bool enable) => EnableWindow(_hwnd, enable); + public bool IsEnabled => IsWindowEnabled(_hwnd); + public void BeginMoveDrag(PointerPressedEventArgs e) { _mouseDevice.Capture(null);