aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorvaxerski <[email protected]>2022-11-15 10:39:05 +0000
committervaxerski <[email protected]>2022-11-15 10:39:05 +0000
commitd5eafe192649b290fd587b41f772887058f7418b (patch)
tree3883098e3303cc3094ea7b66834d45a9c1dcaa2e
parente2da4ff257646ba892ba1c0b01f3f28999e22430 (diff)
downloadHyprland-d5eafe192649b290fd587b41f772887058f7418b.tar.gz
Hyprland-d5eafe192649b290fd587b41f772887058f7418b.zip
set cursor to hand1 when moving a window
-rw-r--r--src/layout/IHyprLayout.cpp4
-rw-r--r--src/managers/input/InputManager.cpp18
-rw-r--r--src/managers/input/InputManager.hpp6
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;