More weak_ptr and clipboard shenanigans :)

This commit is contained in:
Sebastian
2024-12-03 11:08:40 +01:00
parent 0040956801
commit 1fde652495
2 changed files with 10 additions and 6 deletions
+8 -4
View File
@@ -9,14 +9,18 @@ namespace VISEQ::APP {
std::vector<GRAPH::NODES::VEC_SPTR_Node> clipboard; std::vector<GRAPH::NODES::VEC_SPTR_Node> clipboard;
GRAPH::NODES::VEC_SPTR_Node pullNodes(){ GRAPH::NODES::VEC_SPTR_Node pasteNodes(){
return clipboard.back(); return clipboard.back();
} }
void pushNodes(GRAPH::NODES::VEC_SPTR_Node selected_nodes){ void copyNodes(GRAPH::NODES::VEC_WPTR_Node selected_nodes){
clipboard.emplace_back(); clipboard.emplace_back();
std::ranges::copy(selected_nodes.begin(), selected_nodes.end(), std::back_inserter(clipboard.back())); for(auto n : selected_nodes){
std::ranges::for_each(selected_nodes.begin(), selected_nodes.end(), [](GRAPH::NODES::SPTR_Node n){n->selected = false;}); 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;});
} }
}; };
+2 -2
View File
@@ -67,11 +67,11 @@ namespace VISEQ::INTERACTION{
void update(){ void update(){
if(KEYS_DOWN.ctrl && IsKeyPressed(KEY_C)){ if(KEYS_DOWN.ctrl && IsKeyPressed(KEY_C)){
VEC_WPTR_Node selected_nodes = gm->getSelection(); 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)){ 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); if(!paste_nodes.empty()) gm->pasteNodesAndEdges(paste_nodes, MOD_MOUSE);
} }