Closed Bug 1697769 Opened 4 years ago Closed 4 years ago

User is unable to scroll using the scroll bar inside the Hamburger menu on Touch devices

Categories

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

Desktop
Windows 10
defect

Tracking

()

RESOLVED FIXED
89 Branch
Tracking Status
firefox-esr78 --- unaffected
firefox86 --- unaffected
firefox87 --- unaffected
firefox88 --- disabled
firefox89 --- fixed

People

(Reporter: rdoghi, Assigned: edgar)

References

(Regression)

Details

(Keywords: regression)

Attachments

(1 file)

[Affected versions]
Nightly 88

[Affected platforms]
Touch devices

[Steps to reproduce]

  1. Launch the Firefox browser and open the Hamburger menu.
  2. Try to move the scroll bar inside the Hamburger menu.

[Expected result]
The User should be able to scroll inside the Hamburger menu using the scroll bar on touch devices.

[Actual result]
The scroll bar remains fixed and the user is unable to scroll inside the hamburger menu using it.

Push Log from the first Bad build
https://hg.mozilla.org/integration/autoland/pushloghtml?fromchange=fddc94978eb7f42cca5d199b94164d133facc3e7&tochange=31462a8e07406103e8d97b19faf9af3bd63530b6
It seems that Bug 1682527 might cause this issue.

Edgar do you mind taking a look at this issue ?

Flags: needinfo?(echen)
Assignee: nobody → echen
Blocks: 1684842
Flags: needinfo?(echen)
Attachment #9214415 - Attachment description: Bug 1697769 - Test; → WIP: Bug 1697769 - Test;

Okay, after some investigation, dragging scrollbar doesn't work because nsSliderFrame::HandleEvent isn't run.

In Windows, the touch action on chrome popup would generate compatibility mouse events instead, see https://searchfox.org/mozilla-central/rev/fa48ebee58d59fa846919c3e2c3122b08db57c9c/widget/windows/nsWindow.cpp#8129-8135. And when implicitly pointer capture is enabled, we run the HandleEvent of the captured element's primary frame, i.e. thumb's frame, instead of the scrollbar's frame.

I wrote a test to simulate the issue, touch event doesn't have the same issue because we take the captureContent in PresShell into account in https://searchfox.org/mozilla-central/rev/fa48ebee58d59fa846919c3e2c3122b08db57c9c/layout/base/PresShell.cpp#8712-8719, the capture content is set in https://searchfox.org/mozilla-central/rev/fa48ebee58d59fa846919c3e2c3122b08db57c9c/layout/xul/nsSliderFrame.cpp#1277-1286.

Attachment #9214415 - Attachment description: WIP: Bug 1697769 - Test; → Bug 1697769 - Apply implicit pointer capture only for pointer events that are generated from the touch events;
Pushed by echen@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/d3ff81521b17 Apply implicit pointer capture only for pointer events that are generated from the touch events; r=smaug
Status: NEW → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
Target Milestone: --- → 89 Branch
Has Regression Range: --- → yes
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: