Browse Source

Merge branch 'master' into fixes/10769-insert-index-0

pull/10788/head
Max Katz 3 years ago
committed by GitHub
parent
commit
b0775e4b36
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      src/Avalonia.Controls/TreeView.cs
  2. 19
      src/Avalonia.Controls/TreeViewItem.cs
  3. 1990
      tests/Avalonia.Controls.UnitTests/TreeViewTests.cs

4
src/Avalonia.Controls/TreeView.cs

@ -10,6 +10,7 @@ using Avalonia.Controls.Generators;
using Avalonia.Controls.Primitives;
using Avalonia.Input;
using Avalonia.Input.Platform;
using Avalonia.Layout;
using Avalonia.Threading;
using Avalonia.VisualTree;
@ -163,6 +164,9 @@ namespace Avalonia.Controls
{
item.IsExpanded = true;
if (item.Presenter?.Panel is null)
(this.GetVisualRoot() as ILayoutRoot)?.LayoutManager.ExecuteLayoutPass();
if (item.Presenter?.Panel is { } panel)
{
foreach (var child in panel.Children)

19
src/Avalonia.Controls/TreeViewItem.cs

@ -90,8 +90,20 @@ namespace Avalonia.Controls
internal TreeView? TreeViewOwner => _treeView;
protected internal override Control CreateContainerForItemOverride() => new TreeViewItem();
protected internal override bool IsItemItsOwnContainerOverride(Control item) => item is TreeViewItem;
protected internal override Control CreateContainerForItemOverride()
{
return EnsureTreeView().CreateContainerForItemOverride();
}
protected internal override bool IsItemItsOwnContainerOverride(Control item)
{
return EnsureTreeView().IsItemItsOwnContainerOverride(item);
}
protected internal override void PrepareContainerForItemOverride(Control container, object? item, int index)
{
EnsureTreeView().PrepareContainerForItemOverride(container, item, index);
}
/// <inheritdoc/>
protected override void OnAttachedToLogicalTree(LogicalTreeAttachmentEventArgs e)
@ -283,6 +295,9 @@ namespace Avalonia.Controls
return logical != null ? result : @default;
}
private TreeView EnsureTreeView() => _treeView ??
throw new InvalidOperationException("The TreeViewItem is not part of a TreeView.");
private void HeaderDoubleTapped(object? sender, TappedEventArgs e)
{
OnHeaderDoubleTapped(e);

1990
tests/Avalonia.Controls.UnitTests/TreeViewTests.cs

File diff suppressed because it is too large
Loading…
Cancel
Save