summaryrefslogtreecommitdiff
path: root/gnome-extra/cinnamon/files/cinnamon-5.2.7-eds-detection.patch
diff options
context:
space:
mode:
Diffstat (limited to 'gnome-extra/cinnamon/files/cinnamon-5.2.7-eds-detection.patch')
-rw-r--r--gnome-extra/cinnamon/files/cinnamon-5.2.7-eds-detection.patch114
1 files changed, 114 insertions, 0 deletions
diff --git a/gnome-extra/cinnamon/files/cinnamon-5.2.7-eds-detection.patch b/gnome-extra/cinnamon/files/cinnamon-5.2.7-eds-detection.patch
new file mode 100644
index 000000000000..bda0feedceb7
--- /dev/null
+++ b/gnome-extra/cinnamon/files/cinnamon-5.2.7-eds-detection.patch
@@ -0,0 +1,114 @@
+https://github.com/linuxmint/cinnamon/commit/ef463cc0aaedd714f2956daab227aeda1d87897e
+
+From ef463cc0aaedd714f2956daab227aeda1d87897e Mon Sep 17 00:00:00 2001
+From: Michael Webster <miketwebster@gmail.com>
+Date: Wed, 12 Jan 2022 14:50:47 -0500
+Subject: [PATCH] calendar events: Check if evolution-data-server is running
+ before enabling events.
+
+None of the e-d-s libraries actually depend on evolution-data-server
+(which is what provides the backend to these libraries). Also, not
+everyone may want this sort of thing in the first place.
+
+So, check if the e-d-s service we require is active before trying
+to enable event support.
+
+ref: #10597, #10567
+---
+ .../applets/calendar@cinnamon.org/calendar.js | 2 +-
+ .../calendar@cinnamon.org/eventView.js | 43 +++++++++++++++----
+ js/misc/interfaces.js | 4 ++
+ 3 files changed, 39 insertions(+), 10 deletions(-)
+
+diff --git a/files/usr/share/cinnamon/applets/calendar@cinnamon.org/calendar.js b/files/usr/share/cinnamon/applets/calendar@cinnamon.org/calendar.js
+index 460883c063..5078a201ed 100644
+--- a/files/usr/share/cinnamon/applets/calendar@cinnamon.org/calendar.js
++++ b/files/usr/share/cinnamon/applets/calendar@cinnamon.org/calendar.js
+@@ -159,7 +159,7 @@ class Calendar {
+ this.desktop_settings = new Gio.Settings({ schema_id: DESKTOP_SCHEMA });
+ this.desktop_settings.connect("changed::" + FIRST_WEEKDAY_KEY, Lang.bind(this, this._onSettingsChange));
+
+- this.events_enabled = true;
++ this.events_enabled = false;
+ this.events_manager.connect("events-updated", this._events_updated.bind(this));
+ this.events_manager.connect("events-manager-ready", this._update_events_enabled.bind(this));
+ this.events_manager.connect("has-calendars-changed", this._update_events_enabled.bind(this));
+diff --git a/files/usr/share/cinnamon/applets/calendar@cinnamon.org/eventView.js b/files/usr/share/cinnamon/applets/calendar@cinnamon.org/eventView.js
+index 1d1035c605..2e73363fb7 100644
+--- a/files/usr/share/cinnamon/applets/calendar@cinnamon.org/eventView.js
++++ b/files/usr/share/cinnamon/applets/calendar@cinnamon.org/eventView.js
+@@ -17,6 +17,7 @@ const Main = imports.ui.main;
+ const Util = imports.misc.util;
+ const Mainloop = imports.mainloop;
+ const Tweener = imports.ui.tweener;
++const Interfaces = imports.misc.interfaces;
+
+ const STATUS_UNKNOWN = 0;
+ const STATUS_NO_CALENDARS = 1;
+@@ -302,18 +303,42 @@ class EventsManager {
+
+ start_events() {
+ if (this._calendar_server == null) {
+- Cinnamon.CalendarServerProxy.new_for_bus(
+- Gio.BusType.SESSION,
+- // Gio.DBusProxyFlags.NONE,
+- Gio.DBusProxyFlags.DO_NOT_AUTO_START_AT_CONSTRUCTION,
+- "org.cinnamon.CalendarServer",
+- "/org/cinnamon/CalendarServer",
+- null,
+- this._calendar_server_ready.bind(this)
+- );
++ Interfaces.getDBusAsync((proxy, error) => {
++ if (error) {
++ this.log_dbus_error(error);
++ return;
++ }
++
++ proxy.NameHasOwnerRemote("org.gnome.evolution.dataserver.Calendar8", (has_owner, error) => {
++ if (error) {
++ this.log_dbus_error(error);
++ return;
++ }
++
++ if (has_owner[0]) {
++ log("calendar@cinnamon.org: Calendar events supported.")
++
++ Cinnamon.CalendarServerProxy.new_for_bus(
++ Gio.BusType.SESSION,
++ Gio.DBusProxyFlags.DO_NOT_AUTO_START_AT_CONSTRUCTION,
++ "org.cinnamon.CalendarServer",
++ "/org/cinnamon/CalendarServer",
++ null,
++ this._calendar_server_ready.bind(this)
++ );
++ } else {
++ log("calendar@cinnamon.org: No calendar event support (needs evolution-data-server)")
++
++ }
++ });
++ })
+ }
+ }
+
++ log_dbus_error(e) {
++ global.logError(`calendar@cinnamon.org: Could not check for calendar event support: ${e.toString()}`);
++ }
++
+ _calendar_server_ready(obj, res) {
+ try {
+ this._calendar_server = Cinnamon.CalendarServerProxy.new_for_bus_finish(res);
+diff --git a/js/misc/interfaces.js b/js/misc/interfaces.js
+index 8bc6e717d4..6bdb7b78c2 100644
+--- a/js/misc/interfaces.js
++++ b/js/misc/interfaces.js
+@@ -13,6 +13,10 @@ const DBusIface = '\
+ <arg type="s" direction="in" /> \
+ <arg type="s" direction="out" /> \
+ </method> \
++ <method name="NameHasOwner"> \
++ <arg type="s" direction="in" /> \
++ <arg type="b" direction="out" /> \
++ </method> \
+ <method name="ListNames"> \
+ <arg type="as" direction="out" /> \
+ </method> \