Ver código fonte

Qt: Fix mouse scalling

german77 3 anos atrás
pai
commit
57aaf00a0c
2 arquivos alterados com 8 adições e 18 exclusões
  1. 8 16
      src/yuzu/bootmanager.cpp
  2. 0 2
      src/yuzu/bootmanager.h

+ 8 - 16
src/yuzu/bootmanager.cpp

@@ -401,12 +401,6 @@ qreal GRenderWindow::windowPixelRatio() const {
     return devicePixelRatioF();
 }
 
-std::pair<u32, u32> GRenderWindow::ScaleTouch(const QPointF& pos) const {
-    const qreal pixel_ratio = windowPixelRatio();
-    return {static_cast<u32>(std::max(std::round(pos.x() * pixel_ratio), qreal{0.0})),
-            static_cast<u32>(std::max(std::round(pos.y() * pixel_ratio), qreal{0.0}))};
-}
-
 void GRenderWindow::closeEvent(QCloseEvent* event) {
     emit Closed();
     QWidget::closeEvent(event);
@@ -649,10 +643,9 @@ void GRenderWindow::mousePressEvent(QMouseEvent* event) {
     // Qt sometimes returns the parent coordinates. To avoid this we read the global mouse
     // coordinates and map them to the current render area
     const auto pos = mapFromGlobal(QCursor::pos());
-    const auto [x, y] = ScaleTouch(pos);
-    const auto [touch_x, touch_y] = MapToTouchScreen(x, y);
+    const auto [touch_x, touch_y] = MapToTouchScreen(pos.x(), pos.y());
     const auto button = QtButtonToMouseButton(event->button());
-    input_subsystem->GetMouse()->PressButton(x, y, touch_x, touch_y, button);
+    input_subsystem->GetMouse()->PressButton(pos.x(), pos.y(), touch_x, touch_y, button);
 
     emit MouseActivity();
 }
@@ -665,11 +658,10 @@ void GRenderWindow::mouseMoveEvent(QMouseEvent* event) {
     // Qt sometimes returns the parent coordinates. To avoid this we read the global mouse
     // coordinates and map them to the current render area
     const auto pos = mapFromGlobal(QCursor::pos());
-    const auto [x, y] = ScaleTouch(pos);
-    const auto [touch_x, touch_y] = MapToTouchScreen(x, y);
+    const auto [touch_x, touch_y] = MapToTouchScreen(pos.x(), pos.y());
     const int center_x = width() / 2;
     const int center_y = height() / 2;
-    input_subsystem->GetMouse()->MouseMove(x, y, touch_x, touch_y, center_x, center_y);
+    input_subsystem->GetMouse()->MouseMove(pos.x(), pos.y(), touch_x, touch_y, center_x, center_y);
 
     if (Settings::values.mouse_panning && !Settings::values.mouse_enabled) {
         QCursor::setPos(mapToGlobal(QPoint{center_x, center_y}));
@@ -697,8 +689,8 @@ void GRenderWindow::wheelEvent(QWheelEvent* event) {
 void GRenderWindow::TouchBeginEvent(const QTouchEvent* event) {
     QList<QTouchEvent::TouchPoint> touch_points = event->touchPoints();
     for (const auto& touch_point : touch_points) {
-        const auto [x, y] = ScaleTouch(touch_point.pos());
-        const auto [touch_x, touch_y] = MapToTouchScreen(x, y);
+        const auto pos = touch_point.pos();
+        const auto [touch_x, touch_y] = MapToTouchScreen(pos.x(), pos.y());
         input_subsystem->GetTouchScreen()->TouchPressed(touch_x, touch_y, touch_point.id());
     }
 }
@@ -707,8 +699,8 @@ void GRenderWindow::TouchUpdateEvent(const QTouchEvent* event) {
     QList<QTouchEvent::TouchPoint> touch_points = event->touchPoints();
     input_subsystem->GetTouchScreen()->ClearActiveFlag();
     for (const auto& touch_point : touch_points) {
-        const auto [x, y] = ScaleTouch(touch_point.pos());
-        const auto [touch_x, touch_y] = MapToTouchScreen(x, y);
+        const auto pos = touch_point.pos();
+        const auto [touch_x, touch_y] = MapToTouchScreen(pos.x(), pos.y());
         input_subsystem->GetTouchScreen()->TouchMoved(touch_x, touch_y, touch_point.id());
     }
     input_subsystem->GetTouchScreen()->ReleaseInactiveTouch();

+ 0 - 2
src/yuzu/bootmanager.h

@@ -184,8 +184,6 @@ public:
 
     void CaptureScreenshot(const QString& screenshot_path);
 
-    std::pair<u32, u32> ScaleTouch(const QPointF& pos) const;
-
     /**
      * Instructs the window to re-launch the application using the specified program_index.
      * @param program_index Specifies the index within the application of the program to launch.