diff options
Diffstat (limited to 'src/compositor')
-rw-r--r-- | src/compositor/compositor_api/qwaylandinput.cpp | 2 | ||||
-rw-r--r-- | src/compositor/compositor_api/qwaylandkeyboard.cpp | 26 | ||||
-rw-r--r-- | src/compositor/compositor_api/qwaylandkeyboard_p.h | 2 |
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; |