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:
@@ -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 */
|
||||||
|
|||||||
Reference in New Issue
Block a user