[gnome-packagekit/gnome-2-28] Don't show the selected packages as deps of the to be updated packages. Fixes rh#546247



commit 613026fad7287f7e7ca3cf386786a24e54bcfc7a
Author: Richard Hughes <richard hughsie com>
Date:   Fri Dec 11 09:44:24 2009 +0000

    Don't show the selected packages as deps of the to be updated packages. Fixes rh#546247
    
    Note, this only affects PackageKit >= 0.5.5

 src/gpk-helper-deps-update.c |   12 +++++++++++-
 src/gpk-helper-deps-update.h |    1 +
 src/gpk-update-viewer.c      |   28 +++++++++++++++++++++++++++-
 3 files changed, 39 insertions(+), 2 deletions(-)
---
diff --git a/src/gpk-helper-deps-update.c b/src/gpk-helper-deps-update.c
index d5b8eda..5a0ee19 100644
--- a/src/gpk-helper-deps-update.c
+++ b/src/gpk-helper-deps-update.c
@@ -58,7 +58,7 @@ G_DEFINE_TYPE (GpkHelperDepsUpdate, gpk_helper_deps_update, G_TYPE_OBJECT)
  * Return value: if we agreed
  **/
 gboolean
-gpk_helper_deps_update_show (GpkHelperDepsUpdate *helper, PkPackageList *deps_list)
+gpk_helper_deps_update_show (GpkHelperDepsUpdate *helper, PkPackageList *packages, PkPackageList *deps_list)
 {
 	gchar *title = NULL;
 	const gchar *message = NULL;
@@ -68,6 +68,7 @@ gpk_helper_deps_update_show (GpkHelperDepsUpdate *helper, PkPackageList *deps_li
 	GtkResponseType response;
 	const PkPackageObj *obj;
 	guint i;
+	gchar *package_id;
 
 	/* save deps list */
 	if (helper->priv->list != NULL)
@@ -78,6 +79,15 @@ gpk_helper_deps_update_show (GpkHelperDepsUpdate *helper, PkPackageList *deps_li
 	length = pk_package_list_get_size (deps_list);
 	for (i=0; i<length; i++) {
 		obj = pk_package_list_get_obj (deps_list, i);
+
+		/* is the dep listed in the original package list */
+		package_id = pk_package_id_to_string (obj->id);
+		ret = pk_package_list_contains (packages, package_id);
+		g_free (package_id);
+		if (ret)
+			continue;
+
+		/* ignore download and cleanup packages and that sort of thing */
 		if (obj->info == PK_INFO_ENUM_INSTALLING ||
 		    obj->info == PK_INFO_ENUM_UPDATING)
 			pk_package_list_add (helper->priv->list, obj->info, obj->id, obj->summary);
diff --git a/src/gpk-helper-deps-update.h b/src/gpk-helper-deps-update.h
index 6f01c3c..02d7008 100644
--- a/src/gpk-helper-deps-update.h
+++ b/src/gpk-helper-deps-update.h
@@ -58,6 +58,7 @@ GpkHelperDepsUpdate	*gpk_helper_deps_update_new	(void);
 gboolean	 gpk_helper_deps_update_set_parent	(GpkHelperDepsUpdate	*helper,
 							 GtkWindow		*window);
 gboolean	 gpk_helper_deps_update_show		(GpkHelperDepsUpdate	*helper,
+							 PkPackageList		*packages,
 							 PkPackageList		*deps_list);
 
 G_END_DECLS
diff --git a/src/gpk-update-viewer.c b/src/gpk-update-viewer.c
index 73d4cd3..9eed9bf 100644
--- a/src/gpk-update-viewer.c
+++ b/src/gpk-update-viewer.c
@@ -1814,10 +1814,36 @@ gpk_update_viewer_finished_cb (PkClient *client, PkExitEnum exit, guint runtime,
 #else
 	if (exit == PK_EXIT_ENUM_SUCCESS && role == PK_ROLE_ENUM_GET_DEPENDS) {
 #endif
+		gboolean valid;
+		GtkTreeIter iter;
+		gboolean update;
+		PkPackageId *id;
+		gchar *package_id;
+		PkPackageList *selected_list;
+
+		/* get the first iter in the list */
+		valid = gtk_tree_model_get_iter_first (model, &iter);
+
+		/* create list of selected updates */
+		selected_list = pk_package_list_new ();
+		while (valid) {
+			gtk_tree_model_get (model, &iter,
+					    GPK_UPDATES_COLUMN_SELECT, &update,
+					    GPK_UPDATES_COLUMN_ID, &package_id, -1);
+			if (update) {
+				id = pk_package_id_new_from_string (package_id);
+				pk_package_list_add (selected_list, PK_INFO_ENUM_UPDATING, id, "");
+				pk_package_id_free (id);
+			}
+			g_free (package_id);
+			valid = gtk_tree_model_iter_next (model, &iter);
+		}
+
 		/* show deps dialog */
 		list = pk_client_get_package_list (client);
-		gpk_helper_deps_update_show (helper_deps_update, list);
+		gpk_helper_deps_update_show (helper_deps_update, selected_list, list);
 		g_object_unref (list);
+		g_object_unref (selected_list);
 	}
 
 	if (role == PK_ROLE_ENUM_GET_UPDATES) {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]