aboutsummaryrefslogtreecommitdiff
path: root/src/im-desktop-menu.c
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2013-08-18 22:48:46 -0500
committerTed Gould <ted@gould.cx>2013-08-18 22:48:46 -0500
commitaa21be1e0794713e2aeb091516c8c784821a5352 (patch)
treed1c2860f596bca6e4a59ea7bb0a29175280f2ec3 /src/im-desktop-menu.c
parent7ac72f494336f93e5fe4454f10fb43e5007ba21b (diff)
downloadayatana-indicator-messages-aa21be1e0794713e2aeb091516c8c784821a5352.tar.gz
ayatana-indicator-messages-aa21be1e0794713e2aeb091516c8c784821a5352.tar.bz2
ayatana-indicator-messages-aa21be1e0794713e2aeb091516c8c784821a5352.zip
Putting back the removing of sources
Diffstat (limited to 'src/im-desktop-menu.c')
-rw-r--r--src/im-desktop-menu.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/im-desktop-menu.c b/src/im-desktop-menu.c
index 25c83a4..e8dff6f 100644
--- a/src/im-desktop-menu.c
+++ b/src/im-desktop-menu.c
@@ -159,6 +159,22 @@ im_desktop_menu_source_removed (ImApplicationList *applist,
g_free (action);
}
+static void
+im_desktop_menu_remove_all (ImApplicationList *applist,
+ gpointer user_data)
+{
+ ImDesktopMenu *menu = user_data;
+ GHashTableIter it;
+ GMenu *section;
+
+ g_hash_table_iter_init (&it, menu->source_sections);
+ while (g_hash_table_iter_next (&it, NULL, (gpointer *) &section))
+ {
+ while (g_menu_model_get_n_items (G_MENU_MODEL (section)) > 0)
+ g_menu_remove (section, 0);
+ }
+}
+
static GMenu *
create_status_section (void)
{
@@ -237,6 +253,7 @@ im_desktop_menu_constructed (GObject *object)
g_signal_connect (applist, "app-added", G_CALLBACK (im_desktop_menu_app_added), menu);
g_signal_connect (applist, "source-added", G_CALLBACK (im_desktop_menu_source_added), menu);
g_signal_connect (applist, "source-removed", G_CALLBACK (im_desktop_menu_source_removed), menu);
+ g_signal_connect (applist, "remove-all", G_CALLBACK (im_desktop_menu_remove_all), menu);
G_OBJECT_CLASS (im_desktop_menu_parent_class)->constructed (object);
}