Improve WaylandSurface input interface a bit.
authorSamuel Rødal <samuel.rodal@nokia.com>
Tue, 15 Mar 2011 12:47:34 +0000 (13:47 +0100)
committerSamuel Rødal <samuel.rodal@nokia.com>
Tue, 15 Mar 2011 12:47:34 +0000 (13:47 +0100)
examples/qwidget-compositor/main.cpp
src/qt-compositor/private/wlsurface.cpp
src/qt-compositor/private/wlsurface.h
src/qt-compositor/waylandsurface.cpp
src/qt-compositor/waylandsurface.h

index 58c87c8..f02a7f6 100644 (file)
@@ -178,7 +178,7 @@ protected:
                 m_dragSurface = surface;
                 m_dragOffset = local;
             } else {
-                surface->sendMousePressEvent(local.x(), local.y(), e->button());
+                surface->sendMousePressEvent(local, e->button());
             }
         }
     }
@@ -193,7 +193,7 @@ protected:
         }
         QPoint local;
         if (WaylandSurface *surface = surfaceAt(e->pos(), &local))
-            surface->sendMouseMoveEvent(local.x(), local.y());
+            surface->sendMouseMoveEvent(local);
     }
 
     void mouseReleaseEvent(QMouseEvent *e) {
@@ -203,7 +203,7 @@ protected:
         }
         QPoint local;
         if (WaylandSurface *surface = surfaceAt(e->pos(), &local))
-            surface->sendMouseReleaseEvent(local.x(), local.y(), e->button());
+            surface->sendMouseReleaseEvent(local, e->button());
     }
 
     void keyPressEvent(QKeyEvent *event)
index aa00ce6..ebdb8df 100644 (file)
@@ -294,4 +294,13 @@ void Surface::sendKeyReleaseEvent(uint code)
     }
 }
 
+void Surface::setInputFocus()
+{
+    Q_D(Surface);
+    ulong time = d->compositor->currentTimeMsecs();
+
+    wl_input_device_set_keyboard_focus(d->compositor->defaultInputDevice(), base(), time);
+    wl_input_device_set_pointer_focus(d->compositor->defaultInputDevice(), base(), time, 0, 0, 0, 0);
+}
+
 }
index 1d312ea..4e9bb4e 100644 (file)
@@ -98,6 +98,7 @@ public:
     void sendKeyPressEvent(uint code);
     void sendKeyReleaseEvent(uint code);
 
+    void setInputFocus();
 
     WaylandSurface *handle() const;
 protected:
index 32d66c4..d9fdc06 100644 (file)
@@ -57,22 +57,22 @@ Wayland::Surface * WaylandSurface::handle() const
     return d->surface;
 }
 
-void WaylandSurface::sendMousePressEvent(int x, int y, Qt::MouseButton button)
+void WaylandSurface::sendMousePressEvent(const QPoint &pos, Qt::MouseButton button)
 {
     Q_D(WaylandSurface);
-    d->surface->sendMousePressEvent(x,y,button);
+    d->surface->sendMousePressEvent(pos.x(), pos.y(), button);
 }
 
-void WaylandSurface::sendMouseReleaseEvent(int x, int y, Qt::MouseButton button)
+void WaylandSurface::sendMouseReleaseEvent(const QPoint &pos, Qt::MouseButton button)
 {
     Q_D(WaylandSurface);
-    d->surface->sendMouseReleaseEvent(x,y,button);
+    d->surface->sendMouseReleaseEvent(pos.x(), pos.y(), button);
 }
 
-void WaylandSurface::sendMouseMoveEvent(int x, int y)
+void WaylandSurface::sendMouseMoveEvent(const QPoint &pos)
 {
     Q_D(WaylandSurface);
-    d->surface->sendMouseMoveEvent(x,y);
+    d->surface->sendMouseMoveEvent(pos.x(), pos.y());
 }
 
 void WaylandSurface::sendKeyPressEvent(uint code)
@@ -87,3 +87,9 @@ void WaylandSurface::sendKeyReleaseEvent(uint code)
     d->surface->sendKeyReleaseEvent(code);
 }
 
+void WaylandSurface::setInputFocus()
+{
+    Q_D(WaylandSurface);
+    d->surface->setInputFocus();
+}
+
index 5214a0f..b0cd1d1 100644 (file)
@@ -37,13 +37,15 @@ public:
     GLuint texture() const;
 #endif
 
-    void sendMousePressEvent(int x, int y, Qt::MouseButton button);
-    void sendMouseReleaseEvent(int x, int y, Qt::MouseButton button);
-    void sendMouseMoveEvent(int x, int y);
+    void sendMousePressEvent(const QPoint &pos, Qt::MouseButton button);
+    void sendMouseReleaseEvent(const QPoint &pos, Qt::MouseButton button);
+    void sendMouseMoveEvent(const QPoint &pos);
 
     void sendKeyPressEvent(uint code);
     void sendKeyReleaseEvent(uint code);
 
+    void setInputFocus();
+
     Wayland::Surface *handle() const;
 
 signals: