GNOME Bugzilla – Bug 702575
session end handling is broken
Last modified: 2013-06-24 03:39:32 UTC
Steps to reproduce: 1. Open gedit with an unsaved document 2. Click Log out in the shell menu 3. In the dialog click on gedit 4. Close gedit without saving Now you are stuck in the query end session phase Further clicks on the Log out menuitem don't have any effect
Created attachment 247205 [details] [review] Re-show the end session dialog when an inhibitor disappears The current code shows the dialog again when a client disappears. If we don't show the dialog again on inhibitor changes, we can get stuck in the query-end-session phase when applications take inhibitors without registering as a client. gedit does this, for example.
Review of attachment 247205 [details] [review]: to give a little more details on what's going on here... gedit no longer registers with the session. It does register an inhibitor, though. We currently only reshow the dialog when a registered client goes away. Since gedit is never registered, we don't reshow the dialog. This patch makes it so that we reshow the dialog when the dbus connection associated with an inhibitor is closed, regardless of whether the app on the other end of that connection is registered. I chatted with mccann a bit about this. The consensus following that conversation was we shouldn't be reshowing the dialog at all. If a user jumps to an app then we should cancel log out. they can't reinitiate log out again after having dealt with it. That will require reverting commit f3d824105ed96271b8284fde510594af64164d34 and changing the shell to do a cancel request itself when something is chosen from the list. ::: gnome-session/gsm-manager.c @@ +1922,3 @@ + } else { + end_session_or_show_fallback_dialog (manager); + } so this does mean we'll call end_session_or_show_shell_dialog twice in the case where an app is registered with the session manager. That should be harmless, though, i think.
Comment on attachment 247205 [details] [review] Re-show the end session dialog when an inhibitor disappears (of course, this bug fix can go in before we fix the implementation to match the design)
Attachment 247205 [details] pushed as 24d7bd7 - Re-show the end session dialog when an inhibitor disappears