Просмотр исходного кода

Qt: Implemented EmuWindow touchpad support.

bunnei 11 лет назад
Родитель
Сommit
f213000cc4
2 измененных файлов с 29 добавлено и 0 удалено
  1. 25 0
      src/citra_qt/bootmanager.cpp
  2. 4 0
      src/citra_qt/bootmanager.h

+ 25 - 0
src/citra_qt/bootmanager.cpp

@@ -278,6 +278,31 @@ void GRenderWindow::keyReleaseEvent(QKeyEvent* event)
     Service::HID::PadUpdateComplete();
 }
 
+void GRenderWindow::mousePressEvent(QMouseEvent *event)
+{
+    if (event->button() == Qt::LeftButton)  {
+        auto pos = event->pos();
+        EmuWindow::TouchPressed(GetFramebufferLayout(), static_cast<u16>(pos.x()),
+            static_cast<u16>(pos.y()));
+    }
+}
+
+void GRenderWindow::mouseMoveEvent(QMouseEvent *event)
+{
+    auto pos = event->pos();
+    EmuWindow::TouchMoved(GetFramebufferLayout(), static_cast<u16>(pos.x()),
+        static_cast<u16>(pos.y()));
+}
+
+void GRenderWindow::mouseReleaseEvent(QMouseEvent *event)
+{
+    if (event->button() == Qt::LeftButton)  {
+        auto pos = event->pos();
+        EmuWindow::TouchReleased(GetFramebufferLayout(), static_cast<u16>(pos.x()),
+            static_cast<u16>(pos.y()));
+    }
+}
+
 void GRenderWindow::ReloadSetKeymaps()
 {
     KeyMap::SetKeyMapping({Settings::values.pad_a_key,      keyboard_id}, Service::HID::PAD_A);

+ 4 - 0
src/citra_qt/bootmanager.h

@@ -121,6 +121,10 @@ public:
     void keyPressEvent(QKeyEvent* event) override;
     void keyReleaseEvent(QKeyEvent* event) override;
 
+    void mousePressEvent(QMouseEvent *event) override;
+    void mouseMoveEvent(QMouseEvent *event) override;
+    void mouseReleaseEvent(QMouseEvent *event) override;
+
     void ReloadSetKeymaps() override;
 
     void OnClientAreaResized(unsigned width, unsigned height);