diff options
author | Gatis Paeglis <gatis.paeglis@qt.io> | 2018-02-08 13:01:25 +0100 |
---|---|---|
committer | Gatis Paeglis <gatis.paeglis@qt.io> | 2018-02-25 13:18:41 +0000 |
commit | 669070c404b9cbeac9ad8050600ec6b90bdcb756 (patch) | |
tree | 4ba7f2887d4652a6fb042d1df9b68368d927b205 /src/plugins/platforms/xcb/qxcbkeyboard.h | |
parent | 1a341d8333c95708759706aa78fbc7828d837bf2 (diff) |
xcb: simplify handling of keymap updates
The old code was somewhat too scattered.
Change-Id: Ib0445c66653f757ccac28778f34f4bcb5df49a70
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Diffstat (limited to 'src/plugins/platforms/xcb/qxcbkeyboard.h')
-rw-r--r-- | src/plugins/platforms/xcb/qxcbkeyboard.h | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/plugins/platforms/xcb/qxcbkeyboard.h b/src/plugins/platforms/xcb/qxcbkeyboard.h index eab917e5b4..c131d69267 100644 --- a/src/plugins/platforms/xcb/qxcbkeyboard.h +++ b/src/plugins/platforms/xcb/qxcbkeyboard.h @@ -64,9 +64,9 @@ public: void handleKeyPressEvent(const xcb_key_press_event_t *event); void handleKeyReleaseEvent(const xcb_key_release_event_t *event); - void handleMappingNotifyEvent(const void *event); Qt::KeyboardModifiers translateModifiers(int s) const; + void updateKeymap(xcb_mapping_notify_event_t *event); void updateKeymap(); QList<int> possibleKeys(const QKeyEvent *e) const; @@ -94,11 +94,11 @@ protected: int keysymToQtKey(xcb_keysym_t keysym, Qt::KeyboardModifiers modifiers, struct xkb_state *state, xcb_keycode_t code) const; - struct xkb_keymap *keymapFromCore(); + typedef QMap<xcb_keysym_t, int> KeysymModifierMap; + struct xkb_keymap *keymapFromCore(const KeysymModifierMap &keysymMods); // when XKEYBOARD not present on the X server - void updateModifiers(); - typedef QMap<xcb_keysym_t, int> KeysymModifierMap; + void updateModifiers(const KeysymModifierMap &keysymMods); KeysymModifierMap keysymsToModifiers(); // when XKEYBOARD is present on the X server void updateVModMapping(); @@ -122,7 +122,7 @@ private: _mod_masks rmod_masks; // when XKEYBOARD not present on the X server - xcb_key_symbols_t *m_key_symbols; + xcb_key_symbols_t *m_key_symbols = nullptr; struct _xkb_mods { xkb_mod_index_t shift; xkb_mod_index_t lock; |