Add persistence to the collapsed state of Properties panel node sections (#4300)

* Add persistence to the collapsed state of Properties panel node sections

* Improve comments

* Fix generator node handling with #4299
This commit is contained in:
Keavon Chambers
2026-07-01 04:54:39 -07:00
committed by GitHub
parent 1648e33c1f
commit 7ae7bda3d3
10 changed files with 86 additions and 18 deletions
@@ -384,6 +384,8 @@ pub struct WidgetSection {
pub pinned: bool,
/// Whether this section can be dragged to reorder it within its layer's chain of nodes (true for a layer chain's nodes, but not its terminal layer node).
pub draggable: bool,
/// Whether this section is expanded to show its contents, as opposed to being collapsed down to just its header.
pub expanded: bool,
/// The ID of the node whose properties this section displays.
pub id: u64,
/// The node's properties content, rendered as the section's body when expanded.
@@ -414,13 +416,14 @@ impl LayoutGroup {
Self::Table(WidgetTable { rows, unstyled })
}
pub fn section(name: impl Into<String>, description: impl Into<String>, visible: bool, pinned: bool, id: u64, layout: Layout) -> Self {
pub fn section(name: impl Into<String>, description: impl Into<String>, visible: bool, pinned: bool, expanded: bool, id: u64, layout: Layout) -> Self {
Self::Section(WidgetSection {
name: name.into(),
description: description.into(),
visible,
pinned,
draggable: false,
expanded,
id,
layout,
})
@@ -518,6 +521,7 @@ impl Diffable for LayoutGroup {
visible: current_visible,
pinned: current_pinned,
draggable: current_draggable,
expanded: current_expanded,
id: current_id,
layout: current_layout,
}),
@@ -527,6 +531,7 @@ impl Diffable for LayoutGroup {
visible: new_visible,
pinned: new_pinned,
draggable: new_draggable,
expanded: new_expanded,
id: new_id,
layout: new_layout,
}),
@@ -539,6 +544,7 @@ impl Diffable for LayoutGroup {
|| *current_visible != new_visible
|| *current_pinned != new_pinned
|| *current_draggable != new_draggable
|| *current_expanded != new_expanded
|| *current_id != new_id
{
// Update self to reflect new changes
@@ -547,6 +553,7 @@ impl Diffable for LayoutGroup {
*current_visible = new_visible;
*current_pinned = new_pinned;
*current_draggable = new_draggable;
*current_expanded = new_expanded;
*current_id = new_id;
current_layout.clone_from(&new_layout);
@@ -557,6 +564,7 @@ impl Diffable for LayoutGroup {
visible: new_visible,
pinned: new_pinned,
draggable: new_draggable,
expanded: new_expanded,
id: new_id,
layout: new_layout,
})