[gnome-shell] calendar: Rebuild the calendar when the time zone changes
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] calendar: Rebuild the calendar when the time zone changes
- Date: Wed, 4 Oct 2017 14:45:31 +0000 (UTC)
commit 59fc26f8214e8cad343ef464c6e9fdf61ce2aea1
Author: Martin Andersson <g02maran mail com>
Date: Thu Aug 13 23:57:49 2015 +0100
calendar: Rebuild the calendar when the time zone changes
A time zone change can cause the date to change so we need to clear
SpiderMonkey's time zone cache and rebuild the calendar.
https://bugzilla.gnome.org/show_bug.cgi?id=678507
js/ui/calendar.js | 7 +++++++
js/ui/dateMenu.js | 11 +++++++++++
2 files changed, 18 insertions(+), 0 deletions(-)
---
diff --git a/js/ui/calendar.js b/js/ui/calendar.js
index 3db612f..efa3f44 100644
--- a/js/ui/calendar.js
+++ b/js/ui/calendar.js
@@ -428,6 +428,13 @@ var Calendar = new Lang.Class({
this.emit('selected-date-changed', new Date(this._selectedDate));
},
+ updateTimeZone: function() {
+ // The calendar need to be rebuilt after a time zone update because
+ // the date might have changed.
+ this._rebuildCalendar();
+ this._update();
+ },
+
_buildHeader: function() {
let layout = this.actor.layout_manager;
let offsetCols = this._useWeekdate ? 1 : 0;
diff --git a/js/ui/dateMenu.js b/js/ui/dateMenu.js
index 0aad37e..4f46a0d 100644
--- a/js/ui/dateMenu.js
+++ b/js/ui/dateMenu.js
@@ -22,6 +22,7 @@ const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu;
const Calendar = imports.ui.calendar;
const Weather = imports.misc.weather;
+const System = imports.system;
function _isToday(date) {
let now = new Date();
@@ -545,6 +546,7 @@ var DateMenuButton = new Lang.Class({
this._clock = new GnomeDesktop.WallClock();
this._clock.bind_property('clock', this._clockDisplay, 'text', GObject.BindingFlags.SYNC_CREATE);
+ this._clock.connect('notify::timezone', Lang.bind(this, this._updateTimeZone));
Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
this._sessionUpdated();
@@ -564,6 +566,15 @@ var DateMenuButton = new Lang.Class({
this._eventSource = eventSource;
},
+ _updateTimeZone: function() {
+ // SpiderMonkey caches the time zone so we must explicitly clear it
+ // before we can update the calendar, see
+ // https://bugzilla.gnome.org/show_bug.cgi?id=678507
+ System.clearDateCaches();
+
+ this._calendar.updateTimeZone();
+ },
+
_sessionUpdated: function() {
let eventSource;
let showEvents = Main.sessionMode.showCalendarEvents;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]