[gnome-shell] ScreenShield: use LayoutManager for creating the actor
- From: Giovanni Campagna <gcampagna src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] ScreenShield: use LayoutManager for creating the actor
- Date: Sat, 21 Jul 2012 13:42:14 +0000 (UTC)
commit 54dc0fd12398a0f648c7a03801782e267627eaef
Author: Giovanni Campagna <gcampagna src gnome org>
Date: Tue May 22 23:22:38 2012 +0200
ScreenShield: use LayoutManager for creating the actor
This ensures that the screen shield is created at the right
stacking level, so the message tray is visible in the lock screen
(showing PAM messages, critical notifications and the on screen
keyboard)
https://bugzilla.gnome.org/show_bug.cgi?id=619955
js/ui/layout.js | 11 +++++++++++
js/ui/screenShield.js | 25 ++++++++++---------------
2 files changed, 21 insertions(+), 15 deletions(-)
---
diff --git a/js/ui/layout.js b/js/ui/layout.js
index 6b87fd8..5175006 100644
--- a/js/ui/layout.js
+++ b/js/ui/layout.js
@@ -40,6 +40,17 @@ const LayoutManager = new Lang.Class({
this.panelBox.connect('allocation-changed',
Lang.bind(this, this._updatePanelBarriers));
+ this.screenShieldGroup = new St.Widget({ name: 'screenShieldGroup',
+ visible: false
+ });
+ // FIXME: This is going to slow everything down by a big factor
+ // Need a better solution (like a layout manager?)
+ let constraint = new Clutter.BindConstraint({ source: global.stage,
+ coordinate: Clutter.BindCoordinate.ALL
+ });
+ this.screenShieldGroup.add_constraint(constraint);
+ this.addChrome(this.screenShieldGroup);
+
this.trayBox = new St.BoxLayout({ name: 'trayBox' });
this.addChrome(this.trayBox);
this.trayBox.connect('allocation-changed',
diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js
index 2ba86b0..060bd02 100644
--- a/js/ui/screenShield.js
+++ b/js/ui/screenShield.js
@@ -29,6 +29,8 @@ const ScreenShield = new Lang.Class({
Name: 'ScreenShield',
_init: function() {
+ this.actor = Main.layoutManager.screenShieldGroup;
+
this._presence = new GnomeSession.Presence(Lang.bind(this, function(proxy, error) {
if (error) {
logError(error, 'Error while reading gnome-session presence');
@@ -45,18 +47,12 @@ const ScreenShield = new Lang.Class({
this._isModal = false;
this._isLocked = false;
- this._group = new St.Widget({ x: 0,
- y: 0 });
- Main.uiGroup.add_actor(this._group);
- let constraint = new Clutter.BindConstraint({ source: global.stage,
- coordinate: Clutter.BindCoordinate.POSITION | Clutter.BindCoordinate.SIZE });
- this._group.add_constraint(constraint);
-
- this._lightbox = new Lightbox.Lightbox(this._group,
+
+ this._lightbox = new Lightbox.Lightbox(Main.uiGroup,
{ inhibitEvents: true, fadeInTime: 10, fadeFactor: 1 });
+
this._background = Meta.BackgroundActor.new_for_screen(global.screen);
- this._background.hide();
- Main.uiGroup.add_actor(this._background);
+ this.actor.add_actor(this._background);
},
_onStatusChanged: function(status) {
@@ -66,9 +62,8 @@ const ScreenShield = new Lang.Class({
this._dialog = null;
}
- this._group.reactive = true;
if (!this._isModal) {
- Main.pushModal(this._group);
+ Main.pushModal(this.actor);
this._isModal = true;
}
@@ -88,10 +83,10 @@ const ScreenShield = new Lang.Class({
},
_popModal: function() {
- this._group.reactive = false;
- Main.popModal(this._group);
+ this._lightbox.hide();
- this._background.hide();
+ Main.popModal(this.actor);
+ this.actor.hide();
this._isModal = false;
this._isLocked = false;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]