소스 검색

minor improvements to pointer handling

vaxerski 3 년 전
부모
커밋
997f780f4c
2개의 변경된 파일과 9개의 추가작업 그리고 2개의 파일을 삭제
  1. 8 1
      src/WallpaperEngine/Input/CWaylandMouseInput.cpp
  2. 1 1
      src/WallpaperEngine/Render/Drivers/CWaylandOpenGLDriver.cpp

+ 8 - 1
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};
 }

+ 1 - 1
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) {