]> www.fi.muni.cz Git - evince.git/commitdiff
libview: Stop the GtkSpinner when the loading window is hidden
authorCristian KLEIN <cristiklein+gnome@gmail.com>
Thu, 16 Dec 2010 17:38:06 +0000 (18:38 +0100)
committerCarlos Garcia Campos <carlosgc@gnome.org>
Thu, 16 Dec 2010 17:38:06 +0000 (18:38 +0100)
Fixes bug #637390.

libview/ev-loading-window.c

index 4d5eaaf1407f4ee129bc18940d7c906790dc67db..434beac990552be164e3870c61af9e78965ffc0a 100644 (file)
@@ -33,6 +33,7 @@ struct _EvLoadingWindow {
        GtkWindow  base_instance;
 
        GtkWindow *parent;
+       GtkWidget *spinner;
 
        gint       x;
        gint       y;
@@ -69,7 +70,6 @@ ev_loading_window_init (EvLoadingWindow *window)
        GtkWindow   *gtk_window = GTK_WINDOW (window);
        GtkWidget   *widget = GTK_WIDGET (window);
        GtkWidget   *hbox;
-       GtkWidget   *spinner;
        GtkWidget   *label;
        GtkStyle    *style;
        GdkColor    fg, bg;
@@ -79,10 +79,9 @@ ev_loading_window_init (EvLoadingWindow *window)
 
        hbox = gtk_hbox_new (FALSE, 12);
 
-       spinner = gtk_spinner_new ();
-       gtk_spinner_start (GTK_SPINNER (spinner));
-       gtk_box_pack_start (GTK_BOX (hbox), spinner, FALSE, FALSE, 0);
-       gtk_widget_show (spinner);
+       window->spinner = gtk_spinner_new ();
+       gtk_box_pack_start (GTK_BOX (hbox), window->spinner, FALSE, FALSE, 0);
+       gtk_widget_show (window->spinner);
 
        label = gtk_label_new (loading_text);
        gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
@@ -222,9 +221,21 @@ ev_loading_window_hide (GtkWidget *widget)
 
        window->x = window->y = 0;
 
+       gtk_spinner_stop (GTK_SPINNER (window->spinner));
+
        GTK_WIDGET_CLASS (ev_loading_window_parent_class)->hide (widget);
 }
 
+static void
+ev_loading_window_show (GtkWidget *widget)
+{
+       EvLoadingWindow *window = EV_LOADING_WINDOW (widget);
+
+       gtk_spinner_start (GTK_SPINNER (window->spinner));
+
+       GTK_WIDGET_CLASS (ev_loading_window_parent_class)->show (widget);
+}
+
 static void
 ev_loading_window_class_init (EvLoadingWindowClass *klass)
 {
@@ -235,6 +246,7 @@ ev_loading_window_class_init (EvLoadingWindowClass *klass)
        g_object_class->set_property = ev_loading_window_set_property;
 
        gtk_widget_class->size_allocate = ev_loading_window_size_allocate;
+       gtk_widget_class->show = ev_loading_window_show;
        gtk_widget_class->hide = ev_loading_window_hide;
 
        g_object_class_install_property (g_object_class,