clipboard singleton

This commit is contained in:
Sebastian
2026-06-24 18:11:34 +02:00
parent b02eb7e1d4
commit a76954b6f7
4 changed files with 13 additions and 3 deletions
+7
View File
@@ -12,5 +12,12 @@ namespace VISEQ::APP {
clipboard.front().push_back(n); clipboard.front().push_back(n);
} }
} }
std::shared_ptr<Clipboard> Clipboard::get() {
if(!Clipboard::instance){
Clipboard::instance.reset(new Clipboard());
}
return Clipboard::instance;
}
} }
+3
View File
@@ -13,6 +13,9 @@ namespace VISEQ::APP {
GRAPH::NODES::VEC_SPTR_Node pasteNodes(); GRAPH::NODES::VEC_SPTR_Node pasteNodes();
void copyNodes(GRAPH::NODES::VEC_SPTR_Node selected_nodes); void copyNodes(GRAPH::NODES::VEC_SPTR_Node selected_nodes);
inline static std::shared_ptr<Clipboard> instance;
static std::shared_ptr<Clipboard> get();
}; };
} }
+2 -2
View File
@@ -13,11 +13,11 @@ namespace VISEQ::INTERACTION{
void InteractionManager::update(){ void InteractionManager::update(){
if(KEYS_DOWN.ctrl && IsKeyPressed(KEY_C)){ if(KEYS_DOWN.ctrl && IsKeyPressed(KEY_C)){
VEC_SPTR_Node selected_nodes = gm->getCopiesOfSelectedNodes(); VEC_SPTR_Node selected_nodes = gm->getCopiesOfSelectedNodes();
if(!selected_nodes.empty()) cb.copyNodes(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.pasteNodes(); 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);
} }
+1 -1
View File
@@ -62,7 +62,7 @@ namespace VISEQ::INTERACTION{
Vec2Df scale_start; Vec2Df scale_start;
std::shared_ptr<ScaleHandle> scale_handle = std::make_shared<ScaleHandle>(); std::shared_ptr<ScaleHandle> scale_handle = std::make_shared<ScaleHandle>();
VISEQ::APP::Clipboard cb; std::shared_ptr<APP::Clipboard> cb = APP::Clipboard::get();
void update(); void update();
void draw(); void draw();