Revert "appDisplay: Bring back drag overshoot region"

With MR https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2335,
the page navigation in the app grid was redone and prominent, always visible
navigation arrows were added. This larger change in the navigation of the
app grid also involved changes to the drag and drop behavior.

Before those changes (in GNOME 42), switching pages during DND in the app
grid worked like this: By "bumping" the cursor against the monitor/appGrid
edge, an immediate page switch would be triggered. Leaving the cursor in
that edge area would then trigger repeated page switches every second. By
repeating the "bump" gesture (moving cursor back into the grid, then
"bumping" against the edge again), it was possible to switch pages even
faster than every second.

When adding the always visible navigation arrows, we briefly tried out a
different way of page-switching during DND with commit 09b975fa: The "bump
against monitor edge" gesture (or "overshoot" behavior as it's called in the
code) was replaced with a hover timeout on the navigation arrows. The idea
behind that was to allow hovering the navigation arrow during DND to
eventually trigger a page switch, which also makes sense.

The replacement of the "overshoot" behavior made some people unhappy though,
so it was decided to bring back the old "overshoot" behavior with commit
4dcae8dd. Due to time pressure before the release that didn't go very well
and we ended up with a mixup of both approaches that doesn't feel too
polished.

So let's try to fix that by first going back to the working "overshoot"
implementation as it was in 42, then slightly refactoring that
implementation, to finally incorporate the new "page indicator hover"
behavior that https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2335
originally intended to use.

This reverts commit 4dcae8ddd2.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2581>
This commit is contained in:
Jonas Dreßler 2022-12-09 20:15:29 +01:00 committed by Marge Bot
parent dc3ee1a9a2
commit 272c770815

View File

@ -844,23 +844,6 @@ var BaseAppView = GObject.registerClass({
this._overshootTimeoutId = 0;
}
_dragWithinOvershootRegion(dragEvent) {
const rtl = this.get_text_direction() === Clutter.TextDirection.RTL;
const {x, y, targetActor: indicator} = dragEvent;
const [indicatorX, indicatorY] = indicator.get_transformed_position();
const [indicatorWidth, indicatorHeight] = indicator.get_transformed_size();
let overshootX = indicatorX;
if (indicator === this._nextPageIndicator || rtl)
overshootX += indicatorWidth - OVERSHOOT_THRESHOLD;
const overshootBox = new Clutter.ActorBox();
overshootBox.set_origin(overshootX, indicatorY);
overshootBox.set_size(OVERSHOOT_THRESHOLD, indicatorHeight);
return overshootBox.contains(x, y);
}
_handleDragOvershoot(dragEvent) {
// Already animating
if (this._adjustment.get_transition('value') !== null)
@ -886,13 +869,6 @@ var BaseAppView = GObject.registerClass({
if (targetPage < 0 || targetPage >= this._grid.nPages)
return; // don't go beyond first/last page
// If dragging over the drag overshoot threshold region, immediately
// switch pages
if (this._dragWithinOvershootRegion(dragEvent)) {
this._resetOvershoot();
this.goToPage(targetPage);
}
this._overshootTimeoutId =
GLib.timeout_add(GLib.PRIORITY_DEFAULT, OVERSHOOT_TIMEOUT, () => {
this._resetOvershoot();