[Fix] resolve TreeView deprecation in Unity 6.2+

This commit is contained in:
2026-03-29 03:19:31 +07:00
parent 50dd99279c
commit 123c373439
@@ -13,7 +13,7 @@ using System.Text.RegularExpressions;
namespace Cysharp.Threading.Tasks.Editor namespace Cysharp.Threading.Tasks.Editor
{ {
public class UniTaskTrackerViewItem : TreeViewItem public class UniTaskTrackerViewItem : TreeViewItem<int>
{ {
static Regex removeHref = new Regex("<a href.+>(.+)</a>", RegexOptions.Compiled); static Regex removeHref = new Regex("<a href.+>(.+)</a>", RegexOptions.Compiled);
@@ -55,14 +55,14 @@ namespace Cysharp.Threading.Tasks.Editor
} }
} }
public class UniTaskTrackerTreeView : TreeView public class UniTaskTrackerTreeView : TreeView<int>
{ {
const string sortedColumnIndexStateKey = "UniTaskTrackerTreeView_sortedColumnIndex"; const string sortedColumnIndexStateKey = "UniTaskTrackerTreeView_sortedColumnIndex";
public IReadOnlyList<TreeViewItem> CurrentBindingItems; public IReadOnlyList<TreeViewItem<int>> CurrentBindingItems;
public UniTaskTrackerTreeView() public UniTaskTrackerTreeView()
: this(new TreeViewState(), new MultiColumnHeader(new MultiColumnHeaderState(new[] : this(new TreeViewState<int>(), new MultiColumnHeader(new MultiColumnHeaderState(new[]
{ {
new MultiColumnHeaderState.Column() { headerContent = new GUIContent("TaskType"), width = 20}, new MultiColumnHeaderState.Column() { headerContent = new GUIContent("TaskType"), width = 20},
new MultiColumnHeaderState.Column() { headerContent = new GUIContent("Elapsed"), width = 10}, new MultiColumnHeaderState.Column() { headerContent = new GUIContent("Elapsed"), width = 10},
@@ -72,7 +72,7 @@ namespace Cysharp.Threading.Tasks.Editor
{ {
} }
UniTaskTrackerTreeView(TreeViewState state, MultiColumnHeader header) UniTaskTrackerTreeView(TreeViewState<int> state, MultiColumnHeader header)
: base(state, header) : base(state, header)
{ {
rowHeight = 20; rowHeight = 20;
@@ -121,15 +121,15 @@ namespace Cysharp.Threading.Tasks.Editor
throw new ArgumentOutOfRangeException(nameof(index), index, null); throw new ArgumentOutOfRangeException(nameof(index), index, null);
} }
CurrentBindingItems = rootItem.children = orderedEnumerable.Cast<TreeViewItem>().ToList(); CurrentBindingItems = rootItem.children = orderedEnumerable.Cast<TreeViewItem<int>>().ToList();
BuildRows(rootItem); BuildRows(rootItem);
} }
protected override TreeViewItem BuildRoot() protected override TreeViewItem<int> BuildRoot()
{ {
var root = new TreeViewItem { depth = -1 }; var root = new TreeViewItem<int>(-1, -1);
var children = new List<TreeViewItem>(); var children = new List<TreeViewItem<int>>();
TaskTracker.ForEachActiveTask((trackingId, awaiterType, status, created, stackTrace) => TaskTracker.ForEachActiveTask((trackingId, awaiterType, status, created, stackTrace) =>
{ {
@@ -137,11 +137,11 @@ namespace Cysharp.Threading.Tasks.Editor
}); });
CurrentBindingItems = children; CurrentBindingItems = children;
root.children = CurrentBindingItems as List<TreeViewItem>; root.children = children;
return root; return root;
} }
protected override bool CanMultiSelect(TreeViewItem item) protected override bool CanMultiSelect(TreeViewItem<int> item)
{ {
return false; return false;
} }
@@ -179,4 +179,3 @@ namespace Cysharp.Threading.Tasks.Editor
} }
} }