From 4a924ec9761a52990186411ed62aa92641309e93 Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Mon, 27 Mar 2023 00:20:39 +0100 Subject: [PATCH] gather desc in bind too --- src/globalshortcuts/global_shortcuts.c | 36 +++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/src/globalshortcuts/global_shortcuts.c b/src/globalshortcuts/global_shortcuts.c index cdb4674..ceed39c 100644 --- a/src/globalshortcuts/global_shortcuts.c +++ b/src/globalshortcuts/global_shortcuts.c @@ -351,12 +351,40 @@ static int method_gs_bind_shortcuts(sd_bus_message *msg, void *data, sd_bus_erro struct globalShortcut *shortcut = calloc(1, sizeof(struct globalShortcut)); shortcut->name = malloc(strlen(key) + 1); strcpy(shortcut->name, key); - shortcut->description = calloc(1, 1); // todo + + ret = sd_bus_message_enter_container(msg, 'a', "{sv}"); + if (ret < 0) { + return ret; + } + + while ((ret = sd_bus_message_enter_container(msg, 'e', "sv")) > 0) { + innerRet = sd_bus_message_read(msg, "s", &key); + if (innerRet < 0) { + return innerRet; + } + + if (strcmp(key, "description") == 0) { + sd_bus_message_read(msg, "v", "s", &key); + shortcut->description = malloc(strlen(key) + 1); + strcpy(shortcut->description, key); + } else { + sd_bus_message_skip(msg, "v"); + } + + innerRet = sd_bus_message_exit_container(msg); + if (innerRet < 0) { + return innerRet; + } + } + + sd_bus_message_exit_container(msg); + + if (shortcut->description == NULL) { + shortcut->description = calloc(1, 1); + } + wl_list_insert(&client->shortcuts, &shortcut->link); - // sd_bus_message_enter_container(msg, 'e', "sv"); - // sd_bus_message_exit_container(msg); - sd_bus_message_skip(msg, "a{sv}"); sd_bus_message_exit_container(msg); }