From 41cad27806992fe756109dc204b4fdd4c88aa44c Mon Sep 17 00:00:00 2001 From: Sebastian Date: Fri, 1 Nov 2024 14:46:51 +0100 Subject: [PATCH] copy paste mysteries with ghost nodes and disappearing connections --- src/graph-manager.h | 16 +++++++--------- src/main.cpp | 2 +- src/state-manager.h | 4 ++-- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/graph-manager.h b/src/graph-manager.h index 935dd56..842f0b6 100644 --- a/src/graph-manager.h +++ b/src/graph-manager.h @@ -64,17 +64,15 @@ class GraphManager{ } SPTR_Node copyNode(SPTR_Node n, Vec2D position){ - auto nc = std::make_shared(*n); - nc->setPosition(position); - nodes.push_back(nc); - return nc; + nodes.emplace_back(std::make_shared(*n)); + nodes.back()->setPosition(position); + return nodes.back(); } - std::shared_ptr copyNode(std::shared_ptr n, Vec2D position){ - auto nc = std::make_shared(*n); - nc->setPosition(position); - nodes.push_back(nc); - return nc; + std::shared_ptr copyNode(std::shared_ptr n, Vec2D position){ + nodes.emplace_back(std::make_shared(*n)); + nodes.back()->setPosition(position); + return nodes.back(); } SPTR_Node addMidiNode(Vec2D position){ diff --git a/src/main.cpp b/src/main.cpp index 9c9961a..471b269 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -295,7 +295,7 @@ int main(){ } case InteractionState::PASTE_SELECTED_NODES: { - for(auto &n: copied_nodes){ + for(auto n: copied_nodes){ n->drag_offset = (n->position - copied_nodes.front()->position); } app.copyNodesAndConnections(copied_nodes, mouse_pos); diff --git a/src/state-manager.h b/src/state-manager.h index b9adef9..7fd0457 100644 --- a/src/state-manager.h +++ b/src/state-manager.h @@ -56,9 +56,9 @@ class AppState{ SPTR_Node old_node = n; SPTR_Node new_node = gm.copyNode(n, position + n->drag_offset); new_node->copied = false; - new_node->selected = true; + new_node->selected = false; - for(auto &c : copy_connections){ + for(auto c : copy_connections){ if(c->start == old_node) c->start = new_node; if(c->end == old_node) c->end = new_node; }