[gnome-shell] workspacesView/workspacesDisplay: Don't sync geometry when animating
- From: Marge Bot <marge-bot src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] workspacesView/workspacesDisplay: Don't sync geometry when animating
- Date: Wed, 3 Feb 2021 20:36:19 +0000 (UTC)
commit b64103efca366ad017f44be8ab4e5e27e45b2bd3
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Wed Dec 30 19:59:02 2020 -0300
workspacesView/workspacesDisplay: Don't sync geometry when animating
Synchronizing the actual geometry while animating from / to the overview can
break the animation. Let's prevent that. This code will go away soon anyway,
but to not lose bisectability, it's better not to leave it misbehaving until
then.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1613>
js/ui/workspacesView.js | 11 +++++++++++
1 file changed, 11 insertions(+)
---
diff --git a/js/ui/workspacesView.js b/js/ui/workspacesView.js
index 36a15a71ff..ac0729dd07 100644
--- a/js/ui/workspacesView.js
+++ b/js/ui/workspacesView.js
@@ -515,6 +515,7 @@ class WorkspacesDisplay extends St.Widget {
this._gestureActive = false; // touch(pad) gestures
this._canScroll = true; // limiting scrolling speed
+ this._animating = false;
this.connect('destroy', this._onDestroy.bind(this));
}
@@ -690,6 +691,8 @@ class WorkspacesDisplay extends St.Widget {
}
animateFromOverview() {
+ this._animating = true;
+
for (let i = 0; i < this._workspacesViews.length; i++)
this._workspacesViews[i].animateFromOverview();
@@ -703,10 +706,13 @@ class WorkspacesDisplay extends St.Widget {
x, y, width, height,
duration: ANIMATION_TIME,
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
+ onStopped: () => (this._animating = false),
});
}
vfunc_hide() {
+ this._animating = false;
+
if (this._restackedNotifyId > 0) {
Main.overview.disconnect(this._restackedNotifyId);
this._restackedNotifyId = 0;
@@ -739,6 +745,8 @@ class WorkspacesDisplay extends St.Widget {
}
_updateWorkspacesViews() {
+ this._animating = false;
+
for (let i = 0; i < this._workspacesViews.length; i++)
this._workspacesViews[i].destroy();
@@ -815,6 +823,9 @@ class WorkspacesDisplay extends St.Widget {
this._syncActualGeometryLater =
Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => {
+ if (this._animating)
+ return GLib.SOURCE_CONTINUE;
+
this._syncWorkspacesActualGeometry();
this._syncActualGeometryLater = 0;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]