More weak_ptr and clipboard shenanigans :)
This commit is contained in:
+8
-4
@@ -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;});
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user