[gnome-shell/gbsneto/new-lock-screen-part2: 6/22] screenShield: Move background to Unlock Dialog



commit f3dd4b5ef088ed50b97d1cc0d80f6d90e96b0447
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Thu Nov 28 19:16:55 2019 -0300

    screenShield: Move background to Unlock Dialog
    
    In addition to that, remove the ClutterBoxLayout that is set as
    the layout manager of the Unlock Dialog, and apply the primary
    monitor constraint to the child St.BoxLayout instead.

 js/ui/screenShield.js | 47 ---------------------------------------------
 js/ui/unlockDialog.js | 53 +++++++++++++++++++++++++++++++++++++++++++++++++--
 2 files changed, 51 insertions(+), 49 deletions(-)
---
diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js
index 14b84d90de..8e3a8e81f1 100644
--- a/js/ui/screenShield.js
+++ b/js/ui/screenShield.js
@@ -5,7 +5,6 @@ const { AccountsService, Clutter, Cogl, Gio, GLib,
 const Cairo = imports.cairo;
 const Signals = imports.signals;
 
-const Background = imports.ui.background;
 const GnomeSession = imports.misc.gnomeSession;
 const Layout = imports.ui.layout;
 const OVirt = imports.gdm.oVirt;
@@ -28,9 +27,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;
@@ -81,15 +77,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));
@@ -195,40 +182,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 b142ba2db2..1f0bc3bb1c 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);
 


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