[gnome-shell] dateMenu: Use intervals with non-inclusive ends for date ranges



commit 2fffe914889142e4088baebccbe38a285f6a23c3
Author: Sebastian Keller <skeller gnome org>
Date:   Thu Nov 4 12:42:52 2021 +0100

    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: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2023>

 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 ae312c6c08..0647579053 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 33c054c12f..f235ba38a2 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);


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