messageTray: Disable unredirection while showing banners

We don't usually show notification banners while the monitor is in
fullscreen, but when we do - the notification is urgent - we should
actually show the banner, even if the top-most window is unredirected.
To achieve that, disable unredirection while the banner is showing.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/430

(cherry picked from commit 4dc2039859)
This commit is contained in:
Florian Müllner 2018-08-13 01:25:13 +02:00 committed by Marco Trevisan (Treviño)
parent 06c6ecc15b
commit 8111286463

View File

@ -1307,8 +1307,10 @@ var MessageTray = new Lang.Class({
} }
this._banner = this._notification.createBanner(); this._banner = this._notification.createBanner();
this._bannerClickedId = this._banner.connect('done-displaying', this._bannerClickedId = this._banner.connect('done-displaying', () => {
this._escapeTray.bind(this)); Meta.enable_unredirect_for_display(global.display);
this._escapeTray();
});
this._bannerUnfocusedId = this._banner.connect('unfocused', () => { this._bannerUnfocusedId = this._banner.connect('unfocused', () => {
this._updateState(); this._updateState();
}); });
@ -1320,6 +1322,7 @@ var MessageTray = new Lang.Class({
this._bannerBin.y = -this._banner.actor.height; this._bannerBin.y = -this._banner.actor.height;
this.actor.show(); this.actor.show();
Meta.disable_unredirect_for_display(global.display);
this._updateShowingNotification(); this._updateShowingNotification();
let [x, y, mods] = global.get_pointer(); let [x, y, mods] = global.get_pointer();