UI: Store collapse state of node interface panel

Every redraw to node interface tree view was resetting the collapsed
state of panels. Added `NODE_INTERFACE_PANEL_IS_COLLAPSED` to store the
collapse/expand state.

Resolves #145153

Pull Request: https://projects.blender.org/blender/blender/pulls/145157
This commit is contained in:
Pratik Borhade
2025-08-31 05:18:59 +02:00
committed by Pratik Borhade
parent 0d3788ff00
commit abfb359b6a
2 changed files with 17 additions and 1 deletions

View File

@@ -223,6 +223,20 @@ class NodePanelViewItem : public BasicTreeViewItem {
return &panel_ == &other_item->panel_;
}
std::optional<bool> should_be_collapsed() const override
{
return panel_.flag & NODE_INTERFACE_PANEL_IS_COLLAPSED;
}
bool set_collapsed(const bool collapsed) override
{
if (!AbstractTreeViewItem::set_collapsed(collapsed)) {
return false;
}
SET_FLAG_FROM_TEST(panel_.flag, collapsed, NODE_INTERFACE_PANEL_IS_COLLAPSED);
return true;
}
bool supports_renaming() const override
{
return !ID_IS_LINKED(&nodetree_);

View File

@@ -149,8 +149,10 @@ typedef enum NodeTreeInterfacePanelFlag {
NODE_INTERFACE_PANEL_ALLOW_CHILD_PANELS_LEGACY = 1 << 1,
/* Allow adding sockets after panels. */
NODE_INTERFACE_PANEL_ALLOW_SOCKETS_AFTER_PANELS = 1 << 2,
/* Whether the panel is collapsed in the node group interface tree view. */
NODE_INTERFACE_PANEL_IS_COLLAPSED = 1 << 3,
} NodeTreeInterfacePanelFlag;
ENUM_OPERATORS(NodeTreeInterfacePanelFlag, NODE_INTERFACE_PANEL_DEFAULT_CLOSED);
ENUM_OPERATORS(NodeTreeInterfacePanelFlag, NODE_INTERFACE_PANEL_IS_COLLAPSED);
typedef enum NodeDefaultInputType {
NODE_DEFAULT_INPUT_VALUE = 0,