Open Bug 1892537 Opened 29 days ago Updated 16 days ago

The behavior of pen is different between Windows Chrome and Windows Firefox

Categories

(Core :: DOM: UI Events & Focus Handling, defect)

defect

Tracking

()

Tracking Status
firefox-esr115 --- wontfix
firefox125 --- wontfix
firefox126 --- fix-optional
firefox127 --- fix-optional

People

(Reporter: saschanaz, Assigned: saschanaz, NeedInfo)

References

(Regression)

Details

(Keywords: parity-chrome, regression)

  1. Open https://patrickhlauke.github.io/touch/pen-tracker/ on either browser on touch-capable device (Surface Pro 7 in my case)
  2. Drag with pen on the page

Expected: The pen should appear in the screen surface and move on it, and should not move the surface itself.
Actual: The pen appears but dragging moves the surface instead of the pen.

Disabling dom.w3c_pointer_events.scroll_by_pen.enabled fixes it, but this flag is actually to mimic the Chrome behavior. The work item is to find the behavior difference when the pref is on.

(Found this while checking the Android webcompat report. The pen does not show up at all on Android.)

Set release status flags based on info from the regressing bug 1637259

Severity: -- → S3
See Also: → 1894692

I see two issues:

  1. Somehow the page gets pointerdown with isPrimary=false, so even on pen input it does not disable "orbit control" that pans the surface, which is handled by the following touchstart event.
  2. Then it gets touchmove before pointermove, but pointermove should fire first. The page then assumes this touchmove is not from a pen and it calls e.preventDefault/stopPropagation, so pointermove never fires.

Edgar, do you have any quick idea where to start looking? At least the second issue sounds like some bug in EventStateManager.

Flags: needinfo?(echen)

(And the Android issue is that GeckoView does not handle pens at all, so I filed bug 1894692. Surprising that there's no existing bug, or maybe my search skill is bad.)

You need to log in before you can comment on or make changes to this bug.