[gnome-shell] Status Menu: use Gnome Session DBus for shutdown and logout
- From: Giovanni Campagna <gcampagna src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] Status Menu: use Gnome Session DBus for shutdown and logout
- Date: Sat, 12 Mar 2011 22:47:59 +0000 (UTC)
commit 73274e201bd7f4617e0d40360b50b1bdc7104512
Author: Giovanni Campagna <gcampagna src gnome org>
Date: Sat Mar 12 21:34:01 2011 +0100
Status Menu: use Gnome Session DBus for shutdown and logout
Around 2.91.90, gnome-session-save was renamed to gnome-session-quit.
This commit restores compatibility with the older gnome-session, for
those testing under GNOME 2.32 or below, by calling the DBus methods
directly.
https://bugzilla.gnome.org/show_bug.cgi?id=644591
js/misc/gnomeSession.js | 21 +++++++++++++++++++++
js/ui/statusMenu.js | 5 +++--
2 files changed, 24 insertions(+), 2 deletions(-)
---
diff --git a/js/misc/gnomeSession.js b/js/misc/gnomeSession.js
index ce4e7e9..1a52a6f 100644
--- a/js/misc/gnomeSession.js
+++ b/js/misc/gnomeSession.js
@@ -102,3 +102,24 @@ Inhibitor.prototype = {
};
DBus.proxifyPrototype(Inhibitor.prototype, InhibitorIface);
Signals.addSignalMethods(Inhibitor.prototype);
+
+
+// Not the full interface, only the methods we use
+const SessionManagerIface = {
+ name: 'org.gnome.SessionManager',
+ methods: [
+ { name: 'Logout', inSignature: 'u', outSignature: '' },
+ { name: 'Shutdown', inSignature: '', outSignature: '' }
+ ]
+};
+
+function SessionManager() {
+ this._init();
+}
+
+SessionManager.prototype = {
+ _init: function() {
+ DBus.session.proxifyObject(this, 'org.gnome.SessionManager', '/org/gnome/SessionManager');
+ }
+};
+DBus.proxifyPrototype(SessionManager.prototype, SessionManagerIface);
\ No newline at end of file
diff --git a/js/ui/statusMenu.js b/js/ui/statusMenu.js
index 9c251b8..2a04506 100644
--- a/js/ui/statusMenu.js
+++ b/js/ui/statusMenu.js
@@ -50,6 +50,7 @@ StatusMenuButton.prototype = {
this._user = this._gdm.get_user(GLib.get_user_name());
this._presence = new GnomeSession.Presence();
this._presenceItems = {};
+ this._session = new GnomeSession.SessionManager();
this._account_mgr = Tp.AccountManager.dup()
@@ -210,7 +211,7 @@ StatusMenuButton.prototype = {
_onQuitSessionActivate: function() {
Main.overview.hide();
- Util.spawn(['gnome-session-quit', '--logout']);
+ this._session.LogoutRemote(0);
},
_onSuspendOrPowerOffActivate: function() {
@@ -222,7 +223,7 @@ StatusMenuButton.prototype = {
this._upClient.suspend_sync(null);
}));
} else {
- Util.spawn(['gnome-session-quit', '--power-off']);
+ this._session.ShutdownRemote();
}
},
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]