diff options
author | vaxerski <[email protected]> | 2022-11-15 10:39:05 +0000 |
---|---|---|
committer | vaxerski <[email protected]> | 2022-11-15 10:39:05 +0000 |
commit | d5eafe192649b290fd587b41f772887058f7418b (patch) | |
tree | 3883098e3303cc3094ea7b66834d45a9c1dcaa2e | |
parent | e2da4ff257646ba892ba1c0b01f3f28999e22430 (diff) | |
download | Hyprland-d5eafe192649b290fd587b41f772887058f7418b.tar.gz Hyprland-d5eafe192649b290fd587b41f772887058f7418b.zip |
set cursor to hand1 when moving a window
-rw-r--r-- | src/layout/IHyprLayout.cpp | 4 | ||||
-rw-r--r-- | src/managers/input/InputManager.cpp | 18 | ||||
-rw-r--r-- | src/managers/input/InputManager.hpp | 6 |
3 files changed, 28 insertions, 0 deletions
diff --git a/src/layout/IHyprLayout.cpp b/src/layout/IHyprLayout.cpp index 8964e235..dfccacda 100644 --- a/src/layout/IHyprLayout.cpp +++ b/src/layout/IHyprLayout.cpp @@ -134,6 +134,8 @@ void IHyprLayout::onBeginDragWindow() { return; } + g_pInputManager->setCursorImageUntilUnset("hand1"); + DRAGGINGWINDOW->m_vRealPosition.setConfig(g_pConfigManager->getAnimationPropertyConfig("windowsMove")); DRAGGINGWINDOW->m_vRealSize.setConfig(g_pConfigManager->getAnimationPropertyConfig("windowsMove")); @@ -181,6 +183,8 @@ void IHyprLayout::onEndDragWindow() { if (!g_pCompositor->windowValidMapped(DRAGGINGWINDOW)) return; + g_pInputManager->unsetCursorImage(); + if (DRAGGINGWINDOW->m_bDraggingTiled) { DRAGGINGWINDOW->m_bIsFloating = false; g_pInputManager->refocus(); diff --git a/src/managers/input/InputManager.cpp b/src/managers/input/InputManager.cpp index 93e83035..c95fd910 100644 --- a/src/managers/input/InputManager.cpp +++ b/src/managers/input/InputManager.cpp @@ -339,6 +339,10 @@ void CInputManager::processMouseRequest(wlr_seat_pointer_request_set_cursor_even g_pHyprRenderer->m_bWindowRequestedCursorHide = false; } + if (m_bCursorImageOverriden) { + return; + } + if (m_ecbClickBehavior == CLICKMODE_KILL) { wlr_xcursor_manager_set_cursor_image(g_pCompositor->m_sWLRXCursorMgr, "crosshair", g_pCompositor->m_sWLRCursor); return; @@ -1184,3 +1188,17 @@ void CInputManager::newSwitch(wlr_input_device* pDevice) { void CInputManager::destroySwitch(SSwitchDevice* pDevice) { m_lSwitches.remove(*pDevice); } + +void CInputManager::setCursorImageUntilUnset(std::string name) { + wlr_xcursor_manager_set_cursor_image(g_pCompositor->m_sWLRXCursorMgr, name.c_str(), g_pCompositor->m_sWLRCursor); + m_bCursorImageOverriden = true; +} + +void CInputManager::unsetCursorImage() { + if (!m_bCursorImageOverriden) + return; + + m_bCursorImageOverriden = false; + if (!g_pHyprRenderer->m_bWindowRequestedCursorHide) + wlr_xcursor_manager_set_cursor_image(g_pCompositor->m_sWLRXCursorMgr, "left_ptr", g_pCompositor->m_sWLRCursor); +} diff --git a/src/managers/input/InputManager.hpp b/src/managers/input/InputManager.hpp index 4885277b..f570efcb 100644 --- a/src/managers/input/InputManager.hpp +++ b/src/managers/input/InputManager.hpp @@ -125,8 +125,14 @@ public: // for virtual keyboards: whether we should respect them as normal ones bool shouldIgnoreVirtualKeyboard(SKeyboard*); + // for special cursors that we choose + void setCursorImageUntilUnset(std::string); + void unsetCursorImage(); + private: + bool m_bCursorImageOverriden = false; + // for click behavior override eClickBehaviorMode m_ecbClickBehavior = CLICKMODE_DEFAULT; bool m_bEmptyFocusCursorSet = false; |