From f6366c09e29e1c568c0c0a0d3a20b2c4a13e8446 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Tue, 13 Feb 2018 08:15:39 -0800 Subject: [PATCH] Fixed bug 3920 - IBus not work with SDL 2.0.7 cjacker After updating from 2.0.5 to 2.0.7, Ibus not work anymore(fcitx still works). Compare with 2.0.5, there are two issues in SDL_ibus.c. 1, SetupConnection always return SDL_FALSE in 2.0.7. 2, 'SetCapabilities' method should be called on 'ibus_conn'. Patch attached. --- src/core/linux/SDL_ibus.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/linux/SDL_ibus.c b/src/core/linux/SDL_ibus.c index 58d865f2b..a9c319716 100644 --- a/src/core/linux/SDL_ibus.c +++ b/src/core/linux/SDL_ibus.c @@ -299,7 +299,7 @@ IBus_SetCapabilities(void *data, const char *name, const char *old_val, caps |= IBUS_CAP_PREEDIT_TEXT; } - SDL_DBus_CallVoidMethod(IBUS_SERVICE, input_ctx_path, IBUS_INPUT_INTERFACE, "SetCapabilities", + SDL_DBus_CallVoidMethodOnConnection(ibus_conn, IBUS_SERVICE, input_ctx_path, IBUS_INPUT_INTERFACE, "SetCapabilities", DBUS_TYPE_UINT32, &caps, DBUS_TYPE_INVALID); } } @@ -341,6 +341,7 @@ IBus_SetupConnection(SDL_DBusContext *dbus, const char* addr) dbus->bus_add_match(ibus_conn, "type='signal',interface='org.freedesktop.IBus.InputContext'", NULL); dbus->connection_try_register_object_path(ibus_conn, input_ctx_path, &ibus_vtable, dbus, NULL); dbus->connection_flush(ibus_conn); + result = SDL_TRUE; } SDL_IBus_SetFocus(SDL_GetKeyboardFocus() != NULL);