From a76954b6f75f2478ff62f4882068098800297374 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Wed, 24 Jun 2026 18:11:34 +0200 Subject: [PATCH] clipboard singleton --- src/clipboard.cpp | 7 +++++++ src/clipboard.h | 3 +++ src/interaction-manager.cpp | 4 ++-- src/interaction-manager.h | 2 +- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/clipboard.cpp b/src/clipboard.cpp index ab16089..dde79d5 100644 --- a/src/clipboard.cpp +++ b/src/clipboard.cpp @@ -12,5 +12,12 @@ namespace VISEQ::APP { clipboard.front().push_back(n); } } + + std::shared_ptr Clipboard::get() { + if(!Clipboard::instance){ + Clipboard::instance.reset(new Clipboard()); + } + return Clipboard::instance; + } } diff --git a/src/clipboard.h b/src/clipboard.h index 98a61e6..430cbf0 100644 --- a/src/clipboard.h +++ b/src/clipboard.h @@ -13,6 +13,9 @@ namespace VISEQ::APP { GRAPH::NODES::VEC_SPTR_Node pasteNodes(); void copyNodes(GRAPH::NODES::VEC_SPTR_Node selected_nodes); + + inline static std::shared_ptr instance; + static std::shared_ptr get(); }; } diff --git a/src/interaction-manager.cpp b/src/interaction-manager.cpp index 87ef5f7..9fd36a3 100644 --- a/src/interaction-manager.cpp +++ b/src/interaction-manager.cpp @@ -13,11 +13,11 @@ namespace VISEQ::INTERACTION{ void InteractionManager::update(){ if(KEYS_DOWN.ctrl && IsKeyPressed(KEY_C)){ 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)){ - VEC_SPTR_Node paste_nodes = cb.pasteNodes(); + VEC_SPTR_Node paste_nodes = cb->pasteNodes(); if(!paste_nodes.empty()) gm->pasteNodesAndEdges(paste_nodes, MOD_MOUSE); } diff --git a/src/interaction-manager.h b/src/interaction-manager.h index 35dcf50..d09735e 100644 --- a/src/interaction-manager.h +++ b/src/interaction-manager.h @@ -62,7 +62,7 @@ namespace VISEQ::INTERACTION{ Vec2Df scale_start; std::shared_ptr scale_handle = std::make_shared(); - VISEQ::APP::Clipboard cb; + std::shared_ptr cb = APP::Clipboard::get(); void update(); void draw();