diff --git a/plugins/PerObjectSettingsTool/PerObjectCategory.qml b/plugins/PerObjectSettingsTool/PerObjectCategory.qml index 2be716fd39..4ca12f657e 100644 --- a/plugins/PerObjectSettingsTool/PerObjectCategory.qml +++ b/plugins/PerObjectSettingsTool/PerObjectCategory.qml @@ -58,5 +58,5 @@ Button { checkable: true checked: definition.expanded - onClicked: definition.expanded ? settingDefinitionsModel.collapse(definition.key) : settingDefinitionsModel.expandRecursive(definition.key) + onClicked: definition.expanded ? settingDefinitionsModel.collapseRecursive(definition.key) : settingDefinitionsModel.expandRecursive(definition.key) } diff --git a/resources/qml/Menus/SettingVisibilityPresetsMenu.qml b/resources/qml/Menus/SettingVisibilityPresetsMenu.qml index 97cee67300..56cb001ff5 100644 --- a/resources/qml/Menus/SettingVisibilityPresetsMenu.qml +++ b/resources/qml/Menus/SettingVisibilityPresetsMenu.qml @@ -14,6 +14,8 @@ Menu property QtObject settingVisibilityPresetsModel: CuraApplication.getSettingVisibilityPresetsModel() + signal collapseAllCategories() + Instantiator { model: settingVisibilityPresetsModel.items @@ -34,6 +36,15 @@ Menu onObjectRemoved: menu.removeItem(object) } + MenuSeparator {} + MenuItem + { + text: catalog.i18nc("@action:inmenu", "Collapse All Categories") + onTriggered: + { + collapseAllCategories(); + } + } MenuSeparator {} MenuItem { diff --git a/resources/qml/Settings/SettingCategory.qml b/resources/qml/Settings/SettingCategory.qml index 5466aeaeaa..fd4a181a56 100644 --- a/resources/qml/Settings/SettingCategory.qml +++ b/resources/qml/Settings/SettingCategory.qml @@ -30,11 +30,11 @@ Button { return UM.Theme.getColor("setting_category_disabled") } - else if (base.hovered && base.checkable && base.checked) + else if (base.hovered && base.expanded) { return UM.Theme.getColor("setting_category_active_hover") } - else if (base.pressed || (base.checkable && base.checked)) + else if (base.pressed || base.expanded) { return UM.Theme.getColor("setting_category_active") } @@ -55,6 +55,7 @@ Button signal setActiveFocusToNextSetting(bool forward) property var focusItem: base + property bool expanded: definition.expanded contentItem: Item { @@ -79,10 +80,10 @@ Button if (!base.enabled) { return UM.Theme.getColor("setting_category_disabled_text") - } else if ((base.hovered || base.activeFocus) && base.checkable && base.checked) + } else if ((base.hovered || base.activeFocus) && base.expanded) { return UM.Theme.getColor("setting_category_active_hover_text") - } else if (base.pressed || (base.checkable && base.checked)) + } else if (base.pressed || base.expanded) { return UM.Theme.getColor("setting_category_active_text") } else if (base.hovered || base.activeFocus) @@ -107,7 +108,7 @@ Button height: UM.Theme.getSize("standard_arrow").height sourceSize.height: width color: UM.Theme.getColor("setting_control_button") - source: base.checked ? UM.Theme.getIcon("arrow_bottom") : UM.Theme.getIcon("arrow_left") + source: definition.expanded ? UM.Theme.getIcon("arrow_bottom") : UM.Theme.getIcon("arrow_left") } } @@ -123,11 +124,11 @@ Button { return UM.Theme.getColor("setting_category_disabled_text") } - else if((base.hovered || base.activeFocus) && base.checkable && base.checked) + else if((base.hovered || base.activeFocus) && base.expanded) { return UM.Theme.getColor("setting_category_active_hover_text") } - else if(base.pressed || (base.checkable && base.checked)) + else if(base.pressed || base.expanded) { return UM.Theme.getColor("setting_category_active_text") } @@ -144,14 +145,11 @@ Button sourceSize.height: width + 15 * screenScaleFactor } - checkable: true - checked: definition.expanded - onClicked: { if (definition.expanded) { - settingDefinitionsModel.collapse(definition.key) + settingDefinitionsModel.collapseRecursive(definition.key) } else { @@ -226,7 +224,6 @@ Button onClicked: { settingDefinitionsModel.expandRecursive(definition.key) - base.checked = true base.showAllHiddenInheritedSettings(definition.key) } diff --git a/resources/qml/Settings/SettingView.qml b/resources/qml/Settings/SettingView.qml index 8617c564f6..eefcefeadf 100644 --- a/resources/qml/Settings/SettingView.qml +++ b/resources/qml/Settings/SettingView.qml @@ -185,7 +185,16 @@ Item label: Label {} } - menu: SettingVisibilityPresetsMenu {} + menu: SettingVisibilityPresetsMenu + { + onCollapseAllCategories: + { + settingsSearchTimer.stop() + filter.text = "" // clear search field + filter.editingFinished() + definitionsModel.collapseAllCategories() + } + } } // Mouse area that gathers the scroll events to not propagate it to the main view.