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:
@@ -159,7 +159,6 @@ struct _GcalWindow
|
|||||||
gint refresh_timeout;
|
gint refresh_timeout;
|
||||||
gint refresh_timeout_id;
|
gint refresh_timeout_id;
|
||||||
gint open_edit_dialog_timeout_id;
|
gint open_edit_dialog_timeout_id;
|
||||||
gint update_current_date_timeout_id;
|
|
||||||
|
|
||||||
/* temp to keep event_creation */
|
/* temp to keep event_creation */
|
||||||
gboolean open_edit_dialog;
|
gboolean open_edit_dialog;
|
||||||
@@ -492,21 +491,6 @@ key_pressed (GtkWidget *widget,
|
|||||||
event);
|
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
|
static void
|
||||||
search_event_selected (GcalSearchView *search_view,
|
search_event_selected (GcalSearchView *search_view,
|
||||||
icaltimetype *date,
|
icaltimetype *date,
|
||||||
@@ -1293,12 +1277,6 @@ gcal_window_finalize (GObject *object)
|
|||||||
window->open_edit_dialog_timeout_id = 0;
|
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 we have a queued event to delete, remove it now */
|
||||||
if (window->event_to_delete)
|
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(1)", "<Ctrl>1")
|
||||||
gcal_window_add_accelerator (app, "win.change-view(2)", "<Ctrl>2");
|
gcal_window_add_accelerator (app, "win.change-view(2)", "<Ctrl>2");
|
||||||
gcal_window_add_accelerator (app, "win.change-view(3)", "<Ctrl>3");
|
gcal_window_add_accelerator (app, "win.change-view(3)", "<Ctrl>3");
|
||||||
|
|
||||||
update_current_date (self);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Public API */
|
/* Public API */
|
||||||
|
|||||||
@@ -2307,4 +2307,9 @@ gcal_month_view_set_manager (GcalMonthView *self,
|
|||||||
g_return_if_fail (GCAL_IS_MONTH_VIEW (self));
|
g_return_if_fail (GCAL_IS_MONTH_VIEW (self));
|
||||||
|
|
||||||
self->manager = manager;
|
self->manager = manager;
|
||||||
|
|
||||||
|
g_signal_connect_swapped (gcal_manager_get_clock (manager),
|
||||||
|
"day-changed",
|
||||||
|
G_CALLBACK (gtk_widget_queue_draw),
|
||||||
|
self);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,7 +59,6 @@ struct _GcalWeekGrid
|
|||||||
GcalRangeTree *events;
|
GcalRangeTree *events;
|
||||||
|
|
||||||
gboolean children_changed;
|
gboolean children_changed;
|
||||||
gint redraw_timeout_id;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* These fields are "cells" rather than minutes. Each cell
|
* 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->events, gcal_range_tree_unref);
|
||||||
g_clear_pointer (&self->active_date, g_free);
|
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);
|
G_OBJECT_CLASS (gcal_week_grid_parent_class)->finalize (object);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -418,14 +411,6 @@ get_today_column (GcalWeekGrid *self)
|
|||||||
return days_diff;
|
return days_diff;
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
|
||||||
on_redraw_timeout_cb (gpointer data)
|
|
||||||
{
|
|
||||||
gtk_widget_queue_draw (data);
|
|
||||||
|
|
||||||
return G_SOURCE_CONTINUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
gcal_week_grid_draw (GtkWidget *widget,
|
gcal_week_grid_draw (GtkWidget *widget,
|
||||||
cairo_t *cr)
|
cairo_t *cr)
|
||||||
@@ -588,14 +573,6 @@ gcal_week_grid_draw (GtkWidget *widget,
|
|||||||
gtk_style_context_restore (context);
|
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;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1124,6 +1101,11 @@ gcal_week_grid_set_manager (GcalWeekGrid *self,
|
|||||||
g_return_if_fail (GCAL_IS_WEEK_GRID (self));
|
g_return_if_fail (GCAL_IS_WEEK_GRID (self));
|
||||||
|
|
||||||
self->manager = manager;
|
self->manager = manager;
|
||||||
|
|
||||||
|
g_signal_connect_swapped (gcal_manager_get_clock (manager),
|
||||||
|
"minute-changed",
|
||||||
|
G_CALLBACK (gtk_widget_queue_draw),
|
||||||
|
self);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -67,7 +67,6 @@ struct _GcalWeekHeader
|
|||||||
gboolean expanded;
|
gboolean expanded;
|
||||||
|
|
||||||
gboolean use_24h_format;
|
gboolean use_24h_format;
|
||||||
gint redraw_timeout_id;
|
|
||||||
|
|
||||||
icaltimetype *active_date;
|
icaltimetype *active_date;
|
||||||
|
|
||||||
@@ -976,14 +975,6 @@ on_expand_action_activated (GcalWeekHeader *self,
|
|||||||
header_expand (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 */
|
/* Drawing area content and size */
|
||||||
static gdouble
|
static gdouble
|
||||||
get_weekday_names_height (GtkWidget *widget)
|
get_weekday_names_height (GtkWidget *widget)
|
||||||
@@ -1038,12 +1029,6 @@ gcal_week_header_finalize (GObject *object)
|
|||||||
|
|
||||||
g_clear_pointer (&self->active_date, g_free);
|
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++)
|
for (i = 0; i < 7; i++)
|
||||||
g_list_free (self->events[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);
|
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_start, g_date_time_unref);
|
||||||
g_clear_pointer (&week_end, 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));
|
g_return_if_fail (GCAL_IS_WEEK_HEADER (self));
|
||||||
|
|
||||||
self->manager = manager;
|
self->manager = manager;
|
||||||
|
|
||||||
|
g_signal_connect_swapped (gcal_manager_get_clock (manager),
|
||||||
|
"day-changed",
|
||||||
|
G_CALLBACK (gtk_widget_queue_draw),
|
||||||
|
self);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -2035,6 +2035,11 @@ gcal_year_view_set_manager (GcalYearView *year_view,
|
|||||||
GcalManager *manager)
|
GcalManager *manager)
|
||||||
{
|
{
|
||||||
year_view->manager = 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
|
void
|
||||||
|
|||||||
Reference in New Issue
Block a user