summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPier Luigi Fiorini <pierluigi.fiorini@gmail.com>2015-05-12 08:29:41 +0200
committerPier Luigi Fiorini <pierluigi.fiorini@gmail.com>2016-03-22 14:10:59 +0000
commit6341bf99c981aa3cfbb01589e499aa4b3f6dca21 (patch)
tree2445d811458dbee8d92c01def383dd13e8e086eb
parentff3900e52370a48f9aaa6894c974272273681093 (diff)
Send keyboard repeat information
Complete the API for keyboard rate and delay that was previously implemented sending the information to clients. Back then this wasn't possible for lack of Wayland >= 1.6 on the CI system. Change-Id: I95bab22bf4eea6549d2f8a762341c6485a24665c Reviewed-by: Johan Helsing <johan.helsing@theqtcompany.com> Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
-rw-r--r--src/client/qwaylandinputdevice.cpp4
-rw-r--r--src/compositor/compositor_api/qwaylandinput.cpp2
-rw-r--r--src/compositor/compositor_api/qwaylandkeyboard.cpp26
-rw-r--r--src/compositor/compositor_api/qwaylandkeyboard_p.h2
4 files changed, 19 insertions, 15 deletions
diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp
index 8f0e32f6d..e6d142396 100644
--- a/src/client/qwaylandinputdevice.cpp
+++ b/src/client/qwaylandinputdevice.cpp
@@ -173,10 +173,10 @@ QWaylandInputDevice::Touch::~Touch()
QWaylandInputDevice::QWaylandInputDevice(QWaylandDisplay *display, int version, uint32_t id)
: QObject()
- , QtWayland::wl_seat(display->wl_registry(), id, qMin(version, 3))
+ , QtWayland::wl_seat(display->wl_registry(), id, qMin(version, 4))
, mQDisplay(display)
, mDisplay(display->wl_display())
- , mVersion(qMin(version, 3))
+ , mVersion(qMin(version, 4))
, mCaps(0)
, mDataDevice(0)
, mKeyboard(0)
diff --git a/src/compositor/compositor_api/qwaylandinput.cpp b/src/compositor/compositor_api/qwaylandinput.cpp
index 01b69c2a9..becbf10ae 100644
--- a/src/compositor/compositor_api/qwaylandinput.cpp
+++ b/src/compositor/compositor_api/qwaylandinput.cpp
@@ -53,7 +53,7 @@ QT_BEGIN_NAMESPACE
QWaylandInputDevicePrivate::QWaylandInputDevicePrivate(QWaylandInputDevice *inputdevice, QWaylandCompositor *compositor)
: QObjectPrivate()
- , QtWaylandServer::wl_seat(compositor->display(), 3)
+ , QtWaylandServer::wl_seat(compositor->display(), 4)
, compositor(compositor)
, mouseFocus(Q_NULLPTR)
, capabilities()
diff --git a/src/compositor/compositor_api/qwaylandkeyboard.cpp b/src/compositor/compositor_api/qwaylandkeyboard.cpp
index 65d31fb33..a707d6470 100644
--- a/src/compositor/compositor_api/qwaylandkeyboard.cpp
+++ b/src/compositor/compositor_api/qwaylandkeyboard.cpp
@@ -146,6 +146,10 @@ void QWaylandKeyboardPrivate::focused(QWaylandSurface *surface)
void QWaylandKeyboardPrivate::keyboard_bind_resource(wl_keyboard::Resource *resource)
{
+ // Send repeat information
+ if (resource->version() >= WL_KEYBOARD_REPEAT_INFO_SINCE_VERSION)
+ send_repeat_info(resource->handle, repeatRate, repeatDelay);
+
#ifndef QT_NO_WAYLAND_XKB
if (xkb_context) {
send_keymap(resource->handle, WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1,
@@ -368,6 +372,14 @@ void QWaylandKeyboardPrivate::createXKBKeymap()
}
#endif
+void QWaylandKeyboardPrivate::sendRepeatInfo()
+{
+ Q_FOREACH (Resource *resource, resourceMap()) {
+ if (resource->version() >= WL_KEYBOARD_REPEAT_INFO_SINCE_VERSION)
+ send_repeat_info(resource->handle, repeatRate, repeatDelay);
+ }
+}
+
/*!
* \class QWaylandKeyboard
* \inmodule QtWaylandCompositor
@@ -477,12 +489,7 @@ void QWaylandKeyboard::setRepeatRate(quint32 rate)
if (d->repeatRate == rate)
return;
- // TODO: As of today 2015-11-25, we don't support Wayland 1.6
- // because of CI limitations. Once the protocol is updated
- // we can send keyboard repeat information to the client as
- // per wl_seat version 4
-
- qWarning("Setting QWaylandKeyboard::repeatRate has no effect until QtWaylandCompositor support wl_seat 4");
+ d->sendRepeatInfo();
d->repeatRate = rate;
Q_EMIT repeatRateChanged(rate);
@@ -507,12 +514,7 @@ void QWaylandKeyboard::setRepeatDelay(quint32 delay)
if (d->repeatDelay == delay)
return;
- // TODO: As of today 2015-11-25, we don't support Wayland 1.6
- // because of CI limitations. Once the protocol is updated
- // we can send keyboard repeat information to the client as
- // per wl_seat version 4
-
- qWarning("Setting QWaylandKeyboard::repeatDelay has no effect until QtWaylandCompositor support wl_seat 4");
+ d->sendRepeatInfo();
d->repeatDelay = delay;
Q_EMIT repeatDelayChanged(delay);
diff --git a/src/compositor/compositor_api/qwaylandkeyboard_p.h b/src/compositor/compositor_api/qwaylandkeyboard_p.h
index fe0b30dd7..49891d2ce 100644
--- a/src/compositor/compositor_api/qwaylandkeyboard_p.h
+++ b/src/compositor/compositor_api/qwaylandkeyboard_p.h
@@ -109,6 +109,8 @@ private:
#endif
static uint toWaylandXkbV1Key(const uint nativeScanCode);
+ void sendRepeatInfo();
+
QWaylandInputDevice *seat;
QWaylandSurface *focus;