This commit is contained in:
CortexCore
2024-12-30 21:34:37 +08:00
parent 385220e0f6
commit 421ffc2c15
36 changed files with 41 additions and 40 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];

View File

@@ -94,13 +94,13 @@ TabBar Button:disabled {
}
.gap-8 {
margin-top:-8px;
margin-top: -8px;
margin-right: -8px;
margin-bottom: -8px;
margin-left: -8px;
}
.gap-8 > *{
.gap-8 > * {
margin: 8px;
}
@@ -109,7 +109,7 @@ TabBar Button:disabled {
margin-left: -8px;
}
.gap-x-8 > *{
.gap-x-8 > * {
margin-left: 8px;
margin-right: 8px;
}
@@ -119,7 +119,7 @@ TabBar Button:disabled {
margin-bottom: -8px;
}
.gap-y-8 > *{
.gap-y-8 > * {
margin-top: 8px;
margin-bottom: 8px;
}
@@ -504,3 +504,7 @@ Button.clear {
border-top-color: rgba(0, 0, 0, 0);
border-bottom-color: rgba(0, 0, 0, 0);
}
TabContainer > * {
flex-grow: 1;
}