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){
|
SPTR_Node copyNode(SPTR_Node n, Vec2D<float> position){
|
||||||
auto nc = std::make_shared<Node>(*n);
|
nodes.emplace_back(std::make_shared<Node>(*n));
|
||||||
nc->setPosition(position);
|
nodes.back()->setPosition(position);
|
||||||
nodes.push_back(nc);
|
return nodes.back();
|
||||||
return nc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<MidiNode> copyNode(std::shared_ptr<MidiNode> n, Vec2D<float> position){
|
std::shared_ptr<Node> copyNode(std::shared_ptr<MidiNode> n, Vec2D<float> position){
|
||||||
auto nc = std::make_shared<MidiNode>(*n);
|
nodes.emplace_back(std::make_shared<Node>(*n));
|
||||||
nc->setPosition(position);
|
nodes.back()->setPosition(position);
|
||||||
nodes.push_back(nc);
|
return nodes.back();
|
||||||
return nc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SPTR_Node addMidiNode(Vec2D<float> position){
|
SPTR_Node addMidiNode(Vec2D<float> position){
|
||||||
|
|||||||
+1
-1
@@ -295,7 +295,7 @@ int main(){
|
|||||||
}
|
}
|
||||||
case InteractionState::PASTE_SELECTED_NODES:
|
case InteractionState::PASTE_SELECTED_NODES:
|
||||||
{
|
{
|
||||||
for(auto &n: copied_nodes){
|
for(auto n: copied_nodes){
|
||||||
n->drag_offset = (n->position - copied_nodes.front()->position);
|
n->drag_offset = (n->position - copied_nodes.front()->position);
|
||||||
}
|
}
|
||||||
app.copyNodesAndConnections(copied_nodes, mouse_pos);
|
app.copyNodesAndConnections(copied_nodes, mouse_pos);
|
||||||
|
|||||||
+2
-2
@@ -56,9 +56,9 @@ class AppState{
|
|||||||
SPTR_Node old_node = n;
|
SPTR_Node old_node = n;
|
||||||
SPTR_Node new_node = gm.copyNode(n, position + n->drag_offset);
|
SPTR_Node new_node = gm.copyNode(n, position + n->drag_offset);
|
||||||
new_node->copied = false;
|
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->start == old_node) c->start = new_node;
|
||||||
if(c->end == old_node) c->end = new_node;
|
if(c->end == old_node) c->end = new_node;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user