Make `PointerEventHandler` manage synthesizing `ePointerMove` per `pointerId`
Categories
(Core :: DOM: Events, defect)
Tracking
()
| Tracking | Status | |
|---|---|---|
| firefox141 | --- | fixed |
People
(Reporter: masayuki, Assigned: masayuki)
References
(Blocks 1 open bug)
Details
Attachments
(3 files)
Bug 1966551 will start synthesizing ePointerMove when eMouseMove is synthesized. However, that means that only the last pointer which caused the synthesized eMouseMove will work as Pointer Events spec defined. For supporting multiple hoverable pointers, like pen or WebDriver's synthetic multiple mice, we should store the last position of all pointers and synthesize ePointerMove for all pointers.
| Assignee | ||
Updated•5 months ago
|
Updated•5 months ago
|
| Assignee | ||
Comment 1•4 months ago
|
||
PointeInfo will have more members so that the bool should be
bit field to keep its size small as far as possible.
And also the constructor takes bool arguments too many. Therefore,
it's hard to read the callers. Therefore, this changes them to
enum classes.
Finally, some callers copies WidgetPointerEvent data to PointerInfo.
So, taking const WidgetPointerEvent& makes the caller side simpler.
| Assignee | ||
Comment 2•4 months ago
|
||
Pointer Events should be handled per pointerId. However, currently,
we dispatch pointer boundary events at a layout change only for the
last pointer which updated the last mouse location because we dispatch
a synthesized ePointerMove as a preceding pointer event of a synthetic
eMouseMove.
This patch makes PointerInfo store the last pointer state for each
pointerId. Then, the synthesizer can dispatch synthetic
ePointerMove for any active pointerIds. Finally, PresShell can
stop handling a preceding ePointerMove for a synthetic eMouseMove.
| Assignee | ||
Comment 3•4 months ago
|
||
It does not make sense that PresShell has members to store all data
which are required for dispatching a synthetic eMouseMove.
This patch makes PointerEventHandler store the most last mouse event
data except pointerId. Then, PresShell starts storing only the
last pointerId to skip more expensive checks whether the PresShell
actually needs to dispatch a synthesized eMouseMove.
This makes it easier to fix bug 749553.
Comment 5•4 months ago
|
||
| bugherder | ||
https://hg.mozilla.org/mozilla-central/rev/0cef7d5b75f8
https://hg.mozilla.org/mozilla-central/rev/7cca02201479
https://hg.mozilla.org/mozilla-central/rev/dd7642eeb99d
Updated•4 months ago
|
Description
•