diff --git a/src/wayland/inputmethod_v1_interface.cpp b/src/wayland/inputmethod_v1_interface.cpp index 899b659c2c..ddb90e4077 100644 --- a/src/wayland/inputmethod_v1_interface.cpp +++ b/src/wayland/inputmethod_v1_interface.cpp @@ -90,7 +90,7 @@ public: } void zwp_input_method_context_v1_modifiers(Resource *, uint32_t serial, uint32_t mods_depressed, uint32_t mods_latched, uint32_t mods_locked, uint32_t group) override { - Q_EMIT q->modifiers(serial, toQtModifiers(mods_depressed), toQtModifiers(mods_latched), toQtModifiers(mods_locked), group); + Q_EMIT q->modifiers(serial, mods_depressed, mods_latched, mods_locked, group); } void zwp_input_method_context_v1_language(Resource *, uint32_t serial, const QString &language) override { @@ -116,6 +116,10 @@ public: Qt::KeyboardModifiers toQtModifiers(uint32_t modifiers) { Qt::KeyboardModifiers ret = Qt::NoModifier; + // if we never got the modifier map from the input method, return empty modifier + if (mods.isEmpty()) { + return ret; + } for (int i = 0; modifiers >>= 1; ++i) { ret |= mods[i]; } diff --git a/src/wayland/inputmethod_v1_interface.h b/src/wayland/inputmethod_v1_interface.h index 126814dd5b..58c5e53482 100644 --- a/src/wayland/inputmethod_v1_interface.h +++ b/src/wayland/inputmethod_v1_interface.h @@ -84,7 +84,7 @@ Q_SIGNALS: void keysym(quint32 serial, quint32 time, quint32 sym, bool pressed, Qt::KeyboardModifiers modifiers); void grabKeyboard(quint32 keyboard); void key(quint32 serial, quint32 time, quint32 key, bool pressed); - void modifiers(quint32 serial, Qt::KeyboardModifiers mods_depressed, Qt::KeyboardModifiers mods_latched, Qt::KeyboardModifiers mods_locked, quint32 group); + void modifiers(quint32 serial, quint32 mods_depressed, quint32 mods_latched, quint32 mods_locked, quint32 group); void language(quint32 serial, const QString &language); void textDirection(quint32 serial, Qt::LayoutDirection direction);