From be8322d586383ca2bcd4f0617e88e75b6b79701a Mon Sep 17 00:00:00 2001 From: "Henri J. Norden" <55378880+Henri-J-Norden@users.noreply.github.com> Date: Tue, 21 Feb 2023 22:59:14 +0100 Subject: [PATCH 1/3] Fix initial panels being created too large --- Plugins/DynamicPanels/Scripts/Panel.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Plugins/DynamicPanels/Scripts/Panel.cs b/Plugins/DynamicPanels/Scripts/Panel.cs index c48d9b2..db9ef59 100644 --- a/Plugins/DynamicPanels/Scripts/Panel.cs +++ b/Plugins/DynamicPanels/Scripts/Panel.cs @@ -273,7 +273,7 @@ public void OnApplicationQuit() public Vector2 Position { get { return RectTransform.anchoredPosition; } } public Vector2 Size { get { return RectTransform.sizeDelta; } } - private Vector2 m_minSize = new Vector2( 200f, 200f ); + private Vector2 m_minSize = new Vector2( -1f, -1f ); public Vector2 MinSize { get { return m_minSize; } From a81a16f89a4c92c3d2c27f27358c8ea5796ec73c Mon Sep 17 00:00:00 2001 From: "Henri J. Norden" <55378880+Henri-J-Norden@users.noreply.github.com> Date: Wed, 22 Feb 2023 16:57:39 +0100 Subject: [PATCH 2/3] Similar initial size fix for PanelTab --- Plugins/DynamicPanels/Scripts/Helpers/PanelTab.cs | 6 +++++- Plugins/DynamicPanels/Scripts/Panel.cs | 6 +++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Plugins/DynamicPanels/Scripts/Helpers/PanelTab.cs b/Plugins/DynamicPanels/Scripts/Helpers/PanelTab.cs index 823bd81..5e6422a 100644 --- a/Plugins/DynamicPanels/Scripts/Helpers/PanelTab.cs +++ b/Plugins/DynamicPanels/Scripts/Helpers/PanelTab.cs @@ -1,4 +1,5 @@ using UnityEngine; +using UnityEngine.Assertions; using UnityEngine.EventSystems; using UnityEngine.UI; @@ -24,6 +25,7 @@ public void Initialize( Panel panel, RectTransform content ) { tab.m_panel = panel; tab.Content = content; + tab.MinSize = content.rect.size; } public void ChangeCloseButtonVisibility( bool isVisible ) @@ -100,6 +102,8 @@ public Vector2 MinSize { if( m_minSize != value ) { + if (value.x < 0) value = new Vector2(-value.x, value.y); + if (value.y < 0) value = new Vector2(value.x, -value.y); m_minSize = value; m_panel.Internal.RecalculateMinSize(); } @@ -133,7 +137,7 @@ public string Label private void Awake() { - m_minSize = new Vector2( 100f, 100f ); + m_minSize = new Vector2( -1f, -1f ); Internal = new InternalSettings( this ); iconHolder.preserveAspect = true; diff --git a/Plugins/DynamicPanels/Scripts/Panel.cs b/Plugins/DynamicPanels/Scripts/Panel.cs index db9ef59..329137f 100644 --- a/Plugins/DynamicPanels/Scripts/Panel.cs +++ b/Plugins/DynamicPanels/Scripts/Panel.cs @@ -474,11 +474,11 @@ public PanelTab AddTab( RectTransform tabContent, int tabIndex = -1 ) tab.Panel.Internal.RemoveTab( tab.Index, false ); } - tab.Internal.Initialize( this, tabContent ); - tab.Internal.RectTransform.SetSiblingIndex( tabIndex ); - tabContent.SetParent( null, false ); // workaround for a rare internal Unity crash tabContent.SetParent( contentParent, false ); + + tab.Internal.Initialize( this, tabContent ); + tab.Internal.RectTransform.SetSiblingIndex( tabIndex ); Internal.RecalculateMinSize(); } From af8835ae6f137b4328305afd54824aa968d4aee0 Mon Sep 17 00:00:00 2001 From: "Henri J. Norden" <55378880+Henri-J-Norden@users.noreply.github.com> Date: Tue, 4 Apr 2023 18:45:49 +0200 Subject: [PATCH 3/3] Fix initial panel size with PanelUtils.CreatePanelFor --- Plugins/DynamicPanels/Scripts/Panel.cs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Plugins/DynamicPanels/Scripts/Panel.cs b/Plugins/DynamicPanels/Scripts/Panel.cs index 329137f..ec08a83 100644 --- a/Plugins/DynamicPanels/Scripts/Panel.cs +++ b/Plugins/DynamicPanels/Scripts/Panel.cs @@ -450,6 +450,7 @@ public PanelTab AddTab( RectTransform tabContent, int tabIndex = -1 ) tabIndex = tabs.Count; int thisTabIndex = GetTabIndex( tabContent ); + Vector2? newTabContentSize = null; if( thisTabIndex == -1 ) { PanelTab tab = PanelUtils.GetAssociatedTab( tabContent ); @@ -458,6 +459,7 @@ public PanelTab AddTab( RectTransform tabContent, int tabIndex = -1 ) tab = (PanelTab) Instantiate( Resources.Load( "DynamicPanelTab" ), tabsParent, false ); tabs.Insert( tabIndex, tab ); + newTabContentSize = tabContent.rect.size; tabContent.anchorMin = Vector2.zero; tabContent.anchorMax = Vector2.one; tabContent.sizeDelta = Vector2.zero; @@ -474,11 +476,12 @@ public PanelTab AddTab( RectTransform tabContent, int tabIndex = -1 ) tab.Panel.Internal.RemoveTab( tab.Index, false ); } - tabContent.SetParent( null, false ); // workaround for a rare internal Unity crash - tabContent.SetParent( contentParent, false ); - tab.Internal.Initialize( this, tabContent ); + if (newTabContentSize != null) tab.MinSize = newTabContentSize.Value; tab.Internal.RectTransform.SetSiblingIndex( tabIndex ); + + tabContent.SetParent( null, false ); // workaround for a rare internal Unity crash + tabContent.SetParent( contentParent, false ); Internal.RecalculateMinSize(); }