summaryrefslogtreecommitdiff
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)
downloadqtwayland-6341bf99c981aa3cfbb01589e499aa4b3f6dca21.tar.gz
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 8f0e32f6..e6d14239 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 01b69c2a..becbf10a 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 65d31fb3..a707d647 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 fe0b30dd..49891d2c 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;