[gnome-shell/gnome-40] windowManager: Animate the appearance of new windows after overview closes
- From: Marge Bot <marge-bot src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell/gnome-40] windowManager: Animate the appearance of new windows after overview closes
- Date: Tue, 21 Sep 2021 18:08:46 +0000 (UTC)
commit 296a9cb1d3454fc10d9f4f9452a4f847e5c8e956
Author: Daniel van Vugt <daniel van vugt canonical com>
Date: Thu Sep 17 15:25:49 2020 +0800
windowManager: Animate the appearance of new windows after overview closes
So that the animation doesn't get skipped if the overview is visible but
in the process of closing.
In this case the overview being visible also means that it is closing,
because if it's visible and not already closing then `_shouldAnimateActor`
would have returned false and exited `_mapWindow` earlier.
Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/1814,
https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3242
(cherry picked from commit 88b2c9a046170d150e41f929810b8fa9f5198ca6)
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1982>
js/ui/windowManager.js | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
---
diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js
index 2ded682362..48fa9a5934 100644
--- a/js/ui/windowManager.js
+++ b/js/ui/windowManager.js
@@ -1446,7 +1446,19 @@ var WindowManager = class {
dimmer.setDimmed(false, this._shouldAnimate());
}
- _mapWindow(shellwm, actor) {
+ _waitForOverviewToHide() {
+ if (!Main.overview.visible)
+ return Promise.resolve();
+
+ return new Promise(resolve => {
+ const id = Main.overview.connect('hidden', () => {
+ Main.overview.disconnect(id);
+ resolve();
+ });
+ });
+ }
+
+ async _mapWindow(shellwm, actor) {
actor._windowType = actor.meta_window.get_window_type();
actor._notifyWindowTypeSignalId =
actor.meta_window.connect('notify::window-type', () => {
@@ -1488,6 +1500,7 @@ var WindowManager = class {
actor.show();
this._mapping.add(actor);
+ await this._waitForOverviewToHide();
actor.ease({
opacity: 255,
scale_x: 1,
@@ -1505,6 +1518,7 @@ var WindowManager = class {
actor.show();
this._mapping.add(actor);
+ await this._waitForOverviewToHide();
actor.ease({
opacity: 255,
scale_x: 1,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]