workspacesView: Disable swipe tracker when animating from overview
It was possible to switch workspaces by quickly dragging the workspace immediately after clicking on a window during the transition from the overview. This is unlikely something that is intentionally used but can be confusing and look bad when triggered accidentally. Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2993 Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1578>
This commit is contained in:
parent
a5730d7b30
commit
c57a299d57
@ -419,6 +419,7 @@ class WorkspacesDisplay extends St.Widget {
|
||||
this._actualGeometry = null;
|
||||
this._inWindowDrag = false;
|
||||
this._inWindowFade = false;
|
||||
this._leavingOverview = false;
|
||||
|
||||
this._gestureActive = false; // touch(pad) gestures
|
||||
this._canScroll = true; // limiting scrolling speed
|
||||
@ -467,7 +468,10 @@ class WorkspacesDisplay extends St.Widget {
|
||||
}
|
||||
|
||||
_updateSwipeTracker() {
|
||||
this._swipeTracker.enabled = this.mapped && !this._inWindowDrag;
|
||||
this._swipeTracker.enabled =
|
||||
this.mapped &&
|
||||
!this._inWindowDrag &&
|
||||
!this._leavingOverview;
|
||||
}
|
||||
|
||||
_workspacesReordered() {
|
||||
@ -603,6 +607,9 @@ class WorkspacesDisplay extends St.Widget {
|
||||
|
||||
this._inWindowFade = fadeOnPrimary;
|
||||
|
||||
this._leavingOverview = true;
|
||||
this._updateSwipeTracker();
|
||||
|
||||
const { primaryIndex } = Main.layoutManager;
|
||||
const { x, y, width, height } =
|
||||
Main.layoutManager.getWorkAreaForMonitor(primaryIndex);
|
||||
@ -630,6 +637,8 @@ class WorkspacesDisplay extends St.Widget {
|
||||
this._workspacesViews[i].destroy();
|
||||
this._workspacesViews = [];
|
||||
|
||||
this._leavingOverview = false;
|
||||
|
||||
super.vfunc_hide();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user