Commit baadd546866f45934ac568fd3119b25b83ca4fb6

Sam Lantinga 2016-11-02T02:56:54

Fixed text input events with UIM Alex Baines I realized overnight that my patch probably broke text input events with UIM, and I confirmed that it does. Can't believe I overlooked that... I've been making stupid mistakes in these patches recently, sorry. Anyway, *this* one seems to fix it properly. Knowing my luck it probably breaks something else.

diff --git a/src/video/x11/SDL_x11events.c b/src/video/x11/SDL_x11events.c
index b345c93..8d7e997 100644
--- a/src/video/x11/SDL_x11events.c
+++ b/src/video/x11/SDL_x11events.c
@@ -585,9 +585,6 @@ X11_DispatchEvent(_THIS)
 #endif
         }
         return;
-    } else if (orig_keycode == videodata->filter_code && xevent.xkey.time == videodata->filter_time) {
-        /* This is a duplicate event, resent by an IME - skip it. */
-        return;
     }
 
     /* Send a SDL_SYSWMEVENT if the application wants them */
@@ -802,7 +799,10 @@ X11_DispatchEvent(_THIS)
             }
 #endif
             if (!handled_by_ime) {
-                SDL_SendKeyboardKey(SDL_PRESSED, videodata->key_layout[keycode]);
+                /* Don't send the key if it looks like a duplicate of a filtered key sent by an IME */
+                if (xevent.xkey.keycode != videodata->filter_code || xevent.xkey.time != videodata->filter_time) {
+                    SDL_SendKeyboardKey(SDL_PRESSED, videodata->key_layout[keycode]);
+                }
                 if(*text) {
                     SDL_SendKeyboardText(text);
                 }