diff --git a/src/app-manager.h b/src/app-manager.h index 473c922..095a5e8 100644 --- a/src/app-manager.h +++ b/src/app-manager.h @@ -19,7 +19,7 @@ namespace VISEQ::APP { class AppManager{ public: - AppManager() : sm(&gm, &mutex), mouse(std::make_shared(gm)), ui(&sm, &gm) {} + AppManager() : sm(&gm, &mutex), mouse(&gm), ui(&sm, &gm) {} std::mutex mutex; @@ -60,6 +60,7 @@ namespace VISEQ::APP { mutex.lock(); updateMidiPorts(); mutex.unlock(); + mouse.update(); if(KEYS_DOWN.ctrl && IsKeyPressed(KEY_C)){ VEC_SPTR_Node selected_nodes = gm.getSelection(); diff --git a/src/mouse.h b/src/mouse.h index 539cb29..9b6a320 100644 --- a/src/mouse.h +++ b/src/mouse.h @@ -1,16 +1,22 @@ #pragma once +#include "draggable.h" #include "graph-manager.h" #include namespace VISEQ::APP { class Mouse { public: - Mouse(std::shared_ptr gm) : gm(gm) {} + Mouse() {} + Mouse(GraphManager *gm) : gm(gm) {} - std::shared_ptr gm; + GraphManager *gm; void update(){ - auto hovering_nodes = gm->nodes | RANGE_FILTER([](SPTR_Node n) { return n->hovering();}); + auto hovering_nodes = gm->nodes | RANGE_FILTER([](SPTR_Node n) { return n->is_hovering;}) | std::ranges::to>>(); + + if(!hovering_nodes.empty()){ + hovering_nodes.front()->selected = true; + } } }; }