UIUtils.cs
2.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
using System;
using UnityEngine.Experimental.UIElements;
namespace UnityEditor.PackageManager.UI
{
internal static class UIUtils
{
private const string DisplayNone = "display-none";
public static void SetElementDisplay(VisualElement element, bool value)
{
if (element == null)
return;
if (value)
element.RemoveFromClassList(DisplayNone);
else
element.AddToClassList(DisplayNone);
element.visible = value;
}
public static void SetElementDisplayNonEmpty(Label element)
{
if (element == null)
return;
var empty = string.IsNullOrEmpty(element.text);
if (empty)
element.AddToClassList(DisplayNone);
else
element.RemoveFromClassList(DisplayNone);
element.visible = !empty;
}
public static void SetElementDisplayNonEmpty(Button element)
{
if (element == null)
return;
var empty = string.IsNullOrEmpty(element.text);
if (empty)
element.AddToClassList(DisplayNone);
else
element.RemoveFromClassList(DisplayNone);
element.visible = !empty;
}
public static bool IsElementVisible(VisualElement element)
{
return element.visible && !element.ClassListContains(DisplayNone);
}
public static bool IsElementDisplayNone(VisualElement element)
{
return element.ClassListContains(DisplayNone);
}
public static void ShowTextTooltipOnSizeChange<T>(this T element, int deltaWidth = 0) where T : TextElement
{
element.RegisterCallback<GeometryChangedEvent>(evt =>
{
if (evt.newRect.width == evt.oldRect.width)
return;
var target = evt.target as TextElement;
if (target == null)
return;
var size = target.MeasureTextSize(target.text, float.MaxValue, VisualElement.MeasureMode.AtMost, evt.newRect.height, VisualElement.MeasureMode.Undefined);
var width = evt.newRect.width + deltaWidth;
target.tooltip = width < size.x ? target.text : string.Empty;
});
}
}
}