summaryrefslogtreecommitdiff
path: root/src/themes/slider/theme.c
diff options
context:
space:
mode:
authorIkey Doherty <[email protected]>2016-11-16 18:09:50 +0000
committermonsta <[email protected]>2017-02-14 17:03:17 +0400
commit70425533f5648d00113e7bfeabe52198c6bbdad8 (patch)
tree19ca370a162a1b0185825e8c1e29eab17cffeab4 /src/themes/slider/theme.c
parent124254a41b45b790866c8df8d116a7bbef47ca50 (diff)
downloadmate-notification-daemon-70425533f5648d00113e7bfeabe52198c6bbdad8.tar.bz2
mate-notification-daemon-70425533f5648d00113e7bfeabe52198c6bbdad8.tar.xz
themes: Ensure that we never add more than one pie_countdown
Prior to this commit we would always end up adding multiple pie_countdown widgets in a number of situations when updating the notification. In modern media player apps, many updates are sent for the lifetime of a single notification window, leading to new drawing areas being added and counting down with each track/information change. Note this hasn't been noticable for quite some time, because in many of the themes the pie countdown hasn't actually been visible due to the actions box having become hidden completely, meaning that the actions and pie show very briefly, and are immediately nuked on a change to the notification. Signed-off-by: Ikey Doherty <[email protected]>
Diffstat (limited to 'src/themes/slider/theme.c')
-rw-r--r--src/themes/slider/theme.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/themes/slider/theme.c b/src/themes/slider/theme.c
index 39c1977..d12b74d 100644
--- a/src/themes/slider/theme.c
+++ b/src/themes/slider/theme.c
@@ -718,14 +718,18 @@ void add_notification_action(GtkWindow* nw, const char* text, const char* key, A
gtk_widget_show(windata->actions_box);
update_content_hbox_visibility(windata);
- windata->pie_countdown = gtk_drawing_area_new();
-
- gtk_widget_set_halign (windata->pie_countdown, GTK_ALIGN_END);
- gtk_widget_show(windata->pie_countdown);
-
- gtk_box_pack_end (GTK_BOX (windata->actions_box), windata->pie_countdown, FALSE, TRUE, 0);
- gtk_widget_set_size_request(windata->pie_countdown, PIE_WIDTH, PIE_HEIGHT);
- g_signal_connect(G_OBJECT(windata->pie_countdown), "draw", G_CALLBACK(on_countdown_draw), windata);
+ /* Don't try to re-add a pie_countdown */
+ if (!windata->pie_countdown) {
+ windata->pie_countdown = gtk_drawing_area_new();
+ gtk_widget_set_halign (windata->pie_countdown, GTK_ALIGN_END);
+ gtk_widget_show(windata->pie_countdown);
+
+ gtk_box_pack_end (GTK_BOX (windata->actions_box), windata->pie_countdown, FALSE, TRUE, 0);
+ gtk_widget_set_size_request(windata->pie_countdown,
+ PIE_WIDTH, PIE_HEIGHT);
+ g_signal_connect(G_OBJECT(windata->pie_countdown), "draw",
+ G_CALLBACK(on_countdown_draw), windata);
+ }
}
button = gtk_button_new();