Blob Blame History Raw
From 43d6305bfbe079a3bf80a96d40a3a176c165ef7a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= <mail@3v1n0.net>
Date: Thu, 23 May 2019 06:12:56 +0200
Subject: [PATCH 1/5] realmd: Set login format to null on start and update if
 invalid

We were checking an undefined property but that would lead to a a warning.
Instead we can consider the login format unset until is null, and in case
update it.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/700
---
 js/gdm/realmd.js | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/js/gdm/realmd.js b/js/gdm/realmd.js
index 50f3c5899..04cd99787 100644
--- a/js/gdm/realmd.js
+++ b/js/gdm/realmd.js
@@ -21,6 +21,7 @@ var Manager = class {
                                            '/org/freedesktop/realmd',
                                            this._reloadRealms.bind(this))
         this._realms = {};
+        this._loginFormat = null;
 
         this._signalId = this._aggregateProvider.connect('g-properties-changed',
             (proxy, properties) => {
@@ -86,7 +87,7 @@ var Manager = class {
     }
 
     get loginFormat() {
-        if (this._loginFormat !== undefined)
+        if (this._loginFormat)
             return this._loginFormat;
 
         this._updateLoginFormat();
-- 
2.21.1


From 80836cd1ea4ef5d69a35bdfd7931b0e2c202f5b3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
Date: Tue, 9 Jun 2020 19:42:21 +0200
Subject: [PATCH 2/5] popupMenu: Guard against non-menu-item children

This avoid a harmless but annoying warning.
---
 js/ui/popupMenu.js | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js
index 44818533a..b5115d7f7 100644
--- a/js/ui/popupMenu.js
+++ b/js/ui/popupMenu.js
@@ -696,7 +696,8 @@ var PopupMenuBase = class {
     }
 
     _getMenuItems() {
-        return this.box.get_children().map(a => a._delegate).filter(item => {
+        const children = this.box.get_children().filter(a => a._delegate !== undefined);
+        return children.map(a => a._delegate).filter(item => {
             return item instanceof PopupBaseMenuItem || item instanceof PopupMenuSection;
         });
     }
-- 
2.21.1


From f0af67381cf0fb9a9ab766fa6b3d3e6ff5707122 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
Date: Tue, 9 Jun 2020 19:48:06 +0200
Subject: [PATCH 3/5] st/shadow: Check pipeline when painting

We shouldn't simply assume that st_shadow_helper_update() has been
called before paint() or that the pipeline was created successfully.
---
 src/st/st-shadow.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/src/st/st-shadow.c b/src/st/st-shadow.c
index f3a22f034..7665de755 100644
--- a/src/st/st-shadow.c
+++ b/src/st/st-shadow.c
@@ -289,9 +289,10 @@ st_shadow_helper_paint (StShadowHelper  *helper,
                         ClutterActorBox *actor_box,
                         guint8           paint_opacity)
 {
-  _st_paint_shadow_with_opacity (helper->shadow,
-                                 framebuffer,
-                                 helper->pipeline,
-                                 actor_box,
-                                 paint_opacity);
+  if (helper->pipeline != NULL)
+    _st_paint_shadow_with_opacity (helper->shadow,
+                                   framebuffer,
+                                   helper->pipeline,
+                                   actor_box,
+                                   paint_opacity);
 }
-- 
2.21.1


From a500f3c59a485755b8361e8f4dd48f8df4af95ba Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
Date: Tue, 5 Jan 2021 21:42:24 +0100
Subject: [PATCH 4/5] viewSelector: Don't set page parent during construction

gjs now aggressively garbage-collects objects that fall out of scope,
sometimes too aggressively:

 - we pass a child as construct property to StBin
 - as a result, the child's ::parent-set handler runs
 - when calling clutter_actor_get_parent() from that
   handler, the returned object is garbage-collected
   *before* the constructor returns (and thus the
   assignment that would keep it alive)

This is a bug on the gjs side that should be fixed, but we can easily
work around the issue by setting the child after constructing the
parent.
---
 js/ui/viewSelector.js | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/js/ui/viewSelector.js b/js/ui/viewSelector.js
index 77146552d..6529ac9a5 100644
--- a/js/ui/viewSelector.js
+++ b/js/ui/viewSelector.js
@@ -301,11 +301,13 @@ var ViewSelector = class {
     _addPage(actor, name, a11yIcon, params) {
         params = Params.parse(params, { a11yFocus: null });
 
-        let page = new St.Bin({ child: actor,
-                                x_align: St.Align.START,
-                                y_align: St.Align.START,
-                                x_fill: true,
-                                y_fill: true });
+        let page = new St.Bin({
+            x_align: St.Align.START,
+            y_align: St.Align.START,
+            x_fill: true,
+            y_fill: true,
+        });
+        page.set_child(actor);
         if (params.a11yFocus)
             Main.ctrlAltTabManager.addGroup(params.a11yFocus, name, a11yIcon);
         else
-- 
2.21.1


From a53d1a74fed3aee896a6930130bd7e3a39a24255 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
Date: Fri, 23 Oct 2020 23:44:48 +0200
Subject: [PATCH 5/5] workspacesView: Don't set up MetaLater when unparented

We already do the check in the later handler, but if we got
unparented because the actor is destroyed, then the call to
get_parent() itself will trigger a (harmless but annoying)
warning.
---
 js/ui/workspacesView.js | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/js/ui/workspacesView.js b/js/ui/workspacesView.js
index e302296a6..3270900b2 100644
--- a/js/ui/workspacesView.js
+++ b/js/ui/workspacesView.js
@@ -715,6 +715,9 @@ var WorkspacesDisplay = class {
             oldParent.disconnect(this._notifyOpacityId);
         this._notifyOpacityId = 0;
 
+        if (!this.actor.get_parent())
+            return;
+
         Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => {
             let newParent = this.actor.get_parent();
             if (!newParent)
-- 
2.21.1