summaryrefslogtreecommitdiffstats
path: root/src/compositor
diff options
context:
space:
mode:
Diffstat (limited to 'src/compositor')
-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
3 files changed, 17 insertions, 13 deletions
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;