From a62215e016119461e5dd758a7f625b6e1b83d540 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Samuel=20R=C3=B8dal?= Date: Tue, 15 Mar 2011 13:47:34 +0100 Subject: [PATCH] Improve WaylandSurface input interface a bit. --- examples/qwidget-compositor/main.cpp | 6 +++--- src/qt-compositor/private/wlsurface.cpp | 9 +++++++++ src/qt-compositor/private/wlsurface.h | 1 + src/qt-compositor/waylandsurface.cpp | 18 ++++++++++++------ src/qt-compositor/waylandsurface.h | 8 +++++--- 5 files changed, 30 insertions(+), 12 deletions(-) diff --git a/examples/qwidget-compositor/main.cpp b/examples/qwidget-compositor/main.cpp index 58c87c8..f02a7f6 100644 --- a/examples/qwidget-compositor/main.cpp +++ b/examples/qwidget-compositor/main.cpp @@ -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) diff --git a/src/qt-compositor/private/wlsurface.cpp b/src/qt-compositor/private/wlsurface.cpp index aa00ce6..ebdb8df 100644 --- a/src/qt-compositor/private/wlsurface.cpp +++ b/src/qt-compositor/private/wlsurface.cpp @@ -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); +} + } diff --git a/src/qt-compositor/private/wlsurface.h b/src/qt-compositor/private/wlsurface.h index 1d312ea..4e9bb4e 100644 --- a/src/qt-compositor/private/wlsurface.h +++ b/src/qt-compositor/private/wlsurface.h @@ -98,6 +98,7 @@ public: void sendKeyPressEvent(uint code); void sendKeyReleaseEvent(uint code); + void setInputFocus(); WaylandSurface *handle() const; protected: diff --git a/src/qt-compositor/waylandsurface.cpp b/src/qt-compositor/waylandsurface.cpp index 32d66c4..d9fdc06 100644 --- a/src/qt-compositor/waylandsurface.cpp +++ b/src/qt-compositor/waylandsurface.cpp @@ -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(); +} + diff --git a/src/qt-compositor/waylandsurface.h b/src/qt-compositor/waylandsurface.h index 5214a0f..b0cd1d1 100644 --- a/src/qt-compositor/waylandsurface.h +++ b/src/qt-compositor/waylandsurface.h @@ -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: -- 2.7.4