Skip to content

Commit 92d2be0

Browse files
committed
Fix TreeNodes in ObjectSelectionTree not remembering their open status
Previously, the id of each TreeNode was incremental which resulted in ids changing when nodes where moved.
1 parent 7004763 commit 92d2be0

File tree

4 files changed

+6
-3
lines changed

4 files changed

+6
-3
lines changed

include/core/Scene.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ struct InstancedNode {
3333
std::vector<std::unique_ptr<InstancedNode>> children;
3434
std::string name;
3535

36+
static unsigned int counter;
37+
unsigned int const id{counter++};
38+
3639
void traverse(std::function<void(glm::mat4, Node const&)>) const;
3740
void compute_transforms(glm::mat4 = glm::mat4{1.0f});
3841

include/ui/ObjectSelectionTree.hpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,4 @@ struct ObjectSelectionTree {
1010

1111
private:
1212
std::optional<ImRect> m_prev_rect;
13-
int m_imgui_treenode_id;
1413
};

src/core/Scene.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
#include <glm/ext/matrix_transform.hpp>
44

5+
unsigned int InstancedNode::counter = 0;
6+
57
glm::mat4 Transform::get_local_matrix() const
68
{
79
auto matrix = glm::mat4{1.0f};

src/ui/ObjectSelectionTree.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ void ObjectSelectionTree::traverse_nodes(InstancedNode& root)
4646
? ImGuiTreeNodeFlags_Selected
4747
: ImGuiTreeNodeFlags_None;
4848

49-
auto const treenode_label = child->name + "##node_" + std::to_string(m_imgui_treenode_id++);
49+
auto const treenode_label = child->name + "##node_" + std::to_string(child->id);
5050

5151
if (!child->children.empty()) {
5252
open = ImGui::TreeNodeEx(treenode_label.c_str(), flags_selected);
@@ -135,7 +135,6 @@ void ObjectSelectionTree::render()
135135
if (auto& scene = Project::get_current()->scene; scene) {
136136
if (ImGui::BeginTable("table0", 1)) {
137137
m_prev_rect = {};
138-
m_imgui_treenode_id = 0;
139138
traverse_nodes(*scene);
140139
}
141140
ImGui::EndTable();

0 commit comments

Comments
 (0)