path: root/src/plugins/platforminputcontexts/ibus
diff options
authorGatis Paeglis <>2018-11-05 14:26:24 +0100
committerGatis Paeglis <>2019-01-04 20:11:52 +0000
commitfe63900dc9891dd355ca1f10d6c7e5fd1516f5d5 (patch)
treeca2dde2d2e297b629843c7f79098edc9df46826f /src/plugins/platforminputcontexts/ibus
parent03039979b5a643f9def38a73e19835bb69384202 (diff)
xcb: rework focus-in peeker so we can drop PeekFunc API
The API for registering temporary peek function was added ~7 years ago by 78264f333eb7c262380714ed6517562266f11a03. It was never been used for anything else. The solution from 78264f333 also did not work very well on KDE desktop, quoting Martin Flöser: "In case the keyboard gets grabbed by another process and immediately ungrabbed the active Qt application window receives a FocusOut and a FocusIn event. FocusOut on the grab of keyboard, FocusIn on the ungrab. Qt registers a peek function for checking the FocusIn event, but the timespan is too short: the new event is not yet queued. This causes a QEvent::WindowDeactivate being emitted, followed directly by a QEvent::WindowActivate. This has quite some side effects, for example rendering flickering in the GUI (switching to inactive/active in short time frame), hooks on WindowDeactivate being run, etc. Real world examples for such short keyboard grabs are global shortcut listener applications like kglobalaccel5. It has e.g. a passive key grab on the mute key, which is then turned into an active grab when the key is grabbed. Kglobalaccel5 immediately ungrabs the keyboard and flushes the connection if it gets a key event, but it of course causes the sequence of FocusOut and FocusIn events in the active Qt window." Reworked the code to use QTimer instead, which is more elegant solution, because it does not rely on race-conditions, but uses a concreate time to wait instead. Also the need to write focusInPeeker() caused us to duplicate event handlers that were present already elsewhere. Change-Id: I647e52fb2634fdf55a640e19b13265c356f96c95 Reviewed-by: Mikhail Svetkin <> Reviewed-by: Gatis Paeglis <>
Diffstat (limited to 'src/plugins/platforminputcontexts/ibus')
0 files changed, 0 insertions, 0 deletions