summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-06-26 13:43:32 +0200
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-06-26 13:43:32 +0200
commitf5c2dfc706776986ab9ff81a2512cc88f8aaef19 (patch)
treeab7d09f7a655acc704ce8b1bc8374e4514a0ead8 /src
parent4d09101e236c72ce7c34dc9c0fb87895f3b48146 (diff)
a bit of fixes to cursor hiding
Diffstat (limited to 'src')
-rw-r--r--src/events/Devices.cpp9
-rw-r--r--src/render/Renderer.cpp7
-rw-r--r--src/render/Renderer.hpp3
3 files changed, 18 insertions, 1 deletions
diff --git a/src/events/Devices.cpp b/src/events/Devices.cpp
index 7a47df77..df4501cf 100644
--- a/src/events/Devices.cpp
+++ b/src/events/Devices.cpp
@@ -56,7 +56,16 @@ void Events::listener_mouseAxis(wl_listener* listener, void* data) {
void Events::listener_requestMouse(wl_listener* listener, void* data) {
const auto EVENT = (wlr_seat_pointer_request_set_cursor_event*)data;
+
+ if (!g_pHyprRenderer->shouldRenderCursor())
+ return;
+ if (!EVENT->surface) {
+ g_pHyprRenderer->m_bWindowRequestedCursorHide = true;
+ } else {
+ g_pHyprRenderer->m_bWindowRequestedCursorHide = false;
+ }
+
if (EVENT->seat_client == g_pCompositor->m_sSeat.seat->pointer_state.focused_client)
wlr_cursor_set_surface(g_pCompositor->m_sWLRCursor, EVENT->surface, EVENT->hotspot_x, EVENT->hotspot_y);
}
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp
index affb49ff..f7328997 100644
--- a/src/render/Renderer.cpp
+++ b/src/render/Renderer.cpp
@@ -772,7 +772,8 @@ void CHyprRenderer::ensureCursorRenderingMode() {
} else if (*PCURSORTIMEOUT > PASSEDCURSORSECONDS && !m_bHasARenderedCursor) {
m_bHasARenderedCursor = true;
- wlr_xcursor_manager_set_cursor_image(g_pCompositor->m_sWLRXCursorMgr, "left_ptr", g_pCompositor->m_sWLRCursor);
+ if (!m_bWindowRequestedCursorHide)
+ wlr_xcursor_manager_set_cursor_image(g_pCompositor->m_sWLRXCursorMgr, "left_ptr", g_pCompositor->m_sWLRCursor);
Debug::log(LOG, "Showing the cursor (timeout)");
@@ -782,4 +783,8 @@ void CHyprRenderer::ensureCursorRenderingMode() {
} else {
m_bHasARenderedCursor = true;
}
+}
+
+bool CHyprRenderer::shouldRenderCursor() {
+ return m_bHasARenderedCursor;
} \ No newline at end of file
diff --git a/src/render/Renderer.hpp b/src/render/Renderer.hpp
index 73508623..43a241ed 100644
--- a/src/render/Renderer.hpp
+++ b/src/render/Renderer.hpp
@@ -32,6 +32,9 @@ public:
bool shouldRenderWindow(CWindow*, SMonitor*);
bool shouldRenderWindow(CWindow*);
void ensureCursorRenderingMode();
+ bool shouldRenderCursor();
+
+ bool m_bWindowRequestedCursorHide = false;
DAMAGETRACKINGMODES damageTrackingModeFromStr(const std::string&);