[gnome-session] manager: honor no confirmation logout mode for shell



commit ff337d253a475a79337e0f610e4d6027095721f4
Author: Ray Strode <rstrode redhat com>
Date:   Thu Feb 17 16:07:04 2011 -0500

    manager: honor no confirmation logout mode for shell
    
    We were previously ignoring the bit.  This commit makes us
    look at it and honor it.
    
    Based on feedback from vuntz
    
    https://bugzilla.gnome.org/show_bug.cgi?id=637188

 gnome-session/gsm-manager.c |   32 ++++++++++++++++++++++++--------
 1 files changed, 24 insertions(+), 8 deletions(-)
---
diff --git a/gnome-session/gsm-manager.c b/gnome-session/gsm-manager.c
index 363fbbb..ada35e4 100644
--- a/gnome-session/gsm-manager.c
+++ b/gnome-session/gsm-manager.c
@@ -1162,7 +1162,9 @@ end_session_or_show_fallback_dialog (GsmManager *manager)
 static void
 end_session_or_show_shell_dialog (GsmManager *manager)
 {
+        gboolean logout_prompt;
         GsmShellEndSessionDialogType type;
+        gboolean logout_inhibited;
 
         switch (manager->priv->logout_type) {
         case GSM_MANAGER_LOGOUT_LOGOUT:
@@ -1185,21 +1187,35 @@ end_session_or_show_shell_dialog (GsmManager *manager)
                 break;
         }
 
-        if (! gsm_manager_is_logout_inhibited (manager)) {
-                gboolean logout_prompt;
+        logout_inhibited = gsm_manager_is_logout_inhibited (manager);
+        logout_prompt = g_settings_get_boolean (manager->priv->settings,
+                                                KEY_LOGOUT_PROMPT);
 
-                logout_prompt = g_settings_get_boolean (manager->priv->settings,
-                                                        KEY_LOGOUT_PROMPT);
-                if (logout_prompt) {
+        switch (manager->priv->logout_mode) {
+        case GSM_MANAGER_LOGOUT_MODE_NORMAL:
+                if (logout_inhibited || logout_prompt) {
                         show_shell_end_session_dialog (manager, type);
-                        return;
                 } else {
                         end_phase (manager);
                 }
-                return;
+                break;
+
+        case GSM_MANAGER_LOGOUT_MODE_NO_CONFIRMATION:
+                if (logout_inhibited) {
+                        show_shell_end_session_dialog (manager, type);
+                } else {
+                        end_phase (manager);
+                }
+                break;
+
+        case GSM_MANAGER_LOGOUT_MODE_FORCE:
+                end_phase (manager);
+                break;
+        default:
+                g_assert_not_reached ();
+                break;
         }
 
-        show_shell_end_session_dialog (manager, type);
 }
 
 static void



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