[gnome-software] GsShellUpdates: Use gs_shell_get_mode



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]