diff --git a/samples/ControlCatalog/MainView.xaml b/samples/ControlCatalog/MainView.xaml index d5794ce243..ca210300ee 100644 --- a/samples/ControlCatalog/MainView.xaml +++ b/samples/ControlCatalog/MainView.xaml @@ -1,7 +1,8 @@ diff --git a/samples/ControlCatalog/MainWindow.xaml b/samples/ControlCatalog/MainWindow.xaml index 8bd1a274c0..121878423a 100644 --- a/samples/ControlCatalog/MainWindow.xaml +++ b/samples/ControlCatalog/MainWindow.xaml @@ -60,11 +60,6 @@ - - - diff --git a/src/Avalonia.Controls/Chrome/TitleBar.cs b/src/Avalonia.Controls/Chrome/TitleBar.cs index f48ca4e4e8..b044ffc59c 100644 --- a/src/Avalonia.Controls/Chrome/TitleBar.cs +++ b/src/Avalonia.Controls/Chrome/TitleBar.cs @@ -14,32 +14,28 @@ namespace Avalonia.Controls.Chrome private CompositeDisposable? _disposables; private readonly Window? _hostWindow; private CaptionButtons? _captionButtons; - private Panel _underlay; - public TitleBar(Window hostWindow) : this() + public TitleBar(Window hostWindow) { _hostWindow = hostWindow; } public TitleBar() { - _underlay = new Panel - { - IsHitTestVisible = false, - [~Panel.BackgroundProperty] = this[~BackgroundProperty], - VerticalAlignment = Layout.VerticalAlignment.Top - }; + } public void Attach() { - if (_disposables == null && _hostWindow != null) + if (_disposables == null) { - var overlay = ChromeOverlayLayer.GetOverlayLayer(_hostWindow); + var layer = ChromeOverlayLayer.GetOverlayLayer(_hostWindow); - overlay?.Children.Add(this); + layer?.Children.Add(this); - _disposables = new CompositeDisposable + if (_hostWindow != null) + { + _disposables = new CompositeDisposable { _hostWindow.GetObservable(Window.WindowDecorationMarginsProperty) .Subscribe(x => UpdateSize()), @@ -60,15 +56,11 @@ namespace Avalonia.Controls.Chrome }) }; - _captionButtons?.Attach(_hostWindow); - - var underlay = ChromeUnderlayLayer.GetUnderlayLayer(_hostWindow); - - underlay?.Children.Add(_underlay); + _captionButtons?.Attach(_hostWindow); + } UpdateSize(); } - } private void UpdateSize() @@ -84,7 +76,6 @@ namespace Avalonia.Controls.Chrome if (_hostWindow.WindowState != WindowState.FullScreen) { Height = _hostWindow.WindowDecorationMargins.Top; - _underlay.Height = Height; if (_captionButtons != null) { @@ -98,14 +89,9 @@ namespace Avalonia.Controls.Chrome { if (_disposables != null) { - if (_hostWindow != null) - { - var overlay = ChromeOverlayLayer.GetOverlayLayer(_hostWindow); - overlay?.Children.Remove(this); + var layer = ChromeOverlayLayer.GetOverlayLayer(_hostWindow); - var underlay = ChromeUnderlayLayer.GetUnderlayLayer(_hostWindow); - underlay?.Children.Remove(_underlay); - } + layer?.Children.Remove(this); _disposables.Dispose(); _disposables = null; diff --git a/src/Avalonia.Controls/Primitives/ChromeOverlayLayer.cs b/src/Avalonia.Controls/Primitives/ChromeOverlayLayer.cs index 2313222bd3..ba0fdfd535 100644 --- a/src/Avalonia.Controls/Primitives/ChromeOverlayLayer.cs +++ b/src/Avalonia.Controls/Primitives/ChromeOverlayLayer.cs @@ -6,27 +6,6 @@ using Avalonia.VisualTree; namespace Avalonia.Controls.Primitives { - public class ChromeUnderlayLayer : Panel, ICustomSimpleHitTest - { - public static ChromeUnderlayLayer? GetUnderlayLayer(IVisual visual) - { - foreach (var v in visual.GetVisualAncestors()) - if (v is VisualLayerManager vlm) - if (vlm.OverlayLayer != null) - return vlm.ChromeUnderlayLayer; - - if (visual is TopLevel tl) - { - var layers = tl.GetVisualDescendants().OfType().FirstOrDefault(); - return layers?.ChromeUnderlayLayer; - } - - return null; - } - - public bool HitTest(Point point) => Children.HitTestCustom(point); - } - public class ChromeOverlayLayer : Panel, ICustomSimpleHitTest { public static ChromeOverlayLayer? GetOverlayLayer(IVisual visual) diff --git a/src/Avalonia.Controls/Primitives/VisualLayerManager.cs b/src/Avalonia.Controls/Primitives/VisualLayerManager.cs index 0213c53c57..3084d7fa72 100644 --- a/src/Avalonia.Controls/Primitives/VisualLayerManager.cs +++ b/src/Avalonia.Controls/Primitives/VisualLayerManager.cs @@ -8,7 +8,6 @@ namespace Avalonia.Controls.Primitives private const int AdornerZIndex = int.MaxValue - 100; private const int ChromeZIndex = int.MaxValue - 99; private const int OverlayZIndex = int.MaxValue - 98; - private const int UnderlayZIndex = int.MinValue; private ILogicalRoot _logicalRoot; private readonly List _layers = new List(); @@ -27,17 +26,6 @@ namespace Avalonia.Controls.Primitives } } - public ChromeUnderlayLayer ChromeUnderlayLayer - { - get - { - var rv = FindLayer(); - if (rv == null) - AddLayer(rv = new ChromeUnderlayLayer(), UnderlayZIndex); - return rv; - } - } - public ChromeOverlayLayer ChromeOverlayLayer { get diff --git a/src/Avalonia.Themes.Fluent/TitleBar.xaml b/src/Avalonia.Themes.Fluent/TitleBar.xaml index 72998583b8..45798d3fa1 100644 --- a/src/Avalonia.Themes.Fluent/TitleBar.xaml +++ b/src/Avalonia.Themes.Fluent/TitleBar.xaml @@ -14,7 +14,7 @@ - + diff --git a/src/Avalonia.Themes.Fluent/Window.xaml b/src/Avalonia.Themes.Fluent/Window.xaml index 086b05bb01..aee15347eb 100644 --- a/src/Avalonia.Themes.Fluent/Window.xaml +++ b/src/Avalonia.Themes.Fluent/Window.xaml @@ -1,11 +1,11 @@