diff options
| author | Vaxry <43317083+vaxerski@users.noreply.github.com> | 2025-10-31 00:14:08 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-10-31 00:14:08 +0000 |
| commit | 5e6cec962c780956177e56355ffc1d64cc5f83ca (patch) | |
| tree | 9277452bb7202094e8a2a2cac3acea7aaa964772 /src/layout | |
| parent | 6ade4d58cab67e18aa758ef664e36421cab4d8b2 (diff) | |
cursor: refactor override handling (#12166)
much cleaner and more reliable. Should fix https://github.com/hyprwm/Hyprland/issues/12088
Diffstat (limited to 'src/layout')
| -rw-r--r-- | src/layout/IHyprLayout.cpp | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/src/layout/IHyprLayout.cpp b/src/layout/IHyprLayout.cpp index 4ae41d57..38868424 100644 --- a/src/layout/IHyprLayout.cpp +++ b/src/layout/IHyprLayout.cpp @@ -12,6 +12,7 @@ #include "../managers/LayoutManager.hpp" #include "../managers/EventManager.hpp" #include "../managers/HookSystemManager.hpp" +#include "../managers/cursor/CursorShapeOverrideController.hpp" void IHyprLayout::onWindowCreated(PHLWINDOW pWindow, eDirection direction) { CBox desiredGeometry = g_pXWaylandManager->getGeometryForWindow(pWindow); @@ -243,7 +244,7 @@ void IHyprLayout::onBeginDragWindow() { // Window will be floating. Let's check if it's valid. It should be, but I don't like crashing. if (!validMapped(DRAGGINGWINDOW)) { Debug::log(ERR, "Dragging attempted on an invalid window!"); - g_pKeybindManager->changeMouseBindMode(MBIND_INVALID); + CKeybindManager::changeMouseBindMode(MBIND_INVALID); return; } @@ -259,41 +260,41 @@ void IHyprLayout::onBeginDragWindow() { switch (*RESIZECORNER) { case 1: m_grabbedCorner = CORNER_TOPLEFT; - g_pInputManager->setCursorImageUntilUnset("nw-resize"); + Cursor::overrideController->setOverride("nw-resize", Cursor::CURSOR_OVERRIDE_SPECIAL_ACTION); break; case 2: m_grabbedCorner = CORNER_TOPRIGHT; - g_pInputManager->setCursorImageUntilUnset("ne-resize"); + Cursor::overrideController->setOverride("ne-resize", Cursor::CURSOR_OVERRIDE_SPECIAL_ACTION); break; case 3: m_grabbedCorner = CORNER_BOTTOMRIGHT; - g_pInputManager->setCursorImageUntilUnset("se-resize"); + Cursor::overrideController->setOverride("se-resize", Cursor::CURSOR_OVERRIDE_SPECIAL_ACTION); break; case 4: m_grabbedCorner = CORNER_BOTTOMLEFT; - g_pInputManager->setCursorImageUntilUnset("sw-resize"); + Cursor::overrideController->setOverride("sw-resize", Cursor::CURSOR_OVERRIDE_SPECIAL_ACTION); break; } } else if (m_beginDragXY.x < m_beginDragPositionXY.x + m_beginDragSizeXY.x / 2.0) { if (m_beginDragXY.y < m_beginDragPositionXY.y + m_beginDragSizeXY.y / 2.0) { m_grabbedCorner = CORNER_TOPLEFT; - g_pInputManager->setCursorImageUntilUnset("nw-resize"); + Cursor::overrideController->setOverride("nw-resize", Cursor::CURSOR_OVERRIDE_SPECIAL_ACTION); } else { m_grabbedCorner = CORNER_BOTTOMLEFT; - g_pInputManager->setCursorImageUntilUnset("sw-resize"); + Cursor::overrideController->setOverride("sw-resize", Cursor::CURSOR_OVERRIDE_SPECIAL_ACTION); } } else { if (m_beginDragXY.y < m_beginDragPositionXY.y + m_beginDragSizeXY.y / 2.0) { m_grabbedCorner = CORNER_TOPRIGHT; - g_pInputManager->setCursorImageUntilUnset("ne-resize"); + Cursor::overrideController->setOverride("ne-resize", Cursor::CURSOR_OVERRIDE_SPECIAL_ACTION); } else { m_grabbedCorner = CORNER_BOTTOMRIGHT; - g_pInputManager->setCursorImageUntilUnset("se-resize"); + Cursor::overrideController->setOverride("se-resize", Cursor::CURSOR_OVERRIDE_SPECIAL_ACTION); } } if (g_pInputManager->m_dragMode != MBIND_RESIZE && g_pInputManager->m_dragMode != MBIND_RESIZE_FORCE_RATIO && g_pInputManager->m_dragMode != MBIND_RESIZE_BLOCK_RATIO) - g_pInputManager->setCursorImageUntilUnset("grabbing"); + Cursor::overrideController->setOverride("grabbing", Cursor::CURSOR_OVERRIDE_SPECIAL_ACTION); g_pHyprRenderer->damageWindow(DRAGGINGWINDOW); @@ -310,13 +311,13 @@ void IHyprLayout::onEndDragWindow() { if (!validMapped(DRAGGINGWINDOW)) { if (DRAGGINGWINDOW) { - g_pInputManager->unsetCursorImage(); + Cursor::overrideController->unsetOverride(Cursor::CURSOR_OVERRIDE_SPECIAL_ACTION); g_pInputManager->m_currentlyDraggedWindow.reset(); } return; } - g_pInputManager->unsetCursorImage(); + Cursor::overrideController->unsetOverride(Cursor::CURSOR_OVERRIDE_SPECIAL_ACTION); g_pInputManager->m_currentlyDraggedWindow.reset(); g_pInputManager->m_wasDraggingWindow = true; |
