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.
This commit is contained in:
Sam Lantinga 2018-02-13 08:15:39 -08:00
parent 3b4c2fdf5d
commit f6366c09e2
1 changed files with 2 additions and 1 deletions

View File

@ -299,7 +299,7 @@ IBus_SetCapabilities(void *data, const char *name, const char *old_val,
caps |= IBUS_CAP_PREEDIT_TEXT; 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); 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->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_try_register_object_path(ibus_conn, input_ctx_path, &ibus_vtable, dbus, NULL);
dbus->connection_flush(ibus_conn); dbus->connection_flush(ibus_conn);
result = SDL_TRUE;
} }
SDL_IBus_SetFocus(SDL_GetKeyboardFocus() != NULL); SDL_IBus_SetFocus(SDL_GetKeyboardFocus() != NULL);