[gnome-shell/wip/fmuellner/fix-zoom] layout: Use custom actor for uiGroup



commit 99019708a68d4db7e890467c8ae7ea29e41d9dca
Author: Florian Müllner <fmuellner gnome org>
Date:   Tue Mar 5 11:34:27 2019 +0100

    layout: Use custom actor for uiGroup
    
    The bind constraint that replaced the Shell.GenericContainer in commit
    f4682748faf4 is subtly different from the previous code:
    It forces the actor to have the same size as the stage, rather than just
    requesting that size.
    
    This breaks the magnifier which relies on the UI being able to be bigger
    than the display size. Fix by going back to using a custom actor.
    
    https://gitlab.gnome.org/GNOME/gnome-shell/issues/646

 js/ui/layout.js | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)
---
diff --git a/js/ui/layout.js b/js/ui/layout.js
index b6cf05c13..e3c93a923 100644
--- a/js/ui/layout.js
+++ b/js/ui/layout.js
@@ -160,6 +160,19 @@ var Monitor = class Monitor {
     }
 };
 
+const UiActor = GObject.registerClass(
+class UiActor extends St.Widget {
+    vfunc_get_preferred_width (forHeight) {
+        let width = global.stage.width;
+        return [width, width];
+    }
+
+    vfunc_get_preferred_height (forWidth) {
+        let height = global.stage.height;
+        return [height, height];
+    }
+});
+
 const defaultParams = {
     trackFullscreen: false,
     affectsStruts: false,
@@ -200,12 +213,8 @@ var LayoutManager = GObject.registerClass({
         global.stage.no_clear_hint = true;
 
         // Set up stage hierarchy to group all UI actors under one container.
-        this.uiGroup = new St.Widget({ name: 'uiGroup' });
+        this.uiGroup = new UiActor({ name: 'uiGroup' });
         this.uiGroup.set_flags(Clutter.ActorFlags.NO_LAYOUT);
-        this.uiGroup.add_constraint(new Clutter.BindConstraint({
-            source: global.stage,
-            coordinate: Clutter.BindCoordinate.ALL,
-        }));
 
         global.stage.remove_actor(global.window_group);
         this.uiGroup.add_actor(global.window_group);


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