修复stylefield展开的尺寸计算错误问题

This commit is contained in:
2026-07-06 19:12:10 +08:00
parent a6047062c6
commit 59bc86d23e
+30 -3
View File
@@ -30,13 +30,13 @@ namespace XericUIEditor
var nsProp = property.FindPropertyRelative(PROP_NAMESPACE);
var pathProp = property.FindPropertyRelative(PROP_STYLEPATH);
if (nsProp == null || pathProp == null)
return LINE_HEIGHT + PADDING * 2;
return PADDING + (LINE_HEIGHT + PADDING);
string key = GetFoldKey(property);
bool expanded = s_FoldoutStates.TryGetValue(key, out bool f) && f;
if (!expanded)
return LINE_HEIGHT + PADDING * 2;
return PADDING + (LINE_HEIGHT + PADDING);
// 基础:命名空间 + 路径 = 2 行
int rowCount = 2;
@@ -53,7 +53,7 @@ namespace XericUIEditor
if (annotations != null && annotations.Count > 0)
rowCount++;
return (LINE_HEIGHT + PADDING) * rowCount + PADDING;
return PADDING + (1 + rowCount) * (LINE_HEIGHT + PADDING);
}
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
@@ -94,6 +94,9 @@ namespace XericUIEditor
string currentNs = GetNamespace(property);
// 首次绘制时 xsss 可能尚未加载,当前命名空间若无效则自动切换
EnsureValidNamespace(nsProp, ref currentNs);
DrawPathDropdown(pathRect, pathProp, currentNs);
if (!expanded)
@@ -243,6 +246,30 @@ namespace XericUIEditor
}
}
/// <summary>
/// 若当前命名空间无可用路径(xsss 尚未加载),自动切换至首个有路径的命名空间。
/// </summary>
private static void EnsureValidNamespace(SerializedProperty nsProp, ref string currentNs)
{
var paths = StyleManager.GetPathsForNamespace(currentNs);
if (paths.Count > 0)
return;
// 当前命名空间不可用,尝试其他命名空间
var allNs = StyleManager.GetAvailableNamespaces();
foreach (var ns in allNs)
{
if (ns == currentNs) continue;
var altPaths = StyleManager.GetPathsForNamespace(ns);
if (altPaths.Count > 0)
{
currentNs = ns;
nsProp.stringValue = ns;
return;
}
}
}
#endregion
}
}