copy paste mysteries with ghost nodes and disappearing connections
This commit is contained in:
+7
-9
@@ -64,17 +64,15 @@ class GraphManager{
|
||||
}
|
||||
|
||||
SPTR_Node copyNode(SPTR_Node n, Vec2D<float> position){
|
||||
auto nc = std::make_shared<Node>(*n);
|
||||
nc->setPosition(position);
|
||||
nodes.push_back(nc);
|
||||
return nc;
|
||||
nodes.emplace_back(std::make_shared<Node>(*n));
|
||||
nodes.back()->setPosition(position);
|
||||
return nodes.back();
|
||||
}
|
||||
|
||||
std::shared_ptr<MidiNode> copyNode(std::shared_ptr<MidiNode> n, Vec2D<float> position){
|
||||
auto nc = std::make_shared<MidiNode>(*n);
|
||||
nc->setPosition(position);
|
||||
nodes.push_back(nc);
|
||||
return nc;
|
||||
std::shared_ptr<Node> copyNode(std::shared_ptr<MidiNode> n, Vec2D<float> position){
|
||||
nodes.emplace_back(std::make_shared<Node>(*n));
|
||||
nodes.back()->setPosition(position);
|
||||
return nodes.back();
|
||||
}
|
||||
|
||||
SPTR_Node addMidiNode(Vec2D<float> position){
|
||||
|
||||
+1
-1
@@ -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);
|
||||
|
||||
+2
-2
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user