views: use the new GcalClock to redraw

Instead of having each view manage it's own timeout (or
even worse, making GcalWindow manage it), use the newly
introduced GcalClock API to do that.
This commit is contained in:
Georges Basile Stavracas Neto
2017-05-16 14:57:15 -03:00
parent 15563607dd
commit 09fe510937
5 changed files with 20 additions and 70 deletions
-24
View File
@@ -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)", "<Ctrl>1")
gcal_window_add_accelerator (app, "win.change-view(2)", "<Ctrl>2");
gcal_window_add_accelerator (app, "win.change-view(3)", "<Ctrl>3");
update_current_date (self);
}
/* Public API */
+5
View File
@@ -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);
}
+5 -23
View File
@@ -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
+5 -23
View File
@@ -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
+5
View File
@@ -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