From bd90bd9675f75a1f1f1b05b897b370cf7fc7513a Mon Sep 17 00:00:00 2001 From: Dariusz Komosinski Date: Wed, 19 May 2021 16:49:16 +0200 Subject: [PATCH] Fix devtools selection highlight requiring direct hover over the control type or name. --- .../Diagnostics/Views/TreePageView.xaml | 1 + .../Diagnostics/Views/TreePageView.xaml.cs | 19 ++++++++++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/Avalonia.Diagnostics/Diagnostics/Views/TreePageView.xaml b/src/Avalonia.Diagnostics/Diagnostics/Views/TreePageView.xaml index 86137dfc57..fd631f0dff 100644 --- a/src/Avalonia.Diagnostics/Diagnostics/Views/TreePageView.xaml +++ b/src/Avalonia.Diagnostics/Diagnostics/Views/TreePageView.xaml @@ -20,6 +20,7 @@ diff --git a/src/Avalonia.Diagnostics/Diagnostics/Views/TreePageView.xaml.cs b/src/Avalonia.Diagnostics/Diagnostics/Views/TreePageView.xaml.cs index 1b61986ce6..3e1a238b36 100644 --- a/src/Avalonia.Diagnostics/Diagnostics/Views/TreePageView.xaml.cs +++ b/src/Avalonia.Diagnostics/Diagnostics/Views/TreePageView.xaml.cs @@ -1,3 +1,4 @@ +using System.Diagnostics; using System.Linq; using Avalonia.Controls; using Avalonia.Controls.Generators; @@ -6,6 +7,7 @@ using Avalonia.Diagnostics.ViewModels; using Avalonia.Input; using Avalonia.Markup.Xaml; using Avalonia.Media; +using Avalonia.VisualTree; namespace Avalonia.Diagnostics.Views { @@ -100,12 +102,19 @@ namespace Avalonia.Diagnostics.Views private void TreeViewItemTemplateApplied(object sender, TemplateAppliedEventArgs e) { var item = (TreeViewItem)sender; - var headerPresenter = item.HeaderPresenter; - headerPresenter.ApplyTemplate(); - var header = headerPresenter.Child; - header.PointerEnter += AddAdorner; - header.PointerLeave += RemoveAdorner; + // This depends on the default tree item template. + // We want to handle events in the item header but exclude events coming from children. + var header = item.FindDescendantOfType(); + + Debug.Assert(header != null); + + if (header != null) + { + header.PointerEnter += AddAdorner; + header.PointerLeave += RemoveAdorner; + } + item.TemplateApplied -= TreeViewItemTemplateApplied; } }