From ce6de45c9b5b125bb6b88f220d82875d7532da4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wies=C5=82aw=20S=CC=8Colte=CC=81s?= Date: Wed, 8 May 2024 11:56:51 +0200 Subject: [PATCH 1/3] Add TreeViewAutomationPeer for TreeView --- .../Automation/Peers/TreeViewAutomationPeer.cs | 16 ++++++++++++++++ src/Avalonia.Controls/TreeView.cs | 7 +++++++ 2 files changed, 23 insertions(+) create mode 100644 src/Avalonia.Controls/Automation/Peers/TreeViewAutomationPeer.cs diff --git a/src/Avalonia.Controls/Automation/Peers/TreeViewAutomationPeer.cs b/src/Avalonia.Controls/Automation/Peers/TreeViewAutomationPeer.cs new file mode 100644 index 00000000000..5bb0dcaa551 --- /dev/null +++ b/src/Avalonia.Controls/Automation/Peers/TreeViewAutomationPeer.cs @@ -0,0 +1,16 @@ +using Avalonia.Controls; + +namespace Avalonia.Automation.Peers; + +public class TreeViewAutomationPeer : ItemsControlAutomationPeer +{ + public TreeViewAutomationPeer(TreeView owner) + : base(owner) + { + } + + protected override AutomationControlType GetAutomationControlTypeCore() + { + return AutomationControlType.Tree; + } +} diff --git a/src/Avalonia.Controls/TreeView.cs b/src/Avalonia.Controls/TreeView.cs index 56a5999f295..c29dfd583f2 100644 --- a/src/Avalonia.Controls/TreeView.cs +++ b/src/Avalonia.Controls/TreeView.cs @@ -6,6 +6,7 @@ using System.ComponentModel; using System.Diagnostics.CodeAnalysis; using System.Linq; +using Avalonia.Automation.Peers; using Avalonia.Collections; using Avalonia.Controls.Generators; using Avalonia.Controls.Primitives; @@ -298,6 +299,12 @@ static IEnumerable GetRealizedContainers(ItemsControl itemsControl) return TreeItemFromContainer(this, container); } + /// + protected override AutomationPeer OnCreateAutomationPeer() + { + return new TreeViewAutomationPeer(this); + } + private protected override void OnItemsViewCollectionChanged(object? sender, NotifyCollectionChangedEventArgs e) { base.OnItemsViewCollectionChanged(sender, e); From 7374cc7f64e5348e396200c3b7629e24939d1a74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wies=C5=82aw=20S=CC=8Colte=CC=81s?= Date: Wed, 8 May 2024 11:57:11 +0200 Subject: [PATCH 2/3] Add TreeViewItemAutomationPeer for TreeViewItem --- .../Peers/TreeViewItemAutomationPeer.cs | 16 ++++++++++++++++ src/Avalonia.Controls/TreeViewItem.cs | 6 ++++++ 2 files changed, 22 insertions(+) create mode 100644 src/Avalonia.Controls/Automation/Peers/TreeViewItemAutomationPeer.cs diff --git a/src/Avalonia.Controls/Automation/Peers/TreeViewItemAutomationPeer.cs b/src/Avalonia.Controls/Automation/Peers/TreeViewItemAutomationPeer.cs new file mode 100644 index 00000000000..9629a752677 --- /dev/null +++ b/src/Avalonia.Controls/Automation/Peers/TreeViewItemAutomationPeer.cs @@ -0,0 +1,16 @@ +using Avalonia.Controls; + +namespace Avalonia.Automation.Peers; + +public class TreeViewItemAutomationPeer : ItemsControlAutomationPeer +{ + public TreeViewItemAutomationPeer(TreeViewItem owner) + : base(owner) + { + } + + protected override AutomationControlType GetAutomationControlTypeCore() + { + return AutomationControlType.TreeItem; + } +} diff --git a/src/Avalonia.Controls/TreeViewItem.cs b/src/Avalonia.Controls/TreeViewItem.cs index a48706cb19c..1c0b3cc52ba 100644 --- a/src/Avalonia.Controls/TreeViewItem.cs +++ b/src/Avalonia.Controls/TreeViewItem.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Collections.Specialized; using System.Linq; +using Avalonia.Automation.Peers; using Avalonia.Controls.Metadata; using Avalonia.Controls.Mixins; using Avalonia.Controls.Primitives; @@ -93,6 +94,11 @@ public int Level internal TreeView? TreeViewOwner => _treeView; + protected override AutomationPeer OnCreateAutomationPeer() + { + return new TreeViewItemAutomationPeer(this); + } + protected internal override Control CreateContainerForItemOverride(object? item, int index, object? recycleKey) { return EnsureTreeView().CreateContainerForItemOverride(item, index, recycleKey); From 9cb5dc62c08294ebcd3f012396665c8145097e7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wies=C5=82aw=20S=CC=8Colte=CC=81s?= Date: Wed, 8 May 2024 11:59:39 +0200 Subject: [PATCH 3/3] Add missing xml doc --- src/Avalonia.Controls/TreeViewItem.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Avalonia.Controls/TreeViewItem.cs b/src/Avalonia.Controls/TreeViewItem.cs index 1c0b3cc52ba..1e68b08ae4f 100644 --- a/src/Avalonia.Controls/TreeViewItem.cs +++ b/src/Avalonia.Controls/TreeViewItem.cs @@ -94,6 +94,7 @@ public int Level internal TreeView? TreeViewOwner => _treeView; + /// protected override AutomationPeer OnCreateAutomationPeer() { return new TreeViewItemAutomationPeer(this);