From 3bebcca7b49eb082177ef2fd36c939b4cf304ba2 Mon Sep 17 00:00:00 2001 From: Yuxuan Shui Date: Fri, 28 Jan 2022 03:13:20 +0000 Subject: [PATCH] dbus: add name property to windows Signed-off-by: Yuxuan Shui --- src/dbus.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/dbus.c b/src/dbus.c index a9e3e0b..7b47945 100644 --- a/src/dbus.c +++ b/src/dbus.c @@ -467,6 +467,7 @@ cdbus_append_wid_variant(session_t *ps attr_unused, DBusMessage *msg, const void return true; } + /** * Callback to append a bool argument to a message as a variant. */ @@ -522,6 +523,33 @@ cdbus_apdarg_string(session_t *ps attr_unused, DBusMessage *msg, const void *dat return true; } +/** + * Callback to append a string argument to a message as a variant. + */ +static bool +cdbus_append_string_variant(session_t *ps attr_unused, DBusMessage *msg, const void *data) { + const char *str = *(const char **)data; + if (!str) { + str = ""; + } + + DBusMessageIter it, it2; + dbus_message_iter_init_append(msg, &it); + if (!dbus_message_iter_open_container(&it, DBUS_TYPE_VARIANT, + DBUS_TYPE_STRING_AS_STRING, &it2)) { + return false; + } + if (!dbus_message_iter_append_basic(&it2, DBUS_TYPE_STRING, &str)) { + log_error("Failed to append argument."); + return false; + } + if (!dbus_message_iter_close_container(&it, &it2)) { + return false; + } + + return true; +} + static bool cdbus_append_empty_dict(session_t *ps attr_unused, DBusMessage *msg, const void *data attr_unused) { DBusMessageIter it, it2; @@ -855,6 +883,7 @@ cdbus_process_window_property_get(session_t *ps, DBusMessage *msg, cdbus_window_ cdbus_m_win_get_do(client_win, cdbus_append_wid_variant); cdbus_m_win_get_do(leader, cdbus_append_wid_variant); + cdbus_m_win_get_do(name, cdbus_append_string_variant); if (!strcmp("focused_raw", target)) { cdbus_reply(ps, msg, cdbus_append_bool_variant, (bool[]){win_is_focused_raw(ps, w)}); @@ -1430,6 +1459,7 @@ static bool cdbus_process_window_introspect(session_t *ps, DBusMessage *msg) { " \n" " \n" " \n" + " \n" " \n" "\n"; // clang-format on