Skip to content

Commit 81002c1

Browse files
committed
Fix EditWindows closing breaking UI
1 parent 41dc18f commit 81002c1

File tree

2 files changed

+25
-10
lines changed

2 files changed

+25
-10
lines changed

Assets/MicroEngineer/Code/UI/EditWindowsController.cs

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ public class EditWindowsController : MonoBehaviour
3838
public Button MoveUp { get; set; }
3939
public Button MoveDown { get; set; }
4040

41+
private bool _windowToggled;
42+
4143
public EditWindowsController()
4244
{ }
4345

@@ -55,7 +57,7 @@ private System.Collections.IEnumerator StartInitialization()
5557
Root = EditWindows.rootVisualElement;
5658

5759
CloseButton = Root.Q<Button>("close-button");
58-
CloseButton.RegisterCallback<PointerUpEvent>(_ => CloseWindow());
60+
CloseButton.RegisterCallback<PointerUpEvent>(_ => ToggleWindow());
5961
AvailableScrollView = Root.Q<ScrollView>("available-scrollview");
6062
AvailableScrollView.StopMouseEventsToGameInputPropagation();
6163
InstalledScrollView = Root.Q<ScrollView>("installed-scrollview");
@@ -87,6 +89,8 @@ private System.Collections.IEnumerator StartInitialization()
8789
BuildCategoryDropdown();
8890
_editableWindows = FlightSceneController.Instance.GetEditableWindows();
8991
ResetSelectedWindow();
92+
93+
_windowToggled = true;
9094
}
9195

9296
public void Update()
@@ -383,11 +387,19 @@ private void RebuildFlightUI()
383387
FlightSceneController.Instance.RebuildUI();
384388
}
385389

386-
public void CloseWindow()
390+
public void ToggleWindow() => ToggleWindow(!_windowToggled);
391+
public void ToggleWindow(bool state)
387392
{
388-
if (EditWindows != null && EditWindows.gameObject != null)
389-
EditWindows.gameObject.DestroyGameObject();
390-
GameObject.Destroy(EditWindows);
393+
if (state)
394+
{
395+
Root.style.display = DisplayStyle.Flex;
396+
}
397+
else
398+
{
399+
Root.style.display = DisplayStyle.None;
400+
}
401+
402+
_windowToggled = state;
391403
}
392404
}
393405
}

Assets/MicroEngineer/Code/UI/FlightSceneController.cs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ public bool ShowGui
4343
RebuildUI();
4444

4545
// If UI is closing, close EditWindows as well
46-
if (!value && EditWindows != null)
47-
ToggleEditWindows();
46+
if (!value && EditWindows != null)
47+
EditWindows.GetComponent<EditWindowsController>().ToggleWindow(false);
4848
}
4949
}
5050

@@ -162,6 +162,7 @@ public void DestroyUI()
162162
public void ToggleEditWindows() => ToggleEditWindows(false);
163163
public void ToggleEditWindows(bool needToOpenWithSpecificWindowSelected, int editableWindowId = 0)
164164
{
165+
// first time opening the window
165166
if (EditWindows == null)
166167
{
167168
EditWindows = Window.Create(Uxmls.Instance.InstantiateWindowOptions("EditWindows"), Uxmls.Instance.EditWindows);
@@ -171,16 +172,18 @@ public void ToggleEditWindows(bool needToOpenWithSpecificWindowSelected, int edi
171172
_editWindowsController = EditWindows.gameObject.AddComponent<EditWindowsController>();
172173
_editWindowsController.SelectedWindowId = editableWindowId;
173174
}
175+
// one of the entry windows wants to open it
174176
else if (needToOpenWithSpecificWindowSelected)
175177
{
176178
_editWindowsController.SelectedWindowId = editableWindowId;
177179
_editWindowsController.ResetSelectedWindow();
180+
181+
_editWindowsController.ToggleWindow(true);
178182
}
183+
// main gui wants to toggle the window
179184
else
180185
{
181-
var controller = EditWindows.GetComponent<EditWindowsController>();
182-
controller.CloseWindow();
183-
EditWindows = null;
186+
EditWindows.GetComponent<EditWindowsController>().ToggleWindow();
184187
}
185188
}
186189

0 commit comments

Comments
 (0)