[gnome-shell] Status Menu: use Gnome Session DBus for shutdown and logout



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]