File 898359-fix-clutter-modal-dialog-integration-with-screenshield.patch of Package gnome-shell.1952
Index: gnome-shell-3.10.4/js/ui/endSessionDialog.js
===================================================================
--- gnome-shell-3.10.4.orig/js/ui/endSessionDialog.js
+++ gnome-shell-3.10.4/js/ui/endSessionDialog.js
@@ -206,7 +206,8 @@ const EndSessionDialog = new Lang.Class(
_init: function() {
this.parent({ styleClass: 'end-session-dialog',
- destroyOnClose: false });
+ destroyOnClose: false,
+ keybindingMode: Shell.KeyBindingMode.NONE });
this._loginManager = LoginManager.getLoginManager();
this._userManager = AccountsService.UserManager.get_default();
Index: gnome-shell-3.10.4/js/ui/modalDialog.js
===================================================================
--- gnome-shell-3.10.4.orig/js/ui/modalDialog.js
+++ gnome-shell-3.10.4/js/ui/modalDialog.js
@@ -118,9 +118,38 @@ const ModalDialog = new Lang.Class({
this._savedKeyFocus = null;
this._workSpinner = null;
+
+ // Update dialog visibility according to session mode change
+ this._sessionUpdatedID = Main.sessionMode.connect('updated', Lang.bind(this, function(){
+ // TODO: The following "visible" property change leaves a solid
+ // black block at the top-left corner
+ //
+ // this._group.visible = Main.sessionMode.hasWindows;
+
+ // The following code change actor z-position manually to get desired visibility.
+ // TODO Improve efficiency by skipping intermediate session changes.
+
+ // DO NOT manage login screen.
+ //
+ // TODO: "Main.uiGroup.raise_top(this._group);" doesn't work with login screen.
+ if (Main.sessionMode.isGreeter){
+ return;
+ }
+
+ if (Main.sessionMode.hasWindows)
+ Main.uiGroup.raise_top(this._group);
+ else
+ Main.uiGroup.set_child_below_sibling(this._group,
+ Main.layoutManager.screenShieldGroup);
+ }));
},
destroy: function() {
+ if( this._sessionUpdatedID ){
+ Main.sessionMode.disconnect(this._sessionUpdatedID);
+ this._sessionUpdatedID = null;
+ }
+
this._group.destroy();
},