summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Mikhaylenko <alexm@gnome.org>2021-02-08 18:22:54 +0500
committerMichael Catanzaro <mcatanzaro@gnome.org>2021-02-08 15:16:41 +0000
commitcd24fadc7182d7ef44e3787d721016ef1e1a7b27 (patch)
tree7a502e4a8bdfb03a891241bfaaeb0ba8a9fd8bff
parent132270a88806f29749cec214882efb44e2b0f12b (diff)
downloadepiphany-cd24fadc7182d7ef44e3787d721016ef1e1a7b27.tar.gz
page-row: Stop spinner when not visible
-rw-r--r--src/ephy-page-row.c14
-rw-r--r--src/resources/gtk/page-row.ui6
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>