From 81cd526f923f4a9074bbfef59b4c7e9f3350c349 Mon Sep 17 00:00:00 2001 From: Virt <41426325+VirtCode@users.noreply.github.com> Date: Fri, 23 May 2025 23:41:35 +0200 Subject: [PATCH] cursor: fix screencopy cursor pos and duplicate shape with sw cursors (#10519) * cursor: account for hotspot with overridePos * cursor: don't draw cursor on screencopy if using sw anyways --- src/managers/PointerManager.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/managers/PointerManager.cpp b/src/managers/PointerManager.cpp index 7bd66c5d..f42fd686 100644 --- a/src/managers/PointerManager.cpp +++ b/src/managers/PointerManager.cpp @@ -603,10 +603,17 @@ void CPointerManager::renderSoftwareCursorsFor(PHLMONITOR pMonitor, const Time:: return; } + // don't render cursor if forced but we are already using sw cursors for the monitor + // otherwise we draw the cursor again for screencopy when using sw cursors + if (forceRender && (state->hardwareFailed || state->softwareLocks != 0)) + return; + auto box = state->box.copy(); if (overridePos.has_value()) { box.x = overridePos->x; box.y = overridePos->y; + + box.translate(-m_currentCursorImage.hotspot); } if (box.intersection(CBox{{}, {pMonitor->m_size}}).empty())