From 059e8bbc75a85f04326e6eb34b79f4a4c5cb42d5 Mon Sep 17 00:00:00 2001 From: Hojun-Cho Date: Mon, 17 Aug 2026 18:13:58 +0900 Subject: [PATCH] ibus: SetCursorLocationRelative is not a caret A GTK client on the Wayland backend sends this where an X11 one sends SetCursorLocation, and ictab did not list it, so libdbus answered UnknownMethod. Accept it and throw it away: the absolute translation sits inside GDK_IS_X11_DISPLAY, so the coordinates are surface local, and ibus's own daemon will not hand them to an engine either. Co-Authored-By: Claude Opus 5 (1M context) --- ibus.c | 6 +++++- tests/ibus_live_test.c | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/ibus.c b/ibus.c index abd969f..6456f9c 100644 --- a/ibus.c +++ b/ibus.c @@ -889,7 +889,10 @@ handlecursor(DBusConnection *c, DBusMessage *m, Ictx *ctx) return reply(c, m, DBUS_TYPE_INVALID, nil); } -/* SetEngine: there is one engine, so any name is fine. */ +/* + * Accepted and thrown away: there is one engine, so any name is fine, + * and a relative cursor location is surface local, not a caret. + */ static DBusHandlerResult handleok(DBusConnection *c, DBusMessage *m, Ictx*) { @@ -908,6 +911,7 @@ static struct { {"Reset", "", handlereset}, {"Destroy", "", handledestroy}, {"SetCursorLocation", "iiii", handlecursor}, + {"SetCursorLocationRelative", "iiii", handleok}, {"SetCapabilities", "u", handlecap}, {"SetEngine", "s", handleok}, }; diff --git a/tests/ibus_live_test.c b/tests/ibus_live_test.c index 5ba2fad..4209884 100644 --- a/tests/ibus_live_test.c +++ b/tests/ibus_live_test.c @@ -128,6 +128,7 @@ runcontract(char *address) "SetEngine", "SetCapabilities", "SetCursorLocation", + "SetCursorLocationRelative", }; DBusConnection *conn; char path[96];