2021-07-12 21:05:50 +00:00
|
|
|
From 05a5f4641c8ad6337ccb46e63abcaf27dd7eb852 Mon Sep 17 00:00:00 2001
|
2021-05-19 18:22:56 +00:00
|
|
|
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
|
|
|
Date: Tue, 9 Jun 2020 19:42:21 +0200
|
2021-07-12 21:05:50 +00:00
|
|
|
Subject: [PATCH 1/4] popupMenu: Guard against non-menu-item children
|
2021-05-19 18:22:56 +00:00
|
|
|
|
|
|
|
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 11528560d..144c600d7 100644
|
|
|
|
--- a/js/ui/popupMenu.js
|
|
|
|
+++ b/js/ui/popupMenu.js
|
|
|
|
@@ -773,7 +773,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.31.1
|
|
|
|
|
|
|
|
|
2021-07-12 21:05:50 +00:00
|
|
|
From e5b2c2b3cfd0443fa83fd1f6f56f65fefa5186c3 Mon Sep 17 00:00:00 2001
|
2021-05-19 18:22:56 +00:00
|
|
|
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
|
|
|
Date: Tue, 9 Jun 2020 19:48:06 +0200
|
2021-07-12 21:05:50 +00:00
|
|
|
Subject: [PATCH 2/4] st/shadow: Check pipeline when painting
|
2021-05-19 18:22:56 +00:00
|
|
|
|
|
|
|
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 ab3eaa856..d53808698 100644
|
|
|
|
--- a/src/st/st-shadow.c
|
|
|
|
+++ b/src/st/st-shadow.c
|
|
|
|
@@ -296,9 +296,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.31.1
|
|
|
|
|
2021-07-12 21:05:50 +00:00
|
|
|
|
|
|
|
From 0f7656d85af51339d14217b9a673442a18df3de8 Mon Sep 17 00:00:00 2001
|
|
|
|
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
|
|
|
Date: Thu, 8 Jul 2021 19:10:05 +0200
|
|
|
|
Subject: [PATCH 3/4] messageTray: Always remove destroyed banners
|
|
|
|
|
|
|
|
Currently we only mark the banner as removed if it is destroyed
|
|
|
|
while in SHOWN or SHOWING state, but not if we're already HIDING
|
|
|
|
(for example in response to `NotificationBanner::done-displaying`).
|
|
|
|
|
|
|
|
If this happens, we'll try to destroy the notification again at
|
|
|
|
the end of the transition, which leads to (harmless but annoying)
|
|
|
|
log spam since Notifications were turned into GObjects (that are
|
|
|
|
disposed when destroyed).
|
|
|
|
|
|
|
|
Address this by always marking destroyed banners as removed, while
|
|
|
|
still only triggering a state update while shown (or in the process
|
|
|
|
of being shown).
|
|
|
|
|
|
|
|
https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4457
|
|
|
|
---
|
|
|
|
js/ui/messageTray.js | 23 +++++++++++++----------
|
|
|
|
1 file changed, 13 insertions(+), 10 deletions(-)
|
|
|
|
|
|
|
|
diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js
|
|
|
|
index 1dab00a70..ccf56fc5b 100644
|
|
|
|
--- a/js/ui/messageTray.js
|
|
|
|
+++ b/js/ui/messageTray.js
|
|
|
|
@@ -1022,17 +1022,20 @@ var MessageTray = GObject.registerClass({
|
|
|
|
}
|
|
|
|
|
|
|
|
_onNotificationDestroy(notification) {
|
|
|
|
- if (this._notification == notification && (this._notificationState == State.SHOWN || this._notificationState == State.SHOWING)) {
|
|
|
|
- this._updateNotificationTimeout(0);
|
|
|
|
- this._notificationRemoved = true;
|
|
|
|
- this._updateState();
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
+ this._notificationRemoved = this._notification === notification;
|
|
|
|
|
|
|
|
- let index = this._notificationQueue.indexOf(notification);
|
|
|
|
- if (index != -1) {
|
|
|
|
- this._notificationQueue.splice(index, 1);
|
|
|
|
- this.emit('queue-changed');
|
|
|
|
+ if (this._notificationRemoved) {
|
|
|
|
+ if (this._notificationState === State.SHOWN ||
|
|
|
|
+ this._notificationState === State.SHOWING) {
|
|
|
|
+ this._updateNotificationTimeout(0);
|
|
|
|
+ this._updateState();
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ const index = this._notificationQueue.indexOf(notification);
|
|
|
|
+ if (index !== -1) {
|
|
|
|
+ this._notificationQueue.splice(index, 1);
|
|
|
|
+ this.emit('queue-changed');
|
|
|
|
+ }
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
--
|
|
|
|
2.31.1
|
|
|
|
|
|
|
|
|
|
|
|
From 8652836521d0729ce230268c7b448cdb393d5b47 Mon Sep 17 00:00:00 2001
|
|
|
|
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
|
|
|
Date: Thu, 8 Jul 2021 19:23:38 +0200
|
|
|
|
Subject: [PATCH 4/4] shellInfo: Don't destroy source on undo
|
|
|
|
|
|
|
|
Destroying the source from an action callback will result in the
|
|
|
|
notification being destroyed twice:
|
|
|
|
|
|
|
|
- source.destroy() destroys all its notifications
|
|
|
|
|
|
|
|
- a notification destroys itself after an action
|
|
|
|
was activated
|
|
|
|
|
|
|
|
This results in unwanted log spam when attempting to dispose the
|
|
|
|
notification for a second time.
|
|
|
|
|
|
|
|
There is actually no good reason for destroying the source explicitly,
|
|
|
|
as sources already self-destruct with their last notification.
|
|
|
|
|
|
|
|
https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4457
|
|
|
|
---
|
|
|
|
js/ui/overview.js | 13 +------------
|
|
|
|
1 file changed, 1 insertion(+), 12 deletions(-)
|
|
|
|
|
|
|
|
diff --git a/js/ui/overview.js b/js/ui/overview.js
|
|
|
|
index 529779ea8..c71b11389 100644
|
|
|
|
--- a/js/ui/overview.js
|
|
|
|
+++ b/js/ui/overview.js
|
|
|
|
@@ -25,16 +25,6 @@ var OVERVIEW_ACTIVATION_TIMEOUT = 0.5;
|
|
|
|
var ShellInfo = class {
|
|
|
|
constructor() {
|
|
|
|
this._source = null;
|
|
|
|
- this._undoCallback = null;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- _onUndoClicked() {
|
|
|
|
- if (this._undoCallback)
|
|
|
|
- this._undoCallback();
|
|
|
|
- this._undoCallback = null;
|
|
|
|
-
|
|
|
|
- if (this._source)
|
|
|
|
- this._source.destroy();
|
|
|
|
}
|
|
|
|
|
|
|
|
setMessage(text, options) {
|
|
|
|
@@ -64,9 +54,8 @@ var ShellInfo = class {
|
|
|
|
notification.update(text, null, { clear: true });
|
|
|
|
}
|
|
|
|
|
|
|
|
- this._undoCallback = undoCallback;
|
|
|
|
if (undoCallback)
|
|
|
|
- notification.addAction(_("Undo"), this._onUndoClicked.bind(this));
|
|
|
|
+ notification.addAction(_('Undo'), () => undoCallback());
|
|
|
|
|
|
|
|
this._source.showNotification(notification);
|
|
|
|
}
|
|
|
|
--
|
|
|
|
2.31.1
|
|
|
|
|