Blame SOURCES/fix-some-js-warnings.patch

278b88
From 530964cc6e5db02633434853debd96069dc2b8d8 Mon Sep 17 00:00:00 2001
28ed8f
From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= <mail@3v1n0.net>
28ed8f
Date: Thu, 23 May 2019 06:12:56 +0200
278b88
Subject: [PATCH 1/6] realmd: Set login format to null on start and update if
28ed8f
 invalid
28ed8f
28ed8f
We were checking an undefined property but that would lead to a a warning.
28ed8f
Instead we can consider the login format unset until is null, and in case
28ed8f
update it.
28ed8f
28ed8f
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/700
28ed8f
---
28ed8f
 js/gdm/realmd.js | 3 ++-
28ed8f
 1 file changed, 2 insertions(+), 1 deletion(-)
28ed8f
28ed8f
diff --git a/js/gdm/realmd.js b/js/gdm/realmd.js
28ed8f
index 50f3c5899..04cd99787 100644
28ed8f
--- a/js/gdm/realmd.js
28ed8f
+++ b/js/gdm/realmd.js
28ed8f
@@ -21,6 +21,7 @@ var Manager = class {
28ed8f
                                            '/org/freedesktop/realmd',
28ed8f
                                            this._reloadRealms.bind(this))
28ed8f
         this._realms = {};
28ed8f
+        this._loginFormat = null;
28ed8f
 
28ed8f
         this._signalId = this._aggregateProvider.connect('g-properties-changed',
28ed8f
             (proxy, properties) => {
28ed8f
@@ -86,7 +87,7 @@ var Manager = class {
28ed8f
     }
28ed8f
 
28ed8f
     get loginFormat() {
28ed8f
-        if (this._loginFormat !== undefined)
28ed8f
+        if (this._loginFormat)
28ed8f
             return this._loginFormat;
28ed8f
 
28ed8f
         this._updateLoginFormat();
28ed8f
-- 
278b88
2.33.1
28ed8f
28ed8f
278b88
From 988e4b58d64fbf87f0c497315ff2506b269ff7c9 Mon Sep 17 00:00:00 2001
28ed8f
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
28ed8f
Date: Tue, 9 Jun 2020 19:42:21 +0200
278b88
Subject: [PATCH 2/6] popupMenu: Guard against non-menu-item children
28ed8f
28ed8f
This avoid a harmless but annoying warning.
28ed8f
---
28ed8f
 js/ui/popupMenu.js | 3 ++-
28ed8f
 1 file changed, 2 insertions(+), 1 deletion(-)
28ed8f
28ed8f
diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js
28ed8f
index 44818533a..b5115d7f7 100644
28ed8f
--- a/js/ui/popupMenu.js
28ed8f
+++ b/js/ui/popupMenu.js
28ed8f
@@ -696,7 +696,8 @@ var PopupMenuBase = class {
28ed8f
     }
28ed8f
 
28ed8f
     _getMenuItems() {
28ed8f
-        return this.box.get_children().map(a => a._delegate).filter(item => {
28ed8f
+        const children = this.box.get_children().filter(a => a._delegate !== undefined);
28ed8f
+        return children.map(a => a._delegate).filter(item => {
28ed8f
             return item instanceof PopupBaseMenuItem || item instanceof PopupMenuSection;
28ed8f
         });
28ed8f
     }
28ed8f
-- 
278b88
2.33.1
28ed8f
28ed8f
278b88
From 609a8e22e67b63da1e35167d8511400f22641368 Mon Sep 17 00:00:00 2001
28ed8f
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
28ed8f
Date: Tue, 9 Jun 2020 19:48:06 +0200
278b88
Subject: [PATCH 3/6] st/shadow: Check pipeline when painting
28ed8f
28ed8f
We shouldn't simply assume that st_shadow_helper_update() has been
28ed8f
called before paint() or that the pipeline was created successfully.
28ed8f
---
28ed8f
 src/st/st-shadow.c | 11 ++++++-----
28ed8f
 1 file changed, 6 insertions(+), 5 deletions(-)
28ed8f
28ed8f
diff --git a/src/st/st-shadow.c b/src/st/st-shadow.c
28ed8f
index f3a22f034..7665de755 100644
28ed8f
--- a/src/st/st-shadow.c
28ed8f
+++ b/src/st/st-shadow.c
28ed8f
@@ -289,9 +289,10 @@ st_shadow_helper_paint (StShadowHelper  *helper,
28ed8f
                         ClutterActorBox *actor_box,
28ed8f
                         guint8           paint_opacity)
28ed8f
 {
28ed8f
-  _st_paint_shadow_with_opacity (helper->shadow,
28ed8f
-                                 framebuffer,
28ed8f
-                                 helper->pipeline,
28ed8f
-                                 actor_box,
28ed8f
-                                 paint_opacity);
28ed8f
+  if (helper->pipeline != NULL)
28ed8f
+    _st_paint_shadow_with_opacity (helper->shadow,
28ed8f
+                                   framebuffer,
28ed8f
+                                   helper->pipeline,
28ed8f
+                                   actor_box,
28ed8f
+                                   paint_opacity);
28ed8f
 }
28ed8f
-- 
278b88
2.33.1
28ed8f
28ed8f
278b88
From b57d6efccbeb139d6c7c1894f83caa7a26fd6bad Mon Sep 17 00:00:00 2001
28ed8f
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
28ed8f
Date: Tue, 5 Jan 2021 21:42:24 +0100
278b88
Subject: [PATCH 4/6] viewSelector: Don't set page parent during construction
28ed8f
28ed8f
gjs now aggressively garbage-collects objects that fall out of scope,
28ed8f
sometimes too aggressively:
28ed8f
28ed8f
 - we pass a child as construct property to StBin
28ed8f
 - as a result, the child's ::parent-set handler runs
28ed8f
 - when calling clutter_actor_get_parent() from that
28ed8f
   handler, the returned object is garbage-collected
28ed8f
   *before* the constructor returns (and thus the
28ed8f
   assignment that would keep it alive)
28ed8f
28ed8f
This is a bug on the gjs side that should be fixed, but we can easily
28ed8f
work around the issue by setting the child after constructing the
28ed8f
parent.
28ed8f
---
28ed8f
 js/ui/viewSelector.js | 12 +++++++-----
28ed8f
 1 file changed, 7 insertions(+), 5 deletions(-)
28ed8f
28ed8f
diff --git a/js/ui/viewSelector.js b/js/ui/viewSelector.js
28ed8f
index 77146552d..6529ac9a5 100644
28ed8f
--- a/js/ui/viewSelector.js
28ed8f
+++ b/js/ui/viewSelector.js
28ed8f
@@ -301,11 +301,13 @@ var ViewSelector = class {
28ed8f
     _addPage(actor, name, a11yIcon, params) {
28ed8f
         params = Params.parse(params, { a11yFocus: null });
28ed8f
 
28ed8f
-        let page = new St.Bin({ child: actor,
28ed8f
-                                x_align: St.Align.START,
28ed8f
-                                y_align: St.Align.START,
28ed8f
-                                x_fill: true,
28ed8f
-                                y_fill: true });
28ed8f
+        let page = new St.Bin({
28ed8f
+            x_align: St.Align.START,
28ed8f
+            y_align: St.Align.START,
28ed8f
+            x_fill: true,
28ed8f
+            y_fill: true,
28ed8f
+        });
28ed8f
+        page.set_child(actor);
28ed8f
         if (params.a11yFocus)
28ed8f
             Main.ctrlAltTabManager.addGroup(params.a11yFocus, name, a11yIcon);
28ed8f
         else
28ed8f
-- 
278b88
2.33.1
28ed8f
28ed8f
278b88
From 0c76c91c3d16c8386a242daf367d66057364a5d1 Mon Sep 17 00:00:00 2001
28ed8f
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
28ed8f
Date: Fri, 23 Oct 2020 23:44:48 +0200
278b88
Subject: [PATCH 5/6] workspacesView: Don't set up MetaLater when unparented
28ed8f
28ed8f
We already do the check in the later handler, but if we got
28ed8f
unparented because the actor is destroyed, then the call to
28ed8f
get_parent() itself will trigger a (harmless but annoying)
28ed8f
warning.
28ed8f
---
28ed8f
 js/ui/workspacesView.js | 3 +++
28ed8f
 1 file changed, 3 insertions(+)
28ed8f
28ed8f
diff --git a/js/ui/workspacesView.js b/js/ui/workspacesView.js
28ed8f
index e302296a6..3270900b2 100644
28ed8f
--- a/js/ui/workspacesView.js
28ed8f
+++ b/js/ui/workspacesView.js
28ed8f
@@ -715,6 +715,9 @@ var WorkspacesDisplay = class {
28ed8f
             oldParent.disconnect(this._notifyOpacityId);
28ed8f
         this._notifyOpacityId = 0;
28ed8f
 
28ed8f
+        if (!this.actor.get_parent())
28ed8f
+            return;
28ed8f
+
28ed8f
         Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => {
28ed8f
             let newParent = this.actor.get_parent();
28ed8f
             if (!newParent)
28ed8f
-- 
278b88
2.33.1
278b88
278b88
278b88
From 4ba01f2fdada7e4b059a0f57a99dc3ff2ddfa8f8 Mon Sep 17 00:00:00 2001
278b88
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
278b88
Date: Fri, 26 Nov 2021 17:28:54 +0100
278b88
Subject: [PATCH 6/6] workspacesView: Remove later on destroy
278b88
278b88
We are careful not to schedule the later when the actor is destroyed,
278b88
however it is possible that one is still pending at that point (namely
278b88
if the actor was never shown).
278b88
---
278b88
 js/ui/workspacesView.js | 7 ++++++-
278b88
 1 file changed, 6 insertions(+), 1 deletion(-)
278b88
278b88
diff --git a/js/ui/workspacesView.js b/js/ui/workspacesView.js
278b88
index 3270900b2..9dc05fca7 100644
278b88
--- a/js/ui/workspacesView.js
278b88
+++ b/js/ui/workspacesView.js
278b88
@@ -449,6 +449,11 @@ var WorkspacesDisplay = class {
278b88
         this.actor._delegate = this;
278b88
         this.actor.connect('notify::allocation', this._updateWorkspacesActualGeometry.bind(this));
278b88
         this.actor.connect('parent-set', this._parentSet.bind(this));
278b88
+        this.actor.connect('destroy', () => {
278b88
+            if (this._laterId)
278b88
+                Meta.later_remove(this._laterId);
278b88
+            this._laterId = 0;
278b88
+        });
278b88
 
278b88
         let clickAction = new Clutter.ClickAction();
278b88
         clickAction.connect('clicked', action => {
278b88
@@ -718,7 +723,7 @@ var WorkspacesDisplay = class {
278b88
         if (!this.actor.get_parent())
278b88
             return;
278b88
 
278b88
-        Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => {
278b88
+        this._laterId = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => {
278b88
             let newParent = this.actor.get_parent();
278b88
             if (!newParent)
278b88
                 return;
278b88
-- 
278b88
2.33.1
28ed8f