|
8 | 8 |
|
9 | 9 | namespace Explorer.Unstrip.IMGUI
|
10 | 10 | {
|
11 |
| - // Also contains some stuff from GUI. |
12 |
| - // This class was meant to be temporary but who knows. |
13 |
| - |
14 | 11 | public class GUIUnstrip
|
15 | 12 | {
|
16 | 13 | #region Properties
|
@@ -93,12 +90,41 @@ public static GUILayoutOption ExpandHeight(bool expand)
|
93 | 90 |
|
94 | 91 | public static void BeginLayoutDirection(bool vertical, GUIContent content, GUIStyle style, GUILayoutOption[] options)
|
95 | 92 | {
|
96 |
| - var g = GUILayoutUtility.BeginLayoutGroup(style, options, Il2CppType.Of<GUILayoutGroup>()); |
| 93 | + var g = BeginLayoutGroup(style, options, Il2CppType.Of<GUILayoutGroup>()); |
97 | 94 | g.isVertical = vertical;
|
98 | 95 | if (style != GUIStyle.none || content != GUIContent.none)
|
99 | 96 | GUI.Box(g.rect, content, style);
|
100 | 97 | }
|
101 | 98 |
|
| 99 | + public static GUILayoutGroup BeginLayoutGroup(GUIStyle style, GUILayoutOption[] options, Il2CppSystem.Type layoutType) |
| 100 | + { |
| 101 | + EventType type = Event.current.type; |
| 102 | + GUILayoutGroup guilayoutGroup; |
| 103 | + if (type != EventType.Used && type != EventType.Layout) |
| 104 | + { |
| 105 | + guilayoutGroup = GUILayoutUtility.current.topLevel.GetNext().TryCast<GUILayoutGroup>(); |
| 106 | + |
| 107 | + if (guilayoutGroup == null) |
| 108 | + { |
| 109 | + throw new ArgumentException("GUILayout: Mismatched LayoutGroup." + Event.current.type); |
| 110 | + } |
| 111 | + guilayoutGroup.ResetCursor(); |
| 112 | + } |
| 113 | + else |
| 114 | + { |
| 115 | + guilayoutGroup = GUILayoutUtility.CreateGUILayoutGroupInstanceOfType(layoutType); |
| 116 | + guilayoutGroup.style = style; |
| 117 | + if (options != null) |
| 118 | + { |
| 119 | + guilayoutGroup.ApplyOptions(options); |
| 120 | + } |
| 121 | + GUILayoutUtility.current.topLevel.entries.Add(guilayoutGroup); |
| 122 | + } |
| 123 | + GUILayoutUtility.current.layoutGroups.Push(guilayoutGroup); |
| 124 | + GUILayoutUtility.current.topLevel = guilayoutGroup; |
| 125 | + return guilayoutGroup; |
| 126 | + } |
| 127 | + |
102 | 128 | public static string TextField(string text, GUILayoutOption[] options, bool multiLine)
|
103 | 129 | {
|
104 | 130 | text = text ?? string.Empty;
|
@@ -347,7 +373,7 @@ internal static GUILayoutGroup BeginLayoutArea(GUIStyle style, Type layoutType)
|
347 | 373 | {
|
348 | 374 | guilayoutGroup = (GUILayoutGroup)Activator.CreateInstance(layoutType);
|
349 | 375 | guilayoutGroup.style = style;
|
350 |
| - GUILayoutUtility.current.windows.Add(guilayoutGroup); |
| 376 | + GUILayoutUtility.current.windows.entries.Add(guilayoutGroup); |
351 | 377 | }
|
352 | 378 | GUILayoutUtility.current.layoutGroups.Push(guilayoutGroup);
|
353 | 379 | GUILayoutUtility.current.topLevel = guilayoutGroup;
|
|
0 commit comments