[gnome-calendar/gnome-3-28] date-chooser: Ensure selected day is contained in new month



commit eb67eff519fe4fc849c704ff6963f94044ad8272
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Tue Jul 24 22:36:43 2018 +0000

    date-chooser: Ensure selected day is contained in new month
    
    When navigating through the dates of GcalDateChooser, if we
    select a day (e.g. 31) that is not contained inside the next
    or previous month, Calendar crashes.
    
    Fix that by ensuring that the selected day is always contained
    in the new month.
    
    https://gitlab.gnome.org/GNOME/gnome-calendar/issues/284
    
    
    (cherry picked from commit 7e9ef5e055313ebe1c89f61dc7a6b5eb1a12b67a)

 src/gcal-date-chooser.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)
---
diff --git a/src/gcal-date-chooser.c b/src/gcal-date-chooser.c
index 238e1633..4e8688ca 100644
--- a/src/gcal-date-chooser.c
+++ b/src/gcal-date-chooser.c
@@ -396,16 +396,18 @@ calendar_get_property (GObject    *obj,
 static void
 multi_choice_changed (GcalDateChooser *self)
 {
-  GDateTime *date;
+  g_autoptr (GDateTime) date = NULL;
   gint year, month, day;
 
   year = gcal_multi_choice_get_value (GCAL_MULTI_CHOICE (self->year_choice));
   month = gcal_multi_choice_get_value (GCAL_MULTI_CHOICE (self->month_choice)) + 1;
-  g_date_time_get_ymd (self->date, NULL, NULL, &day);
+  day = g_date_time_get_day_of_month (self->date);
+
+  /* Make sure the day is valid at that month */
+  day = MIN (day, month_length[leap (year)][month]);
 
   date = g_date_time_new_local (year, month, day, 1, 1, 1);
   gcal_date_chooser_set_date (self, date);
-  g_date_time_unref (date);
 }
 
 static void


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]