Update the automatically loaded plugins via dependencies/dependent plugins on plugin load/unload in pidgin soc.2013.gobjectification.plugins

Sat, 21 Sep 2013 01:15:14 +0530

author
Ankit Vani <a@nevitus.org>
date
Sat, 21 Sep 2013 01:15:14 +0530
branch
soc.2013.gobjectification.plugins
changeset 36780
2e95872a71c3
parent 36779
0201d9d091ab
child 36781
8fb558514134

Update the automatically loaded plugins via dependencies/dependent plugins on plugin load/unload in pidgin

pidgin/gtkplugin.c file | annotate | diff | comparison | revisions
--- a/pidgin/gtkplugin.c	Fri Sep 20 23:28:38 2013 +0530
+++ b/pidgin/gtkplugin.c	Sat Sep 21 01:15:14 2013 +0530
@@ -283,6 +283,23 @@
 	g_list_free(plugins);
 }
 
+static gboolean
+check_if_loaded(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data)
+{
+	PurplePlugin *plugin;
+	gtk_tree_model_get(model, iter, 2, &plugin, -1);
+	gtk_list_store_set(GTK_LIST_STORE(model), iter,
+					           0, purple_plugin_is_loaded(plugin),
+					           -1);
+	return FALSE;
+}
+
+static void
+update_loaded_plugins(GtkTreeModel *model)
+{
+	gtk_tree_model_foreach(model, check_if_loaded, NULL);
+}
+
 static void plugin_loading_common(PurplePlugin *plugin, GtkTreeView *view, gboolean loaded)
 {
 	GtkTreeIter iter;
@@ -475,9 +492,13 @@
 		g_error_free(error);
 	}
 
-	gtk_list_store_set(GTK_LIST_STORE (model), iter,
-	                   0, purple_plugin_is_loaded(plug),
-	                   -1);
+	if ((unload && purple_plugin_get_dependent_plugins(plug)) ||
+	   (!unload && purple_plugin_info_get_dependencies(info)))
+		update_loaded_plugins(model);
+	else
+		gtk_list_store_set(GTK_LIST_STORE (model), iter,
+			               0, purple_plugin_is_loaded(plug),
+			               -1);
 	g_free(iter);
 
 	pidgin_plugins_save();

mercurial