From 84c411e50538ae41486b5fb1f58c1d6470cc3279 Mon Sep 17 00:00:00 2001 From: Georges Basile Stavracas Neto Date: Wed, 14 Dec 2016 17:11:37 -0200 Subject: [PATCH] week-grid: fix inversed selection on RTL languages --- src/views/gcal-week-grid.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/views/gcal-week-grid.c b/src/views/gcal-week-grid.c index c8fc94cb..e377ae2f 100644 --- a/src/views/gcal-week-grid.c +++ b/src/views/gcal-week-grid.c @@ -840,6 +840,8 @@ gcal_week_grid_button_release (GtkWidget *widget, gdouble x, y; gint column; gint minute; + gint start_cell; + gint end_cell; gint out_x; gint out_y; @@ -854,6 +856,16 @@ gcal_week_grid_button_release (GtkWidget *widget, self->selection_end = (column * MINUTES_PER_DAY + minute) / 30; + start_cell = self->selection_start; + end_cell = self->selection_end; + + if (start_cell > end_cell) + { + start_cell = start_cell + end_cell; + end_cell = start_cell - end_cell; + start_cell = start_cell - end_cell; + } + gtk_widget_queue_draw (widget); /* Fake the week view's event so we can control the X and Y values */ @@ -862,13 +874,13 @@ gcal_week_grid_button_release (GtkWidget *widget, if (ltr) { - start = g_date_time_add_minutes (week_start, self->selection_start * 30); - end = g_date_time_add_minutes (week_start, (self->selection_end + 1) * 30); + start = g_date_time_add_minutes (week_start, start_cell * 30); + end = g_date_time_add_minutes (week_start, (end_cell + 1) * 30); } else { start = g_date_time_add_minutes (week_start, MAX_MINUTES - column * MINUTES_PER_DAY + minute); - end = g_date_time_add_minutes (week_start, MAX_MINUTES - column * MINUTES_PER_DAY + (self->selection_end + 1) * 30); + end = g_date_time_add_minutes (week_start, MAX_MINUTES - column * MINUTES_PER_DAY + (end_cell + 1) * 30); } x = round ((column + 0.5) * (alloc.width / 7.0));