From 7da583328758e3e8e3ace381aab9e98313f76767 Mon Sep 17 00:00:00 2001 From: Federico Angelilli Date: Sun, 26 Nov 2023 23:19:19 +0100 Subject: Change behaviour of button_simple_set_text --- src/comet.c | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) (limited to 'src/comet.c') diff --git a/src/comet.c b/src/comet.c index 6257bf1..d6fc0d1 100644 --- a/src/comet.c +++ b/src/comet.c @@ -146,7 +146,6 @@ static gboolean ram_update(gpointer data) int usage = 100 * (total - unused - buffers - cached) / total; button_simple_set_text((gpointer)btn, g_strdup_printf(" %d%%", usage), btn->text_color); - size_t len2 = g_utf8_strlen(btn->text, -1); log_debug("Updated ram percentage"); @@ -198,11 +197,13 @@ static void quit_action(Button *btn) static void menu_action(Button *btn) { + ButtonSimple *sbtn = CAST(btn, ButtonSimple); struct { ButtonGroup *group; + char *strings[2]; GList *toggled; State *state; - } *menu_ctx = CAST(btn, ButtonSimple)->action_data; + } *menu_ctx = sbtn->action_data; // Otherwise the menu can't be closed g_assert(menu_ctx->group->children->data == btn); @@ -211,7 +212,11 @@ static void menu_action(Button *btn) menu_ctx->group->children = menu_ctx->toggled; menu_ctx->toggled = temp; - log_debug("Toggled menu"); + bool closed = menu_ctx->group->children->next == NULL; + + button_simple_set_text(btn, g_strdup(menu_ctx->strings[!closed]), sbtn->text_color); + + log_debug("%s menu", closed ? "Closed" : "Opened"); state_redraw(menu_ctx->state, true); } @@ -222,14 +227,14 @@ static void register_buttons(State *state, Color color, Color line_color, Color for (int i = 0; i < 9; ++i) { char text[] = { '1' + i, '\0' }; Button *btn = button_simple_create(PANGO_ALIGN_LEFT, color, line_color); - button_simple_set_text(btn, text, text_color); + button_simple_set_text(btn, g_strdup(text), text_color); button_simple_set_action(btn, show_action, NULL); state_add_button(state, btn); } // Cpu usage button Button *cpu_btn = button_simple_create(PANGO_ALIGN_RIGHT, color, line_color); - button_simple_set_text(cpu_btn, " ?%", text_color); + button_simple_set_text(cpu_btn, g_strdup(" ?%"), text_color); button_simple_set_action(cpu_btn, show_action, state); state_add_button(state, cpu_btn); @@ -238,7 +243,7 @@ static void register_buttons(State *state, Color color, Color line_color, Color // Temperature button Button *temp_btn = button_simple_create(PANGO_ALIGN_RIGHT, color, line_color); - button_simple_set_text(temp_btn, "temp", text_color); + button_simple_set_text(temp_btn, g_strdup("temp"), text_color); button_simple_set_action(temp_btn, show_action, state); state_add_button(state, temp_btn); @@ -247,7 +252,7 @@ static void register_buttons(State *state, Color color, Color line_color, Color // Ram usage button Button *ram_btn = button_simple_create(PANGO_ALIGN_RIGHT, color, line_color); - button_simple_set_text(ram_btn, "ram", text_color); + button_simple_set_text(ram_btn, g_strdup("ram"), text_color); button_simple_set_action(ram_btn, show_action, state); state_add_button(state, ram_btn); @@ -256,7 +261,7 @@ static void register_buttons(State *state, Color color, Color line_color, Color // Disk usage button Button *disk_btn = button_simple_create(PANGO_ALIGN_RIGHT, color, line_color); - button_simple_set_text(disk_btn, "disk", text_color); + button_simple_set_text(disk_btn, g_strdup("disk"), text_color); button_simple_set_action(disk_btn, show_action, state); state_add_button(state, disk_btn); @@ -304,7 +309,7 @@ int main(int argc, char **argv) // Date & time button Button *date_btn = button_simple_create(PANGO_ALIGN_CENTER, color, line_color); - button_simple_set_text(date_btn, "date", text_color); + button_simple_set_text(date_btn, g_strdup("date"), text_color); button_simple_set_action(date_btn, show_action, &date_ctx); state_add_button(state, date_btn); @@ -318,7 +323,7 @@ int main(int argc, char **argv) // Quit button Color purple = { 0.502, 0.168, 0.886, 1 }; Button *q_btn = button_simple_create(PANGO_ALIGN_RIGHT, purple, line_color); - button_simple_set_text(q_btn, "", text_color); + button_simple_set_text(q_btn, g_strdup(""), text_color); button_simple_set_action(q_btn, quit_action, mainloop); state_add_button(state, q_btn); @@ -328,27 +333,28 @@ int main(int argc, char **argv) Button *child1 = button_simple_create(PANGO_ALIGN_CENTER, color, line_color); button_set_padding(child1, 1); - button_simple_set_text(child1, "C1", text_color); + button_simple_set_text(child1, g_strdup("C1"), text_color); button_simple_set_action(child1, show_action, NULL); Button *child2 = button_simple_create(PANGO_ALIGN_CENTER, color, line_color); button_set_padding(child2, 1); - button_simple_set_text(child2, "C2", text_color); + button_simple_set_text(child2, g_strdup("C2"), text_color); button_simple_set_action(child2, show_action, NULL); Button *child3 = button_simple_create(PANGO_ALIGN_CENTER, color, line_color); button_set_padding(child3, 1); - button_simple_set_text(child3, "C3", text_color); + button_simple_set_text(child3, g_strdup("C3"), text_color); button_simple_set_action(child3, show_action, NULL); struct { ButtonGroup *group; + char *strings[2]; GList *toggled; State *state; - } menu_ctx = { (gpointer)group, NULL, state }; + } menu_ctx = { (gpointer)group, {"", ""}, NULL, state }; Button *menu = button_simple_create(PANGO_ALIGN_CENTER, color, line_color); - button_simple_set_text(menu, "Open", text_color); + button_simple_set_text(menu, g_strdup(menu_ctx.strings[0]), text_color); button_simple_set_action(menu, menu_action, &menu_ctx); menu_ctx.toggled = g_list_append(menu_ctx.toggled, menu); -- cgit v1.2.3