This commit is contained in:
CortexCore
2025-01-12 11:13:19 +08:00
parent 01e7e4e35e
commit 01b3d1be43
26 changed files with 387 additions and 336 deletions

View File

@@ -25,50 +25,48 @@ namespace BITKit.UX
public new class UxmlFactory : UxmlFactory<TabContainer, UxmlTraits> { }
public TabContainer()
{
RegisterCallback<AttachToPanelEvent>(OnAttachToPanel);
RegisterCallback<DetachFromPanelEvent>(OnDetachFromPanel);
RegisterCallback<GeometryChangedEvent>(OnGeometryChanged);
RegisterCallback<AttachToPanelEvent>(RebuildOnEvent);
RegisterCallback<DetachFromPanelEvent>(RebuildOnEvent);
RegisterCallback<GeometryChangedEvent>(RebuildOnEvent);
RegisterCallback<BlurEvent>(RebuildOnEvent);
RegisterCallback<FocusEvent>(RebuildOnEvent);
}
private void OnGeometryChanged(GeometryChangedEvent evt)
{
Rebuild();
}
public string TabPath
{
get=>_tabPath;
set
{
_tabPath = value;
Rebuild();
}
}
private string _tabPath;
private TabBar _tabBar;
private int _index;
private void OnDetachFromPanel(DetachFromPanelEvent evt)
private void RebuildOnEvent<T>(T evt)
{
Rebuild();
}
private void OnAttachToPanel(AttachToPanelEvent evt)
{
Rebuild();
}
private void Rebuild()
{
if (_tabBar is not null)
{
_tabBar.OnTabChanged -= OnTabChanged;
}
_tabBar = panel.visualTree.Q<TabBar>(TabPath);
var p = parent;
while (p is not null)
{
_tabBar = p.Q<TabBar>(TabPath);
if (_tabBar is not null)
{
break;
}
p = p.parent;
}
if (_tabBar is not null)
{
_tabBar.OnTabChanged += OnTabChanged;
}
if (_index <=0)
{
_index = 1;
_index = _tabBar.CurrentTab;
}
OnTabChanged(_index);
}
@@ -76,7 +74,7 @@ namespace BITKit.UX
private void OnTabChanged(int obj)
{
_index = obj;
if (childCount <= 0) return;
if (childCount < 0) return;
for (var i = 0; i < childCount; i++)
{
var visualElement = this[i];