From 429d8a7b573a6834899507606a57f22c3cc86f23 Mon Sep 17 00:00:00 2001 From: Luis von der Eltz Date: Thu, 31 Mar 2022 18:45:32 +0200 Subject: [PATCH 1/2] Fix devtools popup inspection --- .../Diagnostics/Views/MainWindow.xaml.cs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/Avalonia.Diagnostics/Diagnostics/Views/MainWindow.xaml.cs b/src/Avalonia.Diagnostics/Diagnostics/Views/MainWindow.xaml.cs index a3cff7f3d3..30c249ff4e 100644 --- a/src/Avalonia.Diagnostics/Diagnostics/Views/MainWindow.xaml.cs +++ b/src/Avalonia.Diagnostics/Diagnostics/Views/MainWindow.xaml.cs @@ -161,8 +161,19 @@ namespace Avalonia.Diagnostics.Views return; } - var root = Root as TopLevel - ?? vm.PointerOverRoot as TopLevel; + var root = vm.PointerOverRoot as TopLevel; + IControl? parent = root; + + while (parent?.Parent != null) + { + parent = parent.Parent; + } + + if (parent != null) + { + root = parent as TopLevel; + } + if (root is null) { return; From 85363e7972de1b69c29084873c18b08b654eabd3 Mon Sep 17 00:00:00 2001 From: Luis von der Eltz Date: Fri, 1 Apr 2022 11:02:53 +0200 Subject: [PATCH 2/2] Use parent toplevel from PopupRoot --- src/Avalonia.Controls/Primitives/PopupRoot.cs | 7 ++++--- .../Diagnostics/Views/MainWindow.xaml.cs | 14 ++++---------- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/src/Avalonia.Controls/Primitives/PopupRoot.cs b/src/Avalonia.Controls/Primitives/PopupRoot.cs index be447ea512..9dd68bfe68 100644 --- a/src/Avalonia.Controls/Primitives/PopupRoot.cs +++ b/src/Avalonia.Controls/Primitives/PopupRoot.cs @@ -16,7 +16,6 @@ namespace Avalonia.Controls.Primitives /// public sealed class PopupRoot : WindowBase, IInteractive, IHostedVisualTreeRoot, IDisposable, IStyleHost, IPopupHost { - private readonly TopLevel _parent; private PopupPositionerParameters _positionerParameters; /// @@ -46,7 +45,7 @@ namespace Avalonia.Controls.Primitives public PopupRoot(TopLevel parent, IPopupImpl impl, IAvaloniaDependencyResolver? dependencyResolver) : base(ValidatingPopupImpl.Wrap(impl), dependencyResolver) { - _parent = parent; + ParentTopLevel = parent; } /// @@ -72,6 +71,8 @@ namespace Avalonia.Controls.Primitives /// IStyleHost? IStyleHost.StylingParent => Parent; + public TopLevel ParentTopLevel { get; } + /// public void Dispose() { @@ -90,7 +91,7 @@ namespace Avalonia.Controls.Primitives PopupPositionerConstraintAdjustment constraintAdjustment = PopupPositionerConstraintAdjustment.All, Rect? rect = null) { - _positionerParameters.ConfigurePosition(_parent, target, + _positionerParameters.ConfigurePosition(ParentTopLevel, target, placement, offset, anchor, gravity, constraintAdjustment, rect); if (_positionerParameters.Size != default) diff --git a/src/Avalonia.Diagnostics/Diagnostics/Views/MainWindow.xaml.cs b/src/Avalonia.Diagnostics/Diagnostics/Views/MainWindow.xaml.cs index 30c249ff4e..a5a933571d 100644 --- a/src/Avalonia.Diagnostics/Diagnostics/Views/MainWindow.xaml.cs +++ b/src/Avalonia.Diagnostics/Diagnostics/Views/MainWindow.xaml.cs @@ -162,21 +162,15 @@ namespace Avalonia.Diagnostics.Views } var root = vm.PointerOverRoot as TopLevel; - IControl? parent = root; - while (parent?.Parent != null) - { - parent = parent.Parent; - } - - if (parent != null) + if (root is null) { - root = parent as TopLevel; + return; } - if (root is null) + if (root is PopupRoot pr && pr.ParentTopLevel != null) { - return; + root = pr.ParentTopLevel; } switch (e.Modifiers)