diff --git a/src/clipboard.h b/src/clipboard.h index 6084fb3..d728a49 100644 --- a/src/clipboard.h +++ b/src/clipboard.h @@ -9,14 +9,18 @@ namespace VISEQ::APP { std::vector clipboard; - GRAPH::NODES::VEC_SPTR_Node pullNodes(){ + GRAPH::NODES::VEC_SPTR_Node pasteNodes(){ return clipboard.back(); } - void pushNodes(GRAPH::NODES::VEC_SPTR_Node selected_nodes){ + void copyNodes(GRAPH::NODES::VEC_WPTR_Node selected_nodes){ clipboard.emplace_back(); - std::ranges::copy(selected_nodes.begin(), selected_nodes.end(), std::back_inserter(clipboard.back())); - std::ranges::for_each(selected_nodes.begin(), selected_nodes.end(), [](GRAPH::NODES::SPTR_Node n){n->selected = false;}); + for(auto n : selected_nodes){ + clipboard.back().push_back(n.lock()); + n.lock().deselect(); + } + //std::ranges::copy(selected_nodes.begin(), selected_nodes.end(), std::back_inserter(clipboard.back())); + //std::ranges::for_each(selected_nodes.begin(), selected_nodes.end(), [](GRAPH::NODES::SPTR_Node n){n->selected = false;}); } }; diff --git a/src/interaction-manager.h b/src/interaction-manager.h index d31db40..47d54b3 100644 --- a/src/interaction-manager.h +++ b/src/interaction-manager.h @@ -67,11 +67,11 @@ namespace VISEQ::INTERACTION{ void update(){ if(KEYS_DOWN.ctrl && IsKeyPressed(KEY_C)){ VEC_WPTR_Node selected_nodes = gm->getSelection(); - if(!selected_nodes.empty()) cb.pushNodes(selected_nodes); + if(!selected_nodes.empty()) cb.copyNodes(selected_nodes); } if(KEYS_DOWN.ctrl && IsKeyPressed(KEY_V)){ - VEC_SPTR_Node paste_nodes = cb.pullNodes(); + VEC_SPTR_Node paste_nodes = cb.pasteNodes(); if(!paste_nodes.empty()) gm->pasteNodesAndEdges(paste_nodes, MOD_MOUSE); }