Browse Source

Fixed bug 5397 - Fcitx input is truncated

sowfelicity

Split the long text input event into multiple shorten text input event.
Sam Lantinga 4 years ago
parent
commit
bfffa275ef
1 changed files with 11 additions and 2 deletions
  1. 11 2
      src/core/linux/SDL_fcitx.c

+ 11 - 2
src/core/linux/SDL_fcitx.c

@@ -144,8 +144,17 @@ DBus_MessageFilter(DBusConnection *conn, DBusMessage *msg, void *data)
         dbus->message_iter_init(msg, &iter);
         dbus->message_iter_get_basic(&iter, &text);
 
-        if (text)
-            SDL_SendKeyboardText(text);
+        if (text && *text) {
+            char buf[SDL_TEXTINPUTEVENT_TEXT_SIZE];
+            size_t text_bytes = SDL_strlen(text), i = 0;
+
+            while (i < text_bytes) {
+                size_t sz = SDL_utf8strlcpy(buf, text+i, sizeof(buf));
+                SDL_SendKeyboardText(buf);
+
+                i += sz;
+            }
+        }
 
         return DBUS_HANDLER_RESULT_HANDLED;
     }