From 7c01c759aef565162e4d5f04527a8946857c56ff Mon Sep 17 00:00:00 2001 From: Gatis Paeglis Date: Thu, 1 Feb 2018 16:04:43 +0100 Subject: xcb: have a proper detection of key events originating from SendEvent This is a more correct fix for QTBUG-48795. The original fix was unnecessarily using non-XKB code path for updating state for all incoming key events. This would result in losing some valuable bits from xkb state. Task-number: QTBUG-48795 Change-Id: Ic4fb28b2d834272f1db2cbf5888cafb209707847 Reviewed-by: Allan Sandfeld Jensen --- src/plugins/platforms/xcb/qxcbkeyboard.h | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'src/plugins/platforms/xcb/qxcbkeyboard.h') diff --git a/src/plugins/platforms/xcb/qxcbkeyboard.h b/src/plugins/platforms/xcb/qxcbkeyboard.h index 736b32a2fd..a7ab88b9d9 100644 --- a/src/plugins/platforms/xcb/qxcbkeyboard.h +++ b/src/plugins/platforms/xcb/qxcbkeyboard.h @@ -72,7 +72,7 @@ public: // when XKEYBOARD not present on the X server void updateXKBMods(); - quint32 xkbModMask(quint16 state); + xkb_mod_mask_t xkbModMask(quint16 state); void updateXKBStateFromCore(quint16 state); #if QT_CONFIG(xinput2) void updateXKBStateFromXI(void *modInfo, void *groupInfo); @@ -84,7 +84,8 @@ public: #endif protected: - void handleKeyEvent(xcb_window_t sourceWindow, QEvent::Type type, xcb_keycode_t code, quint16 state, xcb_timestamp_t time); + void handleKeyEvent(xcb_window_t sourceWindow, QEvent::Type type, xcb_keycode_t code, + quint16 state, xcb_timestamp_t time, bool fromSendEvent); void resolveMaskConflicts(); QString lookupString(struct xkb_state *state, xcb_keycode_t code) const; @@ -106,8 +107,6 @@ protected: void checkForLatinLayout() const; private: - void updateXKBStateFromState(struct xkb_state *kb_state, quint16 state); - bool m_config = false; xcb_keycode_t m_autorepeat_code = 0; -- cgit v1.2.3