From 471a3762c1b1b1515c8e5975e78ad5ebb11986d1 Mon Sep 17 00:00:00 2001 From: Ikey Doherty Date: Wed, 16 Nov 2016 18:44:50 +0000 Subject: themes: Implement support for action-icons buttons Now that all of the elements are in place to support (dynamically) the action icons, we can use the 'key' in place of the 'label' when the client sends an hint requesting it. Some other minor issues were corrected in this change, such as ensuring that we always show *all* widgets inside of the notification window so that when a live notification window is updated, the action box state is not then hidden from view. Signed-off-by: Ikey Doherty --- src/themes/slider/theme.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'src/themes/slider/theme.c') diff --git a/src/themes/slider/theme.c b/src/themes/slider/theme.c index d12b74d..46c32cd 100644 --- a/src/themes/slider/theme.c +++ b/src/themes/slider/theme.c @@ -732,11 +732,13 @@ void add_notification_action(GtkWindow* nw, const char* text, const char* key, A } } + if (windata->action_icons) { + button = gtk_button_new_from_icon_name(key, GTK_ICON_SIZE_BUTTON); + goto add_button; + } + button = gtk_button_new(); gtk_widget_show(button); - gtk_box_pack_start(GTK_BOX(windata->actions_box), button, FALSE, FALSE, 0); - gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); - gtk_container_set_border_width(GTK_CONTAINER(button), 0); hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6); gtk_widget_show(hbox); @@ -770,9 +772,16 @@ void add_notification_action(GtkWindow* nw, const char* text, const char* key, A gtk_label_set_markup(GTK_LABEL(label), buf); g_free(buf); +add_button: + gtk_box_pack_start(GTK_BOX(windata->actions_box), button, FALSE, FALSE, 0); + gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); + gtk_container_set_border_width(GTK_CONTAINER(button), 0); + g_object_set_data(G_OBJECT(button), "_nw", nw); g_object_set_data_full(G_OBJECT(button), "_action_key", g_strdup(key), g_free); g_signal_connect(G_OBJECT(button), "button-release-event", G_CALLBACK(on_action_clicked), cb); + + gtk_widget_show_all(windata->actions_box); } void clear_notification_actions(GtkWindow* nw) -- cgit v1.2.1