You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
184 lines
6.3 KiB
184 lines
6.3 KiB
From 05a5f4641c8ad6337ccb46e63abcaf27dd7eb852 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 1/4] 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 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 |
|
|
|
|
|
From e5b2c2b3cfd0443fa83fd1f6f56f65fefa5186c3 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 2/4] 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 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 |
|
|
|
|
|
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 |
|
|
|
|