diff options
author | Georges Basile Stavracas Neto <georges.stavracas@gmail.com> | 2023-03-08 09:56:23 -0300 |
---|---|---|
committer | Georges Basile Stavracas Neto <georges.stavracas@gmail.com> | 2023-03-16 12:25:15 +0000 |
commit | b93aa0dd23968036e68aa30961f4160354aa35b1 (patch) | |
tree | 99fbdbf36318af8f10b832a7f370efda6cb6631d /src | |
parent | 98dff07ee7fe2fc7e43626b3477e63584a6f8317 (diff) | |
download | gnome-calendar-b93aa0dd23968036e68aa30961f4160354aa35b1.tar.gz |
calendar-button: Stop spinning when not synchronizing
GtkSpinner queues relayouts even when the stack is not displaying
it, and this causes excessive redrawing. This button design looks
obsolete and should eventually be reworked, but for now, let's
just stop spinning when the spinner is invisible.
Closes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/971
Diffstat (limited to 'src')
-rw-r--r-- | src/gui/gcal-calendar-button.c | 10 | ||||
-rw-r--r-- | src/gui/gcal-calendar-button.ui | 1 |
2 files changed, 6 insertions, 5 deletions
diff --git a/src/gui/gcal-calendar-button.c b/src/gui/gcal-calendar-button.c index eae6bc40..3c2e3b71 100644 --- a/src/gui/gcal-calendar-button.c +++ b/src/gui/gcal-calendar-button.c @@ -31,6 +31,7 @@ struct _GcalCalendarButton GtkWidget *calendar_listbox; GtkStack *icon_stack; + GtkSpinner *refreshing_spinner; GcalContext *context; @@ -168,16 +169,16 @@ icon_change_timeout_cb (gpointer data) { GcalCalendarButton *self; GcalManager *manager; + gboolean synchronizing; self = GCAL_CALENDAR_BUTTON (data); manager = gcal_context_get_manager (self->context); + synchronizing = gcal_manager_get_synchronizing (manager); g_debug ("Updating calendar icon to spinner"); - if (gcal_manager_get_synchronizing (manager)) - gtk_stack_set_visible_child_name (self->icon_stack, "spinner"); - else - gtk_stack_set_visible_child_name (self->icon_stack, "icon"); + gtk_stack_set_visible_child_name (self->icon_stack, synchronizing ? "spinner" : "icon"); + gtk_spinner_set_spinning (self->refreshing_spinner, synchronizing); self->icon_changed_source_id = 0; return G_SOURCE_REMOVE; @@ -355,6 +356,7 @@ gcal_calendar_button_class_init (GcalCalendarButtonClass *klass) gtk_widget_class_bind_template_child (widget_class, GcalCalendarButton, calendar_listbox); gtk_widget_class_bind_template_child (widget_class, GcalCalendarButton, icon_stack); + gtk_widget_class_bind_template_child (widget_class, GcalCalendarButton, refreshing_spinner); gtk_widget_class_bind_template_callback (widget_class, on_listbox_row_activated_cb); } diff --git a/src/gui/gcal-calendar-button.ui b/src/gui/gcal-calendar-button.ui index fe1f1714..c77eb5a7 100644 --- a/src/gui/gcal-calendar-button.ui +++ b/src/gui/gcal-calendar-button.ui @@ -38,7 +38,6 @@ <property name="name">spinner</property> <property name="child"> <object class="GtkSpinner" id="refreshing_spinner"> - <property name="spinning">True</property> <property name="tooltip_text" translatable="yes" context="tooltip">Synchronizing remote calendars…</property> </object> </property> |