From: Rémi Bernon rbernon@codeweavers.com
XFilterEvent generates new ClientMessage events, used for XIM callbacks, as well as passes some KeyPress events through meant for XmbLookupString. Delaying the KeyPress events processing breaks the sequence on the next XFilterEvent call.
Based on a patch from Byeong-Sik Jeon bsjeon@hanmail.net. --- dlls/winex11.drv/event.c | 7 +++++++ 1 file changed, 7 insertions(+)
diff --git a/dlls/winex11.drv/event.c b/dlls/winex11.drv/event.c index 67edfa68b60..ef3adb2a053 100644 --- a/dlls/winex11.drv/event.c +++ b/dlls/winex11.drv/event.c @@ -367,6 +367,13 @@ static enum event_merge_action merge_events( XEvent *prev, XEvent *next ) break; }
+ switch (next->type) + { + case KeyPress: + case KeyRelease: + return default_action | MERGE_HANDLE_NEW | MERGE_FREE_NEW; + } + return default_action; }