diff --git a/com.unity.renderstreaming/Editor/ConfigInfoLine.cs b/com.unity.renderstreaming/Editor/ConfigInfoLine.cs index c012563e7..ed6f0eaf9 100644 --- a/com.unity.renderstreaming/Editor/ConfigInfoLine.cs +++ b/com.unity.renderstreaming/Editor/ConfigInfoLine.cs @@ -17,8 +17,10 @@ static class Style private readonly bool m_visibleStatus; private readonly bool m_skipErrorIcon; private Func m_tester; + private Func m_dependTester; private bool m_haveFixer; private bool m_currentStatus; + private bool m_dependStatus; public ConfigInfoLine( string label, @@ -27,6 +29,7 @@ public ConfigInfoLine( string resolverButtonLabel, Func tester, Action resolver, + Func dependTester = null, bool visibleStatus = true, bool skipErrorIcon = false ) @@ -35,6 +38,7 @@ public ConfigInfoLine( m_skipErrorIcon = skipErrorIcon; m_tester = tester; m_haveFixer = resolver != null; + m_dependTester = dependTester; var testLabel = new Label(label) {name = "testLabel"}; var fixer = new Button(resolver) {text = resolverButtonLabel, name = "resolver"}; @@ -71,20 +75,24 @@ public ConfigInfoLine( Add(new HelpBox(error, kind)); - UpdateDisplay(m_currentStatus, m_haveFixer); + UpdateDisplay(m_currentStatus, m_haveFixer, m_dependStatus); } public void CheckUpdate() { bool wellConfigured = m_tester(); - if (wellConfigured ^ m_currentStatus) + bool wellDependConfigured = m_dependTester == null || m_dependTester(); + bool changeConfigured = wellConfigured ^ m_currentStatus; + bool changeDependConfigured = wellDependConfigured ^ m_dependStatus; + if (changeConfigured || changeDependConfigured) { - UpdateDisplay(wellConfigured, m_haveFixer); + UpdateDisplay(wellConfigured, m_haveFixer, wellDependConfigured); m_currentStatus = wellConfigured; + m_dependStatus = wellDependConfigured; } } - private void UpdateDisplay(bool statusOK, bool haveFixer) + private void UpdateDisplay(bool statusOK, bool haveFixer, bool dependStatusOK) { if (m_visibleStatus) { @@ -94,7 +102,9 @@ private void UpdateDisplay(bool statusOK, bool haveFixer) : DisplayStyle.None; } - this.Q(name: "resolver").style.display = statusOK || !haveFixer ? DisplayStyle.None : DisplayStyle.Flex; + var resolver = this.Q