From 6b924c00c5c171ce11663c855bad2ec3d230f158 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Tue, 5 Mar 2019 11:34:27 +0100 Subject: [PATCH] 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);