diff --git a/src/Avalonia.Controls/Platform/IWindowImpl.cs b/src/Avalonia.Controls/Platform/IWindowImpl.cs index 609e9834cb..b8429d32fc 100644 --- a/src/Avalonia.Controls/Platform/IWindowImpl.cs +++ b/src/Avalonia.Controls/Platform/IWindowImpl.cs @@ -35,6 +35,11 @@ namespace Avalonia.Platform /// void SetSystemDecorations(bool enabled); + /// + /// When system decorations are disabled sets if the maximized state covers the entire screen or just the working area. + /// + void SetIgnoreTaskBarWhenMaximized(bool enable); + /// /// Sets the icon of this window. /// diff --git a/src/Windows/Avalonia.Win32/WindowImpl.cs b/src/Windows/Avalonia.Win32/WindowImpl.cs index ba348b7d18..c2ef66ce13 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.cs @@ -33,6 +33,7 @@ namespace Avalonia.Win32 private bool _trackingMouse; private bool _isActive; private bool _decorated = true; + private bool _ignoreTaskBarWhenMaximized = true; private double _scaling = 1; private WindowState _showWindowState; @@ -688,7 +689,7 @@ namespace Avalonia.Win32 case WindowState.Maximized: command = UnmanagedMethods.ShowWindowCommand.Maximize; - if (!_decorated) + if (!_decorated && !_ignoreTaskBarWhenMaximized) { IntPtr monitor = MonitorFromWindow(_hwnd, MONITOR.MONITOR_DEFAULTTONEAREST); @@ -741,5 +742,15 @@ namespace Avalonia.Win32 return (int)(ptr.ToInt64() & 0xffffffff); } + + public void SetIgnoreTaskBarWhenMaximized(bool enable) + { + _ignoreTaskBarWhenMaximized = enable; + + if(_showWindowState == WindowState.Maximized) + { + ShowWindow(WindowState.Maximized); + } + } } }