From 30e4b404f2a30230f57c946b655c2365b3bf8e3d Mon Sep 17 00:00:00 2001 From: Vaxry Date: Sun, 21 Apr 2024 01:47:38 +0100 Subject: cursor-shape: move to new impl --- src/managers/input/InputManager.cpp | 40 +++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 17 deletions(-) (limited to 'src/managers/input/InputManager.cpp') 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 #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(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; -- cgit v1.2.3