Resolves: #2010740 (Refresh on repository setup change)
This commit is contained in:
parent
a63a7bde16
commit
f47313a4ef
233
0003-refresh-on-repository-change.patch
Normal file
233
0003-refresh-on-repository-change.patch
Normal file
@ -0,0 +1,233 @@
|
||||
From 5c203ae1b07e2c31ca39c3d6a793534d45c49125 Mon Sep 17 00:00:00 2001
|
||||
From: Milan Crha <mcrha@redhat.com>
|
||||
Date: Tue, 5 Oct 2021 19:42:37 +0200
|
||||
Subject: [PATCH 1/5] gs-shell: Remove left-over function prototype declaration
|
||||
|
||||
The function body does not exist.
|
||||
---
|
||||
src/gs-shell.h | 2 --
|
||||
1 file changed, 2 deletions(-)
|
||||
|
||||
diff --git a/src/gs-shell.h b/src/gs-shell.h
|
||||
index bb39fc928..46661db16 100644
|
||||
--- a/src/gs-shell.h
|
||||
+++ b/src/gs-shell.h
|
||||
@@ -43,8 +43,6 @@ typedef enum {
|
||||
|
||||
GsShell *gs_shell_new (void);
|
||||
void gs_shell_activate (GsShell *shell);
|
||||
-void gs_shell_refresh (GsShell *shell,
|
||||
- GCancellable *cancellable);
|
||||
void gs_shell_change_mode (GsShell *shell,
|
||||
GsShellMode mode,
|
||||
gpointer data,
|
||||
--
|
||||
GitLab
|
||||
|
||||
|
||||
From ca49eb3974e220ff17262c6189e3cdf0a92746fe Mon Sep 17 00:00:00 2001
|
||||
From: Milan Crha <mcrha@redhat.com>
|
||||
Date: Tue, 5 Oct 2021 19:45:10 +0200
|
||||
Subject: [PATCH 2/5] gs-application: Introduce gs_application_refresh()
|
||||
|
||||
It can be used to call a non-interactive refresh call for the plugins.
|
||||
---
|
||||
src/gs-application.c | 28 ++++++++++++++++++++++++++++
|
||||
src/gs-application.h | 3 ++-
|
||||
2 files changed, 30 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/gs-application.c b/src/gs-application.c
|
||||
index 90487df62..df982df19 100644
|
||||
--- a/src/gs-application.c
|
||||
+++ b/src/gs-application.c
|
||||
@@ -1371,3 +1371,31 @@ gs_application_emit_install_resources_done (GsApplication *application,
|
||||
{
|
||||
g_signal_emit (application, signals[INSTALL_RESOURCES_DONE], 0, ident, op_error, NULL);
|
||||
}
|
||||
+
|
||||
+static void
|
||||
+gs_application_refresh_cb (GsPluginLoader *plugin_loader,
|
||||
+ GAsyncResult *result,
|
||||
+ GsApplication *self)
|
||||
+{
|
||||
+ gboolean success;
|
||||
+ g_autoptr(GError) error = NULL;
|
||||
+
|
||||
+ success = gs_plugin_loader_job_action_finish (plugin_loader, result, &error);
|
||||
+ if (!success &&
|
||||
+ !g_error_matches (error, GS_PLUGIN_ERROR, GS_PLUGIN_ERROR_CANCELLED))
|
||||
+ g_warning ("failed to refresh: %s", error->message);
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+gs_application_refresh (GsApplication *self)
|
||||
+{
|
||||
+ g_autoptr(GsPluginJob) plugin_job = NULL;
|
||||
+ plugin_job = gs_plugin_job_newv (GS_PLUGIN_ACTION_REFRESH,
|
||||
+ "interactive", FALSE,
|
||||
+ "age", (guint64) 1,
|
||||
+ NULL);
|
||||
+ gs_plugin_loader_job_process_async (self->plugin_loader, plugin_job,
|
||||
+ self->cancellable,
|
||||
+ (GAsyncReadyCallback) gs_application_refresh_cb,
|
||||
+ self);
|
||||
+}
|
||||
diff --git a/src/gs-application.h b/src/gs-application.h
|
||||
index 40bad4d4c..92978e1f5 100644
|
||||
--- a/src/gs-application.h
|
||||
+++ b/src/gs-application.h
|
||||
@@ -23,4 +23,5 @@ gboolean gs_application_has_active_window (GsApplication *application);
|
||||
void gs_application_emit_install_resources_done
|
||||
(GsApplication *application,
|
||||
const gchar *ident,
|
||||
- const GError *op_error);
|
||||
\ No newline at end of file
|
||||
+ const GError *op_error);
|
||||
+void gs_application_refresh (GsApplication *self);
|
||||
--
|
||||
GitLab
|
||||
|
||||
|
||||
From 2781d350a9a9ee1fd2078928f4e0933a34e05b9f Mon Sep 17 00:00:00 2001
|
||||
From: Milan Crha <mcrha@redhat.com>
|
||||
Date: Tue, 5 Oct 2021 19:46:17 +0200
|
||||
Subject: [PATCH 3/5] gs-repos-dialog: Call refresh on repository setup change
|
||||
|
||||
When a repository is enabled/disabled/removed, call also the refresh
|
||||
on the plugins, thus the data from those repos are available for the user.
|
||||
|
||||
Closes https://gitlab.gnome.org/GNOME/gnome-software/-/issues/1486
|
||||
---
|
||||
src/gs-repos-dialog.c | 16 ++++++++++++++++
|
||||
1 file changed, 16 insertions(+)
|
||||
|
||||
diff --git a/src/gs-repos-dialog.c b/src/gs-repos-dialog.c
|
||||
index 1d6a82f48..c986ad724 100644
|
||||
--- a/src/gs-repos-dialog.c
|
||||
+++ b/src/gs-repos-dialog.c
|
||||
@@ -13,6 +13,7 @@
|
||||
#include "gs-repos-dialog.h"
|
||||
|
||||
#include "gnome-software-private.h"
|
||||
+#include "gs-application.h"
|
||||
#include "gs-common.h"
|
||||
#include "gs-os-release.h"
|
||||
#include "gs-repo-row.h"
|
||||
@@ -35,6 +36,8 @@ struct _GsReposDialog
|
||||
GtkWidget *content_page;
|
||||
GtkWidget *spinner;
|
||||
GtkWidget *stack;
|
||||
+
|
||||
+ gboolean changed;
|
||||
};
|
||||
|
||||
G_DEFINE_TYPE (GsReposDialog, gs_repos_dialog, HDY_TYPE_WINDOW)
|
||||
@@ -115,6 +118,8 @@ repo_enabled_cb (GObject *source,
|
||||
}
|
||||
|
||||
g_debug ("finished %s repo %s", action_str, gs_app_get_id (install_remove_data->repo));
|
||||
+
|
||||
+ install_remove_data->dialog->changed = TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -710,6 +715,17 @@ gs_repos_dialog_dispose (GObject *object)
|
||||
g_clear_object (&dialog->cancellable);
|
||||
g_clear_object (&dialog->settings);
|
||||
|
||||
+ if (dialog->changed) {
|
||||
+ GApplication *app;
|
||||
+
|
||||
+ dialog->changed = FALSE;
|
||||
+ g_debug ("Repository setup changed, calling refresh...");
|
||||
+
|
||||
+ app = g_application_get_default ();
|
||||
+ if (app)
|
||||
+ gs_application_refresh (GS_APPLICATION (app));
|
||||
+ }
|
||||
+
|
||||
G_OBJECT_CLASS (gs_repos_dialog_parent_class)->dispose (object);
|
||||
}
|
||||
|
||||
--
|
||||
GitLab
|
||||
|
||||
|
||||
From 4c6f4f20c904600a3c5d8ea446ed3c3b0ef0808d Mon Sep 17 00:00:00 2001
|
||||
From: Milan Crha <mcrha@redhat.com>
|
||||
Date: Wed, 6 Oct 2021 14:41:55 +0200
|
||||
Subject: [PATCH 4/5] gs-application: Invoke page reload after the refresh is
|
||||
finished
|
||||
|
||||
The refresh can cause new applications or alternative sources being
|
||||
found in the newly enabled repositories, thus reload the pages, to
|
||||
reflect the current state.
|
||||
---
|
||||
src/gs-application.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/src/gs-application.c b/src/gs-application.c
|
||||
index df982df19..6ecc093f1 100644
|
||||
--- a/src/gs-application.c
|
||||
+++ b/src/gs-application.c
|
||||
@@ -1384,6 +1384,9 @@ gs_application_refresh_cb (GsPluginLoader *plugin_loader,
|
||||
if (!success &&
|
||||
!g_error_matches (error, GS_PLUGIN_ERROR, GS_PLUGIN_ERROR_CANCELLED))
|
||||
g_warning ("failed to refresh: %s", error->message);
|
||||
+
|
||||
+ if (success)
|
||||
+ g_signal_emit_by_name (self->plugin_loader, "reload", 0, NULL);
|
||||
}
|
||||
|
||||
void
|
||||
--
|
||||
GitLab
|
||||
|
||||
|
||||
From b1277d97ba4495de434eb3be4ea1f17b80ac1ef8 Mon Sep 17 00:00:00 2001
|
||||
From: Milan Crha <mcrha@redhat.com>
|
||||
Date: Wed, 6 Oct 2021 14:44:09 +0200
|
||||
Subject: [PATCH 5/5] gs-overview-page: Refresh the application after
|
||||
third-party repositories enable/disable
|
||||
|
||||
The enable/disable can cause other applications being found, thus call
|
||||
the refresh, to update the repositories information.
|
||||
---
|
||||
src/gs-overview-page.c | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/src/gs-overview-page.c b/src/gs-overview-page.c
|
||||
index 9ba33fb2b..bcf02243d 100644
|
||||
--- a/src/gs-overview-page.c
|
||||
+++ b/src/gs-overview-page.c
|
||||
@@ -13,6 +13,7 @@
|
||||
#include <handy.h>
|
||||
#include <math.h>
|
||||
|
||||
+#include "gs-application.h"
|
||||
#include "gs-shell.h"
|
||||
#include "gs-overview-page.h"
|
||||
#include "gs-app-list-private.h"
|
||||
@@ -568,6 +569,8 @@ third_party_response_cb (GtkInfoBar *info_bar,
|
||||
gint response_id,
|
||||
GsOverviewPage *self)
|
||||
{
|
||||
+ GApplication *application;
|
||||
+
|
||||
if (response_id == GTK_RESPONSE_YES)
|
||||
fedora_third_party_enable (self);
|
||||
else
|
||||
@@ -575,6 +578,10 @@ third_party_response_cb (GtkInfoBar *info_bar,
|
||||
|
||||
self->third_party_needs_question = FALSE;
|
||||
refresh_third_party_repo (self);
|
||||
+
|
||||
+ application = g_application_get_default ();
|
||||
+ if (application)
|
||||
+ gs_application_refresh (GS_APPLICATION (application));
|
||||
}
|
||||
|
||||
static gboolean
|
||||
--
|
||||
GitLab
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
Name: gnome-software
|
||||
Version: 41.0
|
||||
Release: 2%{?dist}
|
||||
Release: 3%{?dist}
|
||||
Summary: A software center for GNOME
|
||||
|
||||
License: GPLv2+
|
||||
@ -21,6 +21,7 @@ Source0: https://download.gnome.org/sources/gnome-software/41/%{name}-%{tarbal
|
||||
|
||||
Patch01: 0001-crash-with-broken-theme.patch
|
||||
Patch02: 0002-correct-update-notifications.patch
|
||||
Patch03: 0003-refresh-on-repository-change.patch
|
||||
|
||||
BuildRequires: appstream-devel >= %{appstream_version}
|
||||
BuildRequires: gcc
|
||||
@ -203,6 +204,9 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop
|
||||
%{_datadir}/gtk-doc/html/gnome-software
|
||||
|
||||
%changelog
|
||||
* Thu Oct 07 2021 Milan Crha <mcrha@redhat.com> - 41.0-3
|
||||
- Resolves: #2010740 (Refresh on repository setup change)
|
||||
|
||||
* Mon Oct 04 2021 Milan Crha <mcrha@redhat.com> - 41.0-2
|
||||
- Resolves: #2009063 (Correct update notifications)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user