From 9c6ea3ad0b242b232f63c511e2f9776d88ff3c6a Mon Sep 17 00:00:00 2001 From: SychicBoy Date: Wed, 19 Aug 2026 19:17:01 +0330 Subject: [PATCH] Restore keyboard activation for selected tree items Allow Enter and Space to be handled by SharpTreeView instead of being intercepted by ListBoxItem selection handling. --- ILSpy/Controls/TreeView/SharpTreeView.cs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/ILSpy/Controls/TreeView/SharpTreeView.cs b/ILSpy/Controls/TreeView/SharpTreeView.cs index 83ddbfbeb2..2e9923b879 100644 --- a/ILSpy/Controls/TreeView/SharpTreeView.cs +++ b/ILSpy/Controls/TreeView/SharpTreeView.cs @@ -295,6 +295,23 @@ void CenterNodeInView(SharpTreeNode node) scrollViewer.Offset = new Vector(scrollViewer.Offset.X, newOffsetY); } + protected override bool ShouldTriggerSelection(Visual selectable, KeyEventArgs eventArgs) + { + // Avalonia treats Enter and Space as selection input. For a single selected + // tree item, let SharpTreeView handle those keys instead. + // https://docs.avaloniaui.net/docs/avalonia12-breaking-changes#customizing-selection-behavior + if (eventArgs.KeyModifiers == KeyModifiers.None + && eventArgs.Key is Key.Enter or Key.Space + && selectable is SharpTreeViewItem { Node: { } node } + && SelectedItems?.Count == 1 + && ReferenceEquals(SelectedItem, node)) + { + return false; + } + + return base.ShouldTriggerSelection(selectable, eventArgs); + } + protected override void OnKeyDown(KeyEventArgs e) { // Ctrl+A select-all must work on the first press even before a current item is