diff options
author | Alexander Mikhaylenko <alexm@gnome.org> | 2021-02-08 18:22:54 +0500 |
---|---|---|
committer | Michael Catanzaro <mcatanzaro@gnome.org> | 2021-02-08 15:16:41 +0000 |
commit | cd24fadc7182d7ef44e3787d721016ef1e1a7b27 (patch) | |
tree | 7a502e4a8bdfb03a891241bfaaeb0ba8a9fd8bff | |
parent | 132270a88806f29749cec214882efb44e2b0f12b (diff) | |
download | epiphany-cd24fadc7182d7ef44e3787d721016ef1e1a7b27.tar.gz |
page-row: Stop spinner when not visible
-rw-r--r-- | src/ephy-page-row.c | 14 | ||||
-rw-r--r-- | src/resources/gtk/page-row.ui | 6 |
2 files changed, 16 insertions, 4 deletions
diff --git a/src/ephy-page-row.c b/src/ephy-page-row.c index 8e8d694d3..932e8f37e 100644 --- a/src/ephy-page-row.c +++ b/src/ephy-page-row.c @@ -44,6 +44,16 @@ struct _EphyPageRow { G_DEFINE_TYPE (EphyPageRow, ephy_page_row, GTK_TYPE_LIST_BOX_ROW) static void +update_spinner (EphyPageRow *self) +{ + if (gtk_widget_get_mapped (GTK_WIDGET (self)) && + hdy_tab_page_get_loading (self->page)) + gtk_spinner_start (self->spinner); + else + gtk_spinner_stop (self->spinner); +} + +static void close_clicked_cb (EphyPageRow *self) { hdy_tab_view_close_page (ephy_tab_view_get_tab_view (self->tab_view), self->page); @@ -78,6 +88,7 @@ ephy_page_row_class_init (EphyPageRowClass *klass) gtk_widget_class_bind_template_child (widget_class, EphyPageRow, spinner); gtk_widget_class_bind_template_child (widget_class, EphyPageRow, title); gtk_widget_class_bind_template_child (widget_class, EphyPageRow, close_button); + gtk_widget_class_bind_template_callback (widget_class, update_spinner); gtk_widget_class_bind_template_callback (widget_class, close_clicked_cb); gtk_widget_class_bind_template_callback (widget_class, button_release_event); } @@ -165,6 +176,9 @@ ephy_page_row_new (EphyTabView *tab_view, (GBindingTransformFunc)loading_to_visible_child, NULL, self, NULL); + g_signal_connect_object (page, "notify::loading", + G_CALLBACK (update_spinner), self, + G_CONNECT_SWAPPED); g_signal_connect_object (view, "notify::icon", G_CALLBACK (update_icon_cb), self, diff --git a/src/resources/gtk/page-row.ui b/src/resources/gtk/page-row.ui index f77a0e81b..e8d406349 100644 --- a/src/resources/gtk/page-row.ui +++ b/src/resources/gtk/page-row.ui @@ -4,6 +4,8 @@ <requires lib="gtk+" version="3.16"/> <template class="EphyPageRow" parent="GtkListBoxRow"> <property name="can_focus">True</property> + <signal name="map" handler="update_spinner" swapped="true"/> + <signal name="unmap" handler="update_spinner" swapped="true"/> <child> <object class="GtkEventBox"> <property name="visible">True</property> @@ -34,11 +36,7 @@ <object class="GtkSpinner" id="spinner"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="active">True</property> </object> - <packing> - <property name="position">1</property> - </packing> </child> </object> <packing> |