From 706a3188fb4a4bc20db26cc277421413901320ca Mon Sep 17 00:00:00 2001 From: Jason Conti Date: Sat, 14 May 2011 13:37:48 -0400 Subject: Adding back the functionality to clear the notifications. --- src/notifications-service.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src') diff --git a/src/notifications-service.c b/src/notifications-service.c index d07547b..4e21de9 100644 --- a/src/notifications-service.c +++ b/src/notifications-service.c @@ -52,6 +52,7 @@ static guint notification_limit = 5; static GOutputStream *log_file = NULL; static gboolean add_notification_item(gpointer); +static gboolean clear_notification_items(gpointer); static void build_menus(DbusmenuMenuitem *); static void clear_notifications_cb(DbusmenuMenuitem *, guint, gpointer); static void log_to_file_cb(GObject *, GAsyncResult *, gpointer); @@ -87,6 +88,22 @@ add_notification_item(gpointer user_data) return FALSE; } +static gboolean +clear_notification_items(gpointer user_data) +{ + DbusmenuMenuitem *item; + + while(!g_queue_is_empty(notification_items)) { + item = DBUSMENU_MENUITEM(g_queue_pop_tail(notification_items)); + dbusmenu_menuitem_child_delete(root, item); + g_object_unref(item); + } + + item = NULL; + + return FALSE; +} + static void build_menus(DbusmenuMenuitem *root) { @@ -111,6 +128,7 @@ build_menus(DbusmenuMenuitem *root) static void clear_notifications_cb(DbusmenuMenuitem *item, guint timestamp, gpointer user_data) { + g_idle_add(clear_notification_items, NULL); } /* from indicator-applet */ -- cgit v1.2.3