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



commit a3269154f2504110a934c4bf67e25256d8b88b55
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.
    
    https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/872

 js/ui/screenShield.js | 39 ---------------------------------------
 js/ui/unlockDialog.js | 45 +++++++++++++++++++++++++++++++++++++++++++--
 2 files changed, 43 insertions(+), 41 deletions(-)
---
diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js
index a8c00dadcc..d15564bfb2 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;
@@ -76,15 +75,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));
@@ -190,35 +180,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);
-    }
-
-    _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 82a31bd905..c3d0b17719 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,8 @@ 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 SUMMARY_ICON_SIZE = 48;
 
 var NotificationsBox = GObject.registerClass({
@@ -323,13 +326,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 +351,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);
@@ -386,6 +398,35 @@ 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);
+    }
+
+    _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]