diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js index 514d503d1..d422efed0 100644 --- a/js/ui/screenShield.js +++ b/js/ui/screenShield.js @@ -4,7 +4,6 @@ const { AccountsService, Clutter, Gio, GLib, Graphene, Meta, Shell, St } = imports.gi; const Signals = imports.signals; -const Background = imports.ui.background; const GnomeSession = imports.misc.gnomeSession; const Layout = imports.ui.layout; const OVirt = imports.gdm.oVirt; @@ -27,9 +26,6 @@ const DISABLE_LOCK_KEY = 'disable-lock-screen'; const LOCKED_STATE_STR = 'screenShield.locked'; -const BLUR_BRIGHTNESS = 0.55; -const BLUR_RADIUS = 200; - // fraction of screen height the arrow must reach before completing // the slide up automatically var ARROW_DRAG_THRESHOLD = 0.1; @@ -80,15 +76,6 @@ var ScreenShield = class { this._lockScreenGroup.add_actor(this._lockScreenContents); - this._backgroundGroup = new Clutter.Actor(); - - this._lockScreenGroup.add_actor(this._backgroundGroup); - this._lockScreenGroup.set_child_below_sibling(this._backgroundGroup, null); - this._bgManagers = []; - - this._updateBackgrounds(); - Main.layoutManager.connect('monitors-changed', this._updateBackgrounds.bind(this)); - this._dragAction = new Clutter.GestureAction(); this._dragAction.connect('gesture-begin', this._onDragBegin.bind(this)); this._dragAction.connect('gesture-progress', this._onDragMotion.bind(this)); @@ -194,40 +181,6 @@ var ScreenShield = class { this._syncInhibitor(); } - _createBackground(monitorIndex) { - let monitor = Main.layoutManager.monitors[monitorIndex]; - let widget = new St.Widget({ style_class: 'screen-shield-background', - x: monitor.x, - y: monitor.y, - width: monitor.width, - height: monitor.height }); - - let bgManager = new Background.BackgroundManager({ container: widget, - monitorIndex, - controlPosition: false, - settingsSchema: SCREENSAVER_SCHEMA }); - - this._bgManagers.push(bgManager); - - this._backgroundGroup.add_child(widget); - - widget.add_effect(new Shell.BlurEffect({ - brightness: BLUR_BRIGHTNESS, - blur_radius: BLUR_RADIUS, - })); - } - - _updateBackgrounds() { - for (let i = 0; i < this._bgManagers.length; i++) - this._bgManagers[i].destroy(); - - this._bgManagers = []; - this._backgroundGroup.destroy_all_children(); - - for (let i = 0; i < Main.layoutManager.monitors.length; i++) - this._createBackground(i); - } - _liftShield(velocity) { if (this._isLocked) { if (this._ensureUnlockDialog(true /* allowCancel */)) diff --git a/js/ui/unlockDialog.js b/js/ui/unlockDialog.js index b142ba2db..1f0bc3bb1 100644 --- a/js/ui/unlockDialog.js +++ b/js/ui/unlockDialog.js @@ -4,6 +4,7 @@ const { AccountsService, Atk, Clutter, Gdm, Gio, GnomeDesktop, GLib, GObject, Meta, Shell, St } = imports.gi; +const Background = imports.ui.background; const Layout = imports.ui.layout; const Main = imports.ui.main; const MessageTray = imports.ui.messageTray; @@ -13,6 +14,11 @@ const AuthPrompt = imports.gdm.authPrompt; // The timeout before going back automatically to the lock screen (in seconds) const IDLE_TIMEOUT = 2 * 60; +const SCREENSAVER_SCHEMA = 'org.gnome.desktop.screensaver'; + +const BLUR_BRIGHTNESS = 0.55; +const BLUR_RADIUS = 200; + const SUMMARY_ICON_SIZE = 48; var NotificationsBox = GObject.registerClass({ @@ -323,13 +329,21 @@ var UnlockDialog = GObject.registerClass({ super._init({ accessible_role: Atk.Role.WINDOW, style_class: 'login-dialog', - layout_manager: new Clutter.BoxLayout(), visible: false, }); - this.add_constraint(new Layout.MonitorConstraint({ primary: true })); parentActor.add_child(this); + // Background + this._backgroundGroup = new Clutter.Actor(); + + this.add_child(this._backgroundGroup); + this.set_child_below_sibling(this._backgroundGroup, null); + this._bgManagers = []; + + this._updateBackgrounds(); + Main.layoutManager.connect('monitors-changed', this._updateBackgrounds.bind(this)); + this._userManager = AccountsService.UserManager.get_default(); this._userName = GLib.get_user_name(); this._user = this._userManager.get_user(this._userName); @@ -340,6 +354,7 @@ var UnlockDialog = GObject.registerClass({ x_expand: true, y_expand: true }); this.add_child(this._promptBox); + this._promptBox.add_constraint(new Layout.MonitorConstraint({ primary: true })); this._clock = new Clock(); this._promptBox.add_child(this._clock); @@ -387,6 +402,40 @@ var UnlockDialog = GObject.registerClass({ this.connect('destroy', this._onDestroy.bind(this)); } + _createBackground(monitorIndex) { + let monitor = Main.layoutManager.monitors[monitorIndex]; + let widget = new St.Widget({ style_class: 'screen-shield-background', + x: monitor.x, + y: monitor.y, + width: monitor.width, + height: monitor.height }); + + let bgManager = new Background.BackgroundManager({ container: widget, + monitorIndex, + controlPosition: false, + settingsSchema: SCREENSAVER_SCHEMA }); + + this._bgManagers.push(bgManager); + + this._backgroundGroup.add_child(widget); + + widget.add_effect(new Shell.BlurEffect({ + brightness: BLUR_BRIGHTNESS, + blur_radius: BLUR_RADIUS, + })); + } + + _updateBackgrounds() { + for (let i = 0; i < this._bgManagers.length; i++) + this._bgManagers[i].destroy(); + + this._bgManagers = []; + this._backgroundGroup.destroy_all_children(); + + for (let i = 0; i < Main.layoutManager.monitors.length; i++) + this._createBackground(i); + } + _updateSensitivity(sensitive) { this._authPrompt.updateSensitivity(sensitive);