diff --git a/src/WallpaperEngine/Input/CWaylandMouseInput.cpp b/src/WallpaperEngine/Input/CWaylandMouseInput.cpp index 85a520c..7e1011d 100644 --- a/src/WallpaperEngine/Input/CWaylandMouseInput.cpp +++ b/src/WallpaperEngine/Input/CWaylandMouseInput.cpp @@ -16,5 +16,12 @@ glm::dvec2 CWaylandMouseInput::position() const { if (!waylandDriver || !waylandDriver->lastLSInFocus) return {0, 0}; - return waylandDriver->lastLSInFocus->mousePos; + for (auto& o : waylandDriver->m_outputs) { + if (!o->rendering) + continue; + + return o->layerSurface.get() == waylandDriver->lastLSInFocus ? o->layerSurface->mousePos : glm::dvec2{-1337, -1337}; + } + + return {0, 0}; } \ No newline at end of file diff --git a/src/WallpaperEngine/Render/Drivers/CWaylandOpenGLDriver.cpp b/src/WallpaperEngine/Render/Drivers/CWaylandOpenGLDriver.cpp index 578a0ac..13369d9 100644 --- a/src/WallpaperEngine/Render/Drivers/CWaylandOpenGLDriver.cpp +++ b/src/WallpaperEngine/Render/Drivers/CWaylandOpenGLDriver.cpp @@ -46,7 +46,7 @@ static void handlePointerMotion(void* data, struct wl_pointer* wl_pointer, uint3 if (!PDRIVER->lastLSInFocus) return; - PDRIVER->lastLSInFocus->mousePos = {x, y}; + PDRIVER->lastLSInFocus->mousePos = {x * PDRIVER->lastLSInFocus->output->scale, y * PDRIVER->lastLSInFocus->output->scale}; } static void handlePointerButton(void* data, struct wl_pointer* wl_pointer, uint32_t serial, uint32_t time, uint32_t button, uint32_t button_state) {