From 43d6305bfbe079a3bf80a96d40a3a176c165ef7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= 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?= 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?= 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?= 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?= 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