From 589abe619379e37bc54d4ae7eb3f8ffd8cd9ac24 Mon Sep 17 00:00:00 2001 From: Sinai <49360850+sinai-dev@users.noreply.github.com> Date: Sat, 22 Jan 2022 21:44:22 +1100 Subject: [PATCH] Fix panel draggers on display change --- src/UI/DisplayManager.cs | 17 +++++++++++++++++ src/UI/Panels/UIPanel.cs | 2 ++ src/UI/UIManager.cs | 2 +- 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/UI/DisplayManager.cs b/src/UI/DisplayManager.cs index a9cdc11..ee5455d 100644 --- a/src/UI/DisplayManager.cs +++ b/src/UI/DisplayManager.cs @@ -1,9 +1,11 @@ using System; +using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using UnityEngine; using UnityExplorer.Config; +using UniverseLib; using UniverseLib.Input; namespace UnityExplorer.UI @@ -57,6 +59,21 @@ namespace UnityExplorer.UI } canvasCamera.targetDisplay = display; } + + RuntimeProvider.Instance.StartCoroutine(FixPanels()); + } + + private static IEnumerator FixPanels() + { + yield return null; + yield return null; + + foreach (var panel in UIManager.UIPanels.Values) + { + panel.EnsureValidSize(); + panel.EnsureValidPosition(); + panel.Dragger.OnEndResize(); + } } } } diff --git a/src/UI/Panels/UIPanel.cs b/src/UI/Panels/UIPanel.cs index e9723f6..1139203 100644 --- a/src/UI/Panels/UIPanel.cs +++ b/src/UI/Panels/UIPanel.cs @@ -146,6 +146,8 @@ namespace UnityExplorer.UI.Panels Rect.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, MinHeight); } + public void EnsureValidPosition() => EnsureValidPosition(this.Rect); + public static void EnsureValidPosition(RectTransform panel) { var pos = panel.localPosition; diff --git a/src/UI/UIManager.cs b/src/UI/UIManager.cs index 0fc7b39..b10a24a 100644 --- a/src/UI/UIManager.cs +++ b/src/UI/UIManager.cs @@ -45,7 +45,7 @@ namespace UnityExplorer.UI public static Canvas UICanvas { get; private set; } internal static GameObject PanelHolder { get; private set; } - private static readonly Dictionary UIPanels = new(); + internal static readonly Dictionary UIPanels = new(); public static RectTransform NavBarRect; public static GameObject NavbarTabButtonHolder;