[gnome-shell/wip/jimmac/dash-icon-spacing: 19/72] workspacesView/workspacesDisplay: Don't sync geometry when animating
- From: Jakub Steiner <jimmac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell/wip/jimmac/dash-icon-spacing: 19/72] workspacesView/workspacesDisplay: Don't sync geometry when animating
- Date: Tue, 2 Feb 2021 11:58:18 +0000 (UTC)
commit a6d685343c7220bd83daf123f7354b2fce3a98e6
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 it's better not to leave it misbehaving until then.
js/ui/workspacesView.js | 11 +++++++++++
1 file changed, 11 insertions(+)
---
diff --git a/js/ui/workspacesView.js b/js/ui/workspacesView.js
index 287ed74985..47180d3e0d 100644
--- a/js/ui/workspacesView.js
+++ b/js/ui/workspacesView.js
@@ -495,6 +495,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));
}
@@ -691,6 +692,8 @@ class WorkspacesDisplay extends St.Widget {
}
animateFromOverview() {
+ this._animating = true;
+
for (let i = 0; i < this._workspacesViews.length; i++)
this._workspacesViews[i].animateFromOverview();
@@ -704,10 +707,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;
@@ -740,6 +746,8 @@ class WorkspacesDisplay extends St.Widget {
}
_updateWorkspacesViews() {
+ this._animating = false;
+
for (let i = 0; i < this._workspacesViews.length; i++)
this._workspacesViews[i].destroy();
@@ -816,6 +824,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]