From 10a149cf899e14f6ef5dd4be97d21f450fd8bd0f Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 21 Aug 2009 14:53:06 -0500 Subject: Fleshing out remove to try to get rid of all these blacklist items. --- src/messages-service.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'src') diff --git a/src/messages-service.c b/src/messages-service.c index 4e03c26..9c015e2 100644 --- a/src/messages-service.c +++ b/src/messages-service.c @@ -261,6 +261,14 @@ blacklist_add (gpointer udata) return FALSE; } +/* Looks through the list of definition files and + tries to match the one passed in. */ +static gboolean +blacklist_find_def (gpointer key, gpointer value, gpointer data) +{ + return !g_strcmp0((gchar *)value, (gchar *)data); +} + /* Remove a black list item based on the definition file and uneclipse those launchers blocked by it. */ static gboolean @@ -269,6 +277,31 @@ blacklist_remove (gpointer data) gchar * definition_file = (gchar *)data; g_debug("Removing: %s", definition_file); + gpointer key = g_hash_table_find(blacklist, blacklist_find_def, data); + if (key == NULL) { + g_debug("\tNot found!"); + return FALSE; + } + + GList * launcheritem; + for (launcheritem = launcherList; launcheritem != NULL; launcheritem = launcheritem->next) { + launcherList_t * li = (launcherList_t *)launcheritem->data; + if (!g_strcmp0(launcher_menu_item_get_desktop(li->menuitem), (gchar *)key)) { + GList * serveritem; + for (serveritem = serverList; serveritem != NULL; serveritem = serveritem->next) { + serverList_t * si = (serverList_t *)serveritem->data; + if (!g_strcmp0(app_menu_item_get_desktop(si->menuitem), (gchar *)key)) { + break; + } + } + if (serveritem == NULL) { + launcher_menu_item_set_eclipsed(li->menuitem, FALSE); + } + } + } + + g_hash_table_remove(blacklist, key); + return FALSE; } -- cgit v1.2.3