From 7c2464ad157d50bbfebd32f0cad7739eef182ca0 Mon Sep 17 00:00:00 2001 From: Guthrie Adams Date: Tue, 28 Sep 2021 17:32:02 -0500 Subject: [PATCH] Changing material inspector to use indicator icons instead of highlighting modified properties Added a blank placeholder image to account for changes to indention when indicator icons are active Added parameter to inspector constructor for specifying leaf property indention size Signed-off-by: Guthrie Adams --- .../UI/PropertyEditor/PropertyRowWidget.cpp | 13 +++---------- .../UI/PropertyEditor/Resources/Icons.qrc | 1 + .../UI/PropertyEditor/Resources/blank.png | 3 +++ .../Inspector/InspectorPropertyGroupWidget.h | 3 ++- .../Inspector/InspectorPropertyGroupWidget.cpp | 6 ++++-- .../Code/Source/Util/MaterialPropertyUtil.cpp | 1 + .../Window/MaterialInspector/MaterialInspector.cpp | 8 ++++---- 7 files changed, 18 insertions(+), 17 deletions(-) create mode 100644 Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/Resources/blank.png diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyRowWidget.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyRowWidget.cpp index 9ba998b99a..bb2d2851ca 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyRowWidget.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyRowWidget.cpp @@ -1102,10 +1102,7 @@ namespace AzToolsFramework { m_dropDownArrow->hide(); } - m_indent->changeSize((m_treeDepth * m_treeIndentation) + m_leafIndentation, 1, QSizePolicy::Fixed, QSizePolicy::Fixed); - m_leftHandSideLayout->invalidate(); - m_leftHandSideLayout->update(); - m_leftHandSideLayout->activate(); + SetIndentSize(m_treeDepth * m_treeIndentation + m_leafIndentation); } else { @@ -1117,10 +1114,7 @@ namespace AzToolsFramework connect(m_dropDownArrow, &QCheckBox::clicked, this, &PropertyRowWidget::OnClickedExpansionButton); } m_dropDownArrow->show(); - m_indent->changeSize((m_treeDepth * m_treeIndentation), 1, QSizePolicy::Fixed, QSizePolicy::Fixed); - m_leftHandSideLayout->invalidate(); - m_leftHandSideLayout->update(); - m_leftHandSideLayout->activate(); + SetIndentSize(m_treeDepth * m_treeIndentation); m_dropDownArrow->setChecked(m_expanded); } } @@ -1720,10 +1714,9 @@ namespace AzToolsFramework } else { - m_indicatorButton->setVisible(true); - QPixmap pixmap(imagePath); m_indicatorButton->setIcon(pixmap); + m_indicatorButton->setVisible(true); }; } diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/Resources/Icons.qrc b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/Resources/Icons.qrc index 7dcc593d5a..621f9be4ad 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/Resources/Icons.qrc +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/Resources/Icons.qrc @@ -1,5 +1,6 @@ + blank.png point_hand.png cross-circle-small.png cross-small.png diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/Resources/blank.png b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/Resources/blank.png new file mode 100644 index 0000000000..d040fa2e14 --- /dev/null +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/Resources/blank.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81b5fa1f978888c3be8a40fce20455668df2723a77587aeb7039f8bf74bdd0e3 +size 119 diff --git a/Gems/Atom/Tools/AtomToolsFramework/Code/Include/AtomToolsFramework/Inspector/InspectorPropertyGroupWidget.h b/Gems/Atom/Tools/AtomToolsFramework/Code/Include/AtomToolsFramework/Inspector/InspectorPropertyGroupWidget.h index d373e2010c..d641af697f 100644 --- a/Gems/Atom/Tools/AtomToolsFramework/Code/Include/AtomToolsFramework/Inspector/InspectorPropertyGroupWidget.h +++ b/Gems/Atom/Tools/AtomToolsFramework/Code/Include/AtomToolsFramework/Inspector/InspectorPropertyGroupWidget.h @@ -42,7 +42,8 @@ namespace AtomToolsFramework QWidget* parent = {}, const AZ::u32 saveStateKey = {}, const AzToolsFramework::InstanceDataHierarchy::ValueComparisonFunction& valueComparisonFunction = {}, - const AzToolsFramework::IndicatorQueryFunction& indicatorQueryFunction = {}); + const AzToolsFramework::IndicatorQueryFunction& indicatorQueryFunction = {}, + int leafIndentSize = 16); void Refresh() override; void Rebuild() override; diff --git a/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Inspector/InspectorPropertyGroupWidget.cpp b/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Inspector/InspectorPropertyGroupWidget.cpp index 6ab76dedef..903c74b076 100644 --- a/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Inspector/InspectorPropertyGroupWidget.cpp +++ b/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Inspector/InspectorPropertyGroupWidget.cpp @@ -20,7 +20,8 @@ namespace AtomToolsFramework QWidget* parent, const AZ::u32 saveStateKey, const AzToolsFramework::InstanceDataHierarchy::ValueComparisonFunction& valueComparisonFunction, - const AzToolsFramework::IndicatorQueryFunction& indicatorQueryFunction) + const AzToolsFramework::IndicatorQueryFunction& indicatorQueryFunction, + int leafIndentSize) : InspectorGroupWidget(parent) { AZ::SerializeContext* context = nullptr; @@ -33,7 +34,8 @@ namespace AtomToolsFramework m_propertyEditor = new AzToolsFramework::ReflectedPropertyEditor(this); m_propertyEditor->SetHideRootProperties(true); - m_propertyEditor->SetAutoResizeLabels(true); + m_propertyEditor->SetAutoResizeLabels(false); + m_propertyEditor->SetLeafIndentation(leafIndentSize); m_propertyEditor->SetValueComparisonFunction(valueComparisonFunction); m_propertyEditor->SetIndicatorQueryFunction(indicatorQueryFunction); m_propertyEditor->SetSavedStateKey(saveStateKey); diff --git a/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Util/MaterialPropertyUtil.cpp b/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Util/MaterialPropertyUtil.cpp index 641cf63d04..1ce973b4d7 100644 --- a/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Util/MaterialPropertyUtil.cpp +++ b/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Util/MaterialPropertyUtil.cpp @@ -150,6 +150,7 @@ namespace AtomToolsFramework ComparePropertyValues(valueA, valueB) || ComparePropertyValues(valueA, valueB) || ComparePropertyValues(valueA, valueB) || + ComparePropertyValues>(valueA, valueB) || ComparePropertyValues>(valueA, valueB) || ComparePropertyValues>(valueA, valueB) || ComparePropertyValues>(valueA, valueB) || diff --git a/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/MaterialInspector/MaterialInspector.cpp b/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/MaterialInspector/MaterialInspector.cpp index 78e3edecf5..525930548a 100644 --- a/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/MaterialInspector/MaterialInspector.cpp +++ b/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/MaterialInspector/MaterialInspector.cpp @@ -103,7 +103,7 @@ namespace MaterialEditor { return ":/PropertyEditor/Resources/changed_data_item.png"; } - return nullptr; + return ":/PropertyEditor/Resources/blank.png"; } void MaterialInspector::AddOverviewGroup() @@ -130,7 +130,7 @@ namespace MaterialEditor // Passing in same group as main and comparison instance to enable custom value comparison for highlighting modified properties auto propertyGroupWidget = new AtomToolsFramework::InspectorPropertyGroupWidget( &group, &group, group.TYPEINFO_Uuid(), this, this, GetGroupSaveStateKey(groupNameId), {}, - [this](const auto node) { return GetInstanceNodePropertyIndicator(node); }); + [this](const auto node) { return GetInstanceNodePropertyIndicator(node); }, 0); AddGroup(groupNameId, groupDisplayName, groupDescription, propertyGroupWidget); } @@ -161,7 +161,7 @@ namespace MaterialEditor // Passing in same group as main and comparison instance to enable custom value comparison for highlighting modified properties auto propertyGroupWidget = new AtomToolsFramework::InspectorPropertyGroupWidget( &group, &group, group.TYPEINFO_Uuid(), this, this, GetGroupSaveStateKey(groupNameId), {}, - [this](const auto node) { return GetInstanceNodePropertyIndicator(node); }); + [this](const auto node) { return GetInstanceNodePropertyIndicator(node); }, 0); AddGroup(groupNameId, groupDisplayName, groupDescription, propertyGroupWidget); } @@ -197,7 +197,7 @@ namespace MaterialEditor // Passing in same group as main and comparison instance to enable custom value comparison for highlighting modified properties auto propertyGroupWidget = new AtomToolsFramework::InspectorPropertyGroupWidget( &group, &group, group.TYPEINFO_Uuid(), this, this, GetGroupSaveStateKey(groupNameId), {}, - [this](const auto node) { return GetInstanceNodePropertyIndicator(node); }); + [this](const auto node) { return GetInstanceNodePropertyIndicator(node); }, 0); AddGroup(groupNameId, groupDisplayName, groupDescription, propertyGroupWidget); bool isGroupVisible = false;