diff --git a/src/gcal-window.c b/src/gcal-window.c index 6007c878..ac726692 100644 --- a/src/gcal-window.c +++ b/src/gcal-window.c @@ -159,7 +159,6 @@ struct _GcalWindow gint refresh_timeout; gint refresh_timeout_id; gint open_edit_dialog_timeout_id; - gint update_current_date_timeout_id; /* temp to keep event_creation */ gboolean open_edit_dialog; @@ -492,21 +491,6 @@ key_pressed (GtkWidget *widget, event); } -static gboolean -update_current_date (GcalWindow *self) -{ - GCAL_ENTRY; - - if (self->update_current_date_timeout_id == 0) - self->update_current_date_timeout_id = g_timeout_add_seconds (60, (GSourceFunc) update_current_date, self); - - gtk_widget_queue_draw (self->views[GCAL_WINDOW_VIEW_WEEK]); - gtk_widget_queue_draw (self->views[GCAL_WINDOW_VIEW_MONTH]); - gtk_widget_queue_draw (self->views[GCAL_WINDOW_VIEW_YEAR]); - - GCAL_RETURN (G_SOURCE_CONTINUE); -} - static void search_event_selected (GcalSearchView *search_view, icaltimetype *date, @@ -1293,12 +1277,6 @@ gcal_window_finalize (GObject *object) window->open_edit_dialog_timeout_id = 0; } - if (window->update_current_date_timeout_id > 0) - { - g_source_remove (window->update_current_date_timeout_id); - window->update_current_date_timeout_id = 0; - } - /* If we have a queued event to delete, remove it now */ if (window->event_to_delete) { @@ -1657,8 +1635,6 @@ gcal_window_init (GcalWindow *self) gcal_window_add_accelerator (app, "win.change-view(1)", "1") gcal_window_add_accelerator (app, "win.change-view(2)", "2"); gcal_window_add_accelerator (app, "win.change-view(3)", "3"); - - update_current_date (self); } /* Public API */ diff --git a/src/views/gcal-month-view.c b/src/views/gcal-month-view.c index 80db0d81..280b0421 100644 --- a/src/views/gcal-month-view.c +++ b/src/views/gcal-month-view.c @@ -2307,4 +2307,9 @@ gcal_month_view_set_manager (GcalMonthView *self, g_return_if_fail (GCAL_IS_MONTH_VIEW (self)); self->manager = manager; + + g_signal_connect_swapped (gcal_manager_get_clock (manager), + "day-changed", + G_CALLBACK (gtk_widget_queue_draw), + self); } diff --git a/src/views/gcal-week-grid.c b/src/views/gcal-week-grid.c index 68d0d871..20ddb48e 100644 --- a/src/views/gcal-week-grid.c +++ b/src/views/gcal-week-grid.c @@ -59,7 +59,6 @@ struct _GcalWeekGrid GcalRangeTree *events; gboolean children_changed; - gint redraw_timeout_id; /* * These fields are "cells" rather than minutes. Each cell @@ -250,12 +249,6 @@ gcal_week_grid_finalize (GObject *object) g_clear_pointer (&self->events, gcal_range_tree_unref); g_clear_pointer (&self->active_date, g_free); - if (self->redraw_timeout_id > 0) - { - g_source_remove (self->redraw_timeout_id); - self->redraw_timeout_id = 0; - } - G_OBJECT_CLASS (gcal_week_grid_parent_class)->finalize (object); } @@ -418,14 +411,6 @@ get_today_column (GcalWeekGrid *self) return days_diff; } -static gboolean -on_redraw_timeout_cb (gpointer data) -{ - gtk_widget_queue_draw (data); - - return G_SOURCE_CONTINUE; -} - static gboolean gcal_week_grid_draw (GtkWidget *widget, cairo_t *cr) @@ -588,14 +573,6 @@ gcal_week_grid_draw (GtkWidget *widget, gtk_style_context_restore (context); } - /* Fire the redraw timeout if needed */ - if (self->redraw_timeout_id == 0) - { - self->redraw_timeout_id = g_timeout_add_seconds (5, - on_redraw_timeout_cb, - self); - } - return FALSE; } @@ -1124,6 +1101,11 @@ gcal_week_grid_set_manager (GcalWeekGrid *self, g_return_if_fail (GCAL_IS_WEEK_GRID (self)); self->manager = manager; + + g_signal_connect_swapped (gcal_manager_get_clock (manager), + "minute-changed", + G_CALLBACK (gtk_widget_queue_draw), + self); } void diff --git a/src/views/gcal-week-header.c b/src/views/gcal-week-header.c index d305b83d..9d10841a 100644 --- a/src/views/gcal-week-header.c +++ b/src/views/gcal-week-header.c @@ -67,7 +67,6 @@ struct _GcalWeekHeader gboolean expanded; gboolean use_24h_format; - gint redraw_timeout_id; icaltimetype *active_date; @@ -976,14 +975,6 @@ on_expand_action_activated (GcalWeekHeader *self, header_expand (self); } -static gboolean -on_redraw_timeout_cb (gpointer data) -{ - gtk_widget_queue_draw (data); - - return G_SOURCE_CONTINUE; -} - /* Drawing area content and size */ static gdouble get_weekday_names_height (GtkWidget *widget) @@ -1038,12 +1029,6 @@ gcal_week_header_finalize (GObject *object) g_clear_pointer (&self->active_date, g_free); - if (self->redraw_timeout_id > 0) - { - g_source_remove (self->redraw_timeout_id); - self->redraw_timeout_id = 0; - } - for (i = 0; i < 7; i++) g_list_free (self->events[i]); } @@ -1292,14 +1277,6 @@ gcal_week_header_draw (GtkWidget *widget, GTK_WIDGET_CLASS (gcal_week_header_parent_class)->draw (widget, cr); - /* Fire the redraw timeout if needed */ - if (self->redraw_timeout_id == 0) - { - self->redraw_timeout_id = g_timeout_add_seconds (5, - (GSourceFunc) on_redraw_timeout_cb, - self); - } - g_clear_pointer (&week_start, g_date_time_unref); g_clear_pointer (&week_end, g_date_time_unref); @@ -1526,6 +1503,11 @@ gcal_week_header_set_manager (GcalWeekHeader *self, g_return_if_fail (GCAL_IS_WEEK_HEADER (self)); self->manager = manager; + + g_signal_connect_swapped (gcal_manager_get_clock (manager), + "day-changed", + G_CALLBACK (gtk_widget_queue_draw), + self); } void diff --git a/src/views/gcal-year-view.c b/src/views/gcal-year-view.c index 982c0c66..0b0554ec 100644 --- a/src/views/gcal-year-view.c +++ b/src/views/gcal-year-view.c @@ -2035,6 +2035,11 @@ gcal_year_view_set_manager (GcalYearView *year_view, GcalManager *manager) { year_view->manager = manager; + + g_signal_connect_swapped (gcal_manager_get_clock (manager), + "day-changed", + G_CALLBACK (gtk_widget_queue_draw), + year_view->navigator); } void