week-header: fix various issues with dates

When breaking and merging event widgets, the start
and end dates must be updated to reflect the current
widget state.
This commit is contained in:
Georges Basile Stavracas Neto
2016-12-08 16:39:02 -02:00
parent e474ac1902
commit f7658bede2
+9 -1
View File
@@ -289,8 +289,13 @@ merge_events (GcalWeekHeader *self,
GtkWidget *event, GtkWidget *event,
GtkWidget *to_be_removed) GtkWidget *to_be_removed)
{ {
GDateTime *end_date;
gint deleted_width, current_width; gint deleted_width, current_width;
/* Setup the new end date of the merged event */
end_date = gcal_event_widget_get_date_end (GCAL_EVENT_WIDGET (to_be_removed));
gcal_event_widget_set_date_end (GCAL_EVENT_WIDGET (event), end_date);
/* Retrieve the current sizes */ /* Retrieve the current sizes */
gtk_container_child_get (GTK_CONTAINER (self->grid), gtk_container_child_get (GTK_CONTAINER (self->grid),
to_be_removed, to_be_removed,
@@ -431,6 +436,7 @@ split_event_widget_at_column (GcalWeekHeader *self,
GtkWidget *widget_before; GtkWidget *widget_before;
widget_before = gcal_event_widget_clone (GCAL_EVENT_WIDGET (widget)); widget_before = gcal_event_widget_clone (GCAL_EVENT_WIDGET (widget));
gcal_event_widget_set_date_end (GCAL_EVENT_WIDGET (widget_before), column_date);
gtk_grid_attach (GTK_GRID (self->grid), gtk_grid_attach (GTK_GRID (self->grid),
widget_before, widget_before,
@@ -445,13 +451,14 @@ split_event_widget_at_column (GcalWeekHeader *self,
old_width = new_width; old_width = new_width;
left_attach = column; left_attach = column;
/* Update the current event position and size */ /* Update the current event position, size and start date */
gtk_container_child_set (GTK_CONTAINER (self->grid), gtk_container_child_set (GTK_CONTAINER (self->grid),
widget, widget,
"left_attach", left_attach, "left_attach", left_attach,
"width", new_width, "width", new_width,
NULL); NULL);
gcal_event_widget_set_date_start (GCAL_EVENT_WIDGET (widget), column_date);
gtk_widget_set_visible (widget, is_event_visible (self, left_attach, top_attach - 1)); gtk_widget_set_visible (widget, is_event_visible (self, left_attach, top_attach - 1));
} }
@@ -639,6 +646,7 @@ add_event_to_grid (GcalWeekHeader *self,
1, 1,
1); 1);
gcal_event_widget_set_date_end (GCAL_EVENT_WIDGET (widget), cloned_widget_start_dt);
gcal_event_widget_set_date_start (GCAL_EVENT_WIDGET (cloned_widget), cloned_widget_start_dt); gcal_event_widget_set_date_start (GCAL_EVENT_WIDGET (cloned_widget), cloned_widget_start_dt);
/* From now on, let's modify this widget */ /* From now on, let's modify this widget */