[gnome-packagekit/gnome-2-28] Don't show the selected packages as deps of the to be updated packages. Fixes rh#546247
- From: Richard Hughes <rhughes src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gnome-packagekit/gnome-2-28] Don't show the selected packages as deps of the to be updated packages. Fixes rh#546247
- Date: Fri, 11 Dec 2009 09:49:49 +0000 (UTC)
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]