week-header, week-grid: update drawing when time changes
When minutes change, the week grid should update the today strip if it's visible and, if the day change, week header should update the blue week name.
This commit is contained in:
@@ -58,6 +58,7 @@ struct _GcalWeekGrid
|
|||||||
GcalRangeTree *events;
|
GcalRangeTree *events;
|
||||||
|
|
||||||
gboolean children_changed;
|
gboolean children_changed;
|
||||||
|
gint redraw_timeout_id;
|
||||||
|
|
||||||
GcalManager *manager;
|
GcalManager *manager;
|
||||||
};
|
};
|
||||||
@@ -172,6 +173,12 @@ gcal_week_grid_finalize (GObject *object)
|
|||||||
g_clear_pointer (&self->active_date, g_free);
|
g_clear_pointer (&self->active_date, g_free);
|
||||||
g_clear_pointer (&self->current_date, g_free);
|
g_clear_pointer (&self->current_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);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -364,6 +371,7 @@ gcal_week_grid_draw (GtkWidget *widget,
|
|||||||
{
|
{
|
||||||
GtkStyleContext *context;
|
GtkStyleContext *context;
|
||||||
GtkStateFlags state;
|
GtkStateFlags state;
|
||||||
|
GcalWeekGrid *self;
|
||||||
GtkBorder padding;
|
GtkBorder padding;
|
||||||
GdkRGBA color;
|
GdkRGBA color;
|
||||||
|
|
||||||
@@ -372,6 +380,7 @@ gcal_week_grid_draw (GtkWidget *widget,
|
|||||||
PangoLayout *layout;
|
PangoLayout *layout;
|
||||||
PangoFontDescription *font_desc;
|
PangoFontDescription *font_desc;
|
||||||
|
|
||||||
|
self = GCAL_WEEK_GRID (widget);
|
||||||
context = gtk_widget_get_style_context (widget);
|
context = gtk_widget_get_style_context (widget);
|
||||||
state = gtk_widget_get_state_flags (widget);
|
state = gtk_widget_get_state_flags (widget);
|
||||||
|
|
||||||
@@ -450,6 +459,14 @@ gcal_week_grid_draw (GtkWidget *widget,
|
|||||||
|
|
||||||
GTK_WIDGET_CLASS (gcal_week_grid_parent_class)->draw (widget, cr);
|
GTK_WIDGET_CLASS (gcal_week_grid_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) gtk_widget_queue_draw,
|
||||||
|
self);
|
||||||
|
}
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -64,6 +64,7 @@ struct _GcalWeekHeader
|
|||||||
gboolean expanded;
|
gboolean expanded;
|
||||||
|
|
||||||
gboolean use_24h_format;
|
gboolean use_24h_format;
|
||||||
|
gint redraw_timeout_id;
|
||||||
|
|
||||||
icaltimetype *active_date;
|
icaltimetype *active_date;
|
||||||
icaltimetype *current_date;
|
icaltimetype *current_date;
|
||||||
@@ -921,6 +922,12 @@ gcal_week_header_finalize (GObject *object)
|
|||||||
g_clear_pointer (&self->active_date, g_free);
|
g_clear_pointer (&self->active_date, g_free);
|
||||||
g_clear_pointer (&self->current_date, g_free);
|
g_clear_pointer (&self->current_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]);
|
||||||
}
|
}
|
||||||
@@ -1143,6 +1150,14 @@ 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) gtk_widget_queue_draw,
|
||||||
|
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);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user