New issue
Advanced search Search tips

Issue 814971 link

Starred by 1 user

Issue metadata

Status: WontFix
Owner: ----
Closed: Feb 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 3
Type: Bug



Sign in to add a comment

ozone: ET_SCROLL_FLING_CANCEL is sent during single-finger touchpad mouse-moves

Project Member Reported by msw@chromium.org, Feb 22 2018

Issue description

ozone: ET_SCROLL_FLING_CANCEL is sent during single-finger mouse-moves

On Chrome OS at ToT #537362 (on Link, 1st gen Chromebook Pixel, probably elsewhere)
(1) Use a single finger on the touchpad to move the cursor around quickly
(2) Print or debug to catch events being generated
Expected: Only ET_MOUSE_MOVED is generated
Actual: ET_SCROLL_FLING_CANCEL is sent amid ET_MOUSE_MOVED events

I'm not sure why this happens and tracked it down to GestureInterpreterLibevdevCros.
Hopefully someone more familiar with that area of code can triage this issue.


 

Comment 1 by msw@chromium.org, Feb 22 2018

See Issue 806338 for some extra details.

Comment 2 by spang@chromium.org, Feb 23 2018

Status: WontFix (was: Untriaged)
If I'm remembering right it's sent to cancel any active flings when you touch the pad.

Comment 3 by spang@chromium.org, Feb 23 2018

(If there's a real issue please be specific. Sending fling cancels it not in itself a bug, as this is generated intentionally by the gestures library to stop flings).

Comment 4 by msw@chromium.org, Feb 23 2018

That might be reasonable, but it's sent even when there's no ongoing fling. WDYT?

Comment 5 by spang@chromium.org, Feb 23 2018

input code at this low level has no idea if there's an ongoing fling. All we can do it send a cancel. It is ignored if there's no fling.

Comment 6 by msw@chromium.org, Feb 23 2018

This code itself sends the ET_SCROLL_FLING_START, it could theoretically track that none has been sent since the last cancel, but maybe that's insufficient (if flings are specific to event targets or occur simultaneously, etc). I'll concede that this may be working as intended.
In more detail: it is still the case (though this in the process of changing) that the fling is done by the renderer somewhere inside InputHandlerProxy et al. or inside blink proper. Knowledge of when the fling has stopped was not propagated to the browser. To make sure that users could touch-down and immediately start scrolling, the input code sent fling stops on a touch-down. 

Comment 8 by msw@chromium.org, Feb 23 2018

It seems like the client could possibly cancel flings as needed on touch down, or the fling cancel could be sent when a new scroll gesture begins, rather than on touch-down.

It's odd that we cancel flings on *touchpad touch-down*, where single finger gestures generally translate to cursor movement; scrolling/flinging should work independent of cursor movement.

Perhaps scroll cancel should be sent for a single finger touch-down on a touchscreen, but only for a two-finger touch-down on a touchpad?

Comment 9 by spang@chromium.org, Feb 23 2018

Cc: adlr@chromium.org
+adlr

I am not sure what the desired UX is but I assume that this was discussed in the past and led to the current implementation. Andrew owns the gestures implementation and should have more context about this.

If touchpad needs to be able to cancel flings initiated from a different device, then that justifies why it's sending them all the time. It can't know when a fling has been initiated from another devices.

Comment 10 by spang@chromium.org, Feb 23 2018

Note there's no "touch down" event for touchpads, unless you count the "fling cancel" event.

Comment 11 by msw@chromium.org, Feb 23 2018

Summary: ozone: ET_SCROLL_FLING_CANCEL is sent during single-finger touchpad mouse-moves (was: ozone: ET_SCROLL_FLING_CANCEL is sent during single-finger mouse-moves)
Even if a fling was initiated on the touchscreen, it's not obvious that touching a single finger to the touchpad (or even dragging that finger to generate mouse/cursor movement) should cancel the touchscreen fling.

At this point, I'm kinda playing devil's advocate to ensure our behavior is correct; Issue 806338 is fixed.

Sign in to add a comment