From 2fffe914889142e4088baebccbe38a285f6a23c3 Mon Sep 17 00:00:00 2001 From: Sebastian Keller Date: Thu, 4 Nov 2021 12:42:52 +0100 Subject: [PATCH] dateMenu: Use intervals with non-inclusive ends for date ranges The ical events, we are comparing these intervals to use the first point in time after the end of the event as their end time, while the code in gnome-shell was using the last point in time within the range. This was causing multi-day events ranging from 0:00 to 0:00 to have a trailing "..." shown on the last day. Part-of: --- js/ui/calendar.js | 7 ++----- js/ui/dateMenu.js | 13 +++++++------ 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/js/ui/calendar.js b/js/ui/calendar.js index ae312c6c0..064757905 100644 --- a/js/ui/calendar.js +++ b/js/ui/calendar.js @@ -47,11 +47,8 @@ function _getBeginningOfDay(date) { } function _getEndOfDay(date) { - let ret = new Date(date.getTime()); - ret.setHours(23); - ret.setMinutes(59); - ret.setSeconds(59); - ret.setMilliseconds(999); + const ret = _getBeginningOfDay(date); + ret.setDate(ret.getDate() + 1); return ret; } diff --git a/js/ui/dateMenu.js b/js/ui/dateMenu.js index 33c054c12..f235ba38a 100644 --- a/js/ui/dateMenu.js +++ b/js/ui/dateMenu.js @@ -127,9 +127,10 @@ class EventsSection extends St.Button { } setDate(date) { - const day = [date.getFullYear(), date.getMonth(), date.getDate()]; - this._startDate = new Date(...day); - this._endDate = new Date(...day, 23, 59, 59, 999); + this._startDate = + new Date(date.getFullYear(), date.getMonth(), date.getDate()); + this._endDate = + new Date(date.getFullYear(), date.getMonth(), date.getDate() + 1); this._updateTitle(); this._reloadEvents(); @@ -156,11 +157,11 @@ class EventsSection extends St.Button { const timeSpanDay = GLib.TIME_SPAN_DAY / 1000; const now = new Date(); - if (this._startDate <= now && now <= this._endDate) + if (this._startDate <= now && now < this._endDate) this._title.text = _('Today'); - else if (this._endDate < now && now - this._endDate < timeSpanDay) + else if (this._endDate <= now && now - this._endDate < timeSpanDay) this._title.text = _('Yesterday'); - else if (this._startDate > now && this._startDate - now < timeSpanDay) + else if (this._startDate > now && this._startDate - now <= timeSpanDay) this._title.text = _('Tomorrow'); else if (this._startDate.getFullYear() === now.getFullYear()) this._title.text = this._startDate.toLocaleFormat(sameYearFormat);