[gnome-software] GsShellUpdates: Use gs_shell_get_mode
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software] GsShellUpdates: Use gs_shell_get_mode
- Date: Wed, 28 Aug 2013 13:34:43 +0000 (UTC)
commit 0462f3f09b551e4b5e95d97ce05e28a2e6ae4d65
Author: Matthias Clasen <mclasen redhat com>
Date: Wed Aug 28 09:23:20 2013 -0400
GsShellUpdates: Use gs_shell_get_mode
We use it to ensure that we are only updating header content
if we are still the current page. In order to do this, we need
to keep a reference to the GsShell in GsShellUpdates.
src/gs-shell-updates.c | 20 ++++++++++++--------
src/gs-shell-updates.h | 2 ++
src/gs-shell.c | 1 +
3 files changed, 15 insertions(+), 8 deletions(-)
---
diff --git a/src/gs-shell-updates.c b/src/gs-shell-updates.c
index 5f050ae..97a84e5 100644
--- a/src/gs-shell-updates.c
+++ b/src/gs-shell-updates.c
@@ -41,6 +41,7 @@ struct GsShellUpdatesPrivate
GtkListBox *list_box_updates;
gboolean cache_valid;
gboolean waiting;
+ GsShell *shell;
};
enum {
@@ -96,16 +97,17 @@ gs_shell_updates_get_updates_cb (GsPluginLoader *plugin_loader,
GsApp *app;
GsShellUpdatesPrivate *priv = shell_updates->priv;
GtkWidget *widget;
- GtkWidget *notebook;
priv->waiting = FALSE;
priv->cache_valid = TRUE;
- widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "header_spinner"));
- gtk_spinner_stop (GTK_SPINNER (widget));
- gtk_widget_hide (widget);
- widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "button_wait"));
- gtk_widget_hide (widget);
+ if (gs_shell_get_mode (priv->shell) == GS_SHELL_MODE_UPDATES) {
+ widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "header_spinner"));
+ gtk_spinner_stop (GTK_SPINNER (widget));
+ gtk_widget_hide (widget);
+ widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "button_wait"));
+ gtk_widget_hide (widget);
+ }
/* get the results */
list = gs_plugin_loader_get_updates_finish (plugin_loader, res, &error);
@@ -115,8 +117,7 @@ gs_shell_updates_get_updates_cb (GsPluginLoader *plugin_loader,
widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "scrolledwindow_updates"));
gtk_widget_set_visible (widget, list != NULL);
- notebook = GTK_WIDGET (gtk_builder_get_object (priv->builder, "notebook_main"));
- if (gtk_notebook_get_current_page (GTK_NOTEBOOK (notebook)) == GS_SHELL_MODE_UPDATES) {
+ if (gs_shell_get_mode (priv->shell) == GS_SHELL_MODE_UPDATES) {
widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "button_update_all"));
gtk_widget_set_visible (widget, list != NULL);
}
@@ -473,6 +474,7 @@ gs_shell_updates_button_update_all_cb (GtkButton *button,
*/
void
gs_shell_updates_setup (GsShellUpdates *shell_updates,
+ GsShell *shell,
GsPluginLoader *plugin_loader,
GtkBuilder *builder,
GCancellable *cancellable)
@@ -485,6 +487,8 @@ gs_shell_updates_setup (GsShellUpdates *shell_updates,
g_return_if_fail (GS_IS_SHELL_UPDATES (shell_updates));
+ priv->shell = shell;
+
priv->plugin_loader = g_object_ref (plugin_loader);
g_signal_connect (priv->plugin_loader, "pending-apps-changed",
G_CALLBACK (gs_shell_updates_pending_apps_changed_cb),
diff --git a/src/gs-shell-updates.h b/src/gs-shell-updates.h
index 5cdf42f..0311c18 100644
--- a/src/gs-shell-updates.h
+++ b/src/gs-shell-updates.h
@@ -25,6 +25,7 @@
#include <glib-object.h>
#include <gtk/gtk.h>
+#include "gs-shell.h"
#include "gs-plugin-loader.h"
G_BEGIN_DECLS
@@ -55,6 +56,7 @@ GsShellUpdates *gs_shell_updates_new (void);
void gs_shell_updates_invalidate (GsShellUpdates *shell_updates);
void gs_shell_updates_refresh (GsShellUpdates *shell_updates);
void gs_shell_updates_setup (GsShellUpdates *shell_updates,
+ GsShell *shell,
GsPluginLoader *plugin_loader,
GtkBuilder *builder,
GCancellable *cancellable);
diff --git a/src/gs-shell.c b/src/gs-shell.c
index d2da1d0..3f53380 100644
--- a/src/gs-shell.c
+++ b/src/gs-shell.c
@@ -218,6 +218,7 @@ gs_shell_setup (GsShell *shell, GsPluginLoader *plugin_loader, GCancellable *can
priv->builder,
priv->cancellable);
gs_shell_updates_setup (priv->shell_updates,
+ shell,
priv->plugin_loader,
priv->builder,
priv->cancellable);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]