diff options
| author | Vaxry <vaxry@vaxry.net> | 2024-04-21 01:47:38 +0100 |
|---|---|---|
| committer | Vaxry <vaxry@vaxry.net> | 2024-04-21 01:49:23 +0100 |
| commit | 30e4b404f2a30230f57c946b655c2365b3bf8e3d (patch) | |
| tree | 705e3143484dffed5d90df82d2c9ea26e02bedc2 /src/managers/input/InputManager.cpp | |
| parent | a141bbbea503ae7b320eba614a80ca2f4e5c1cba (diff) | |
cursor-shape: move to new impl
Diffstat (limited to 'src/managers/input/InputManager.cpp')
| -rw-r--r-- | src/managers/input/InputManager.cpp | 40 |
1 files changed, 23 insertions, 17 deletions
diff --git a/src/managers/input/InputManager.cpp b/src/managers/input/InputManager.cpp index 60e4270d..4a7fc11a 100644 --- a/src/managers/input/InputManager.cpp +++ b/src/managers/input/InputManager.cpp @@ -4,6 +4,29 @@ #include <ranges> #include "../../config/ConfigValue.hpp" #include "../../desktop/Window.hpp" +#include "../../protocols/CursorShape.hpp" + +CInputManager::CInputManager() { + m_sListeners.setCursorShape = PROTO::cursorShape->events.setShape.registerListener([this](std::any data) { + if (!cursorImageUnlocked()) + return; + + auto event = std::any_cast<CCursorShapeProtocol::SSetShapeEvent>(data); + + if (wl_resource_get_client(event.pMgr->resource()) != g_pCompositor->m_sSeat.seat->pointer_state.focused_client->client) + return; + + Debug::log(LOG, "cursorImage request: shape {} -> {}", (uint32_t)event.shape, event.shapeName); + + m_sCursorSurfaceInfo.wlSurface.unassign(); + m_sCursorSurfaceInfo.vHotspot = {}; + m_sCursorSurfaceInfo.name = event.shapeName; + m_sCursorSurfaceInfo.hidden = false; + + m_sCursorSurfaceInfo.inUse = true; + g_pHyprRenderer->setCursorFromName(m_sCursorSurfaceInfo.name); + }); +} CInputManager::~CInputManager() { m_vConstraints.clear(); @@ -509,23 +532,6 @@ void CInputManager::processMouseRequest(wlr_seat_pointer_request_set_cursor_even } } -void CInputManager::processMouseRequest(wlr_cursor_shape_manager_v1_request_set_shape_event* e) { - if (!cursorImageUnlocked()) - return; - - Debug::log(LOG, "cursorImage request: shape {}", (uint32_t)e->shape); - - if (e->seat_client == g_pCompositor->m_sSeat.seat->pointer_state.focused_client) { - m_sCursorSurfaceInfo.wlSurface.unassign(); - m_sCursorSurfaceInfo.vHotspot = {}; - m_sCursorSurfaceInfo.name = wlr_cursor_shape_v1_name(e->shape); - m_sCursorSurfaceInfo.hidden = false; - - m_sCursorSurfaceInfo.inUse = true; - g_pHyprRenderer->setCursorFromName(m_sCursorSurfaceInfo.name); - } -} - void CInputManager::restoreCursorIconToApp() { if (m_sCursorSurfaceInfo.inUse) return; |
