Open Bug 1199737 Opened 9 years ago Updated 1 month ago

Inertial scrolling with a non precision type trackpad can zoom the webpage on Windows

Categories

(Core :: Widget: Win32, defect, P3)

43 Branch
All
Windows 10
defect

Tracking

()

Tracking Status
firefox43 --- affected

People

(Reporter: mchang, Unassigned)

References

Details

(Whiteboard: gfx-noted, [win:sizing])

Attachments

(1 file)

When scrolling with a trackpad on Windows, we can zoom the page instead of continuing to scroll. STR: 1) Two finger scroll with a trackpad 2) While the scroll is still occurring, push ctrl. 3) The page zooms instead of continuing to scroll. Expected results: The page could still scroll. Microsoft Edge has this behavior. Chrome behaves like Firefox, but I think this is a terrible decision. I constantly randomly zoom in and out while using firefox.
Whiteboard: gfx-noted
Is this with and/or without APZ?
(In reply to Kartikaya Gupta (email:kats@mozilla.com) from comment #1) > Is this with and/or without APZ? It happens with or without APZ.
Component: Panning and Zooming → Widget: Win32
Attached patch patch?Splinter Review
Does this fix it?
Attachment #8654292 - Flags: feedback?(mchang)
Attachment #8654292 - Flags: review?(masayuki)
(In reply to Mason Chang [:mchang] from comment #0) > When scrolling with a trackpad on Windows, we can zoom the page instead of > continuing to scroll. > > STR: > 1) Two finger scroll with a trackpad > 2) While the scroll is still occurring, push ctrl. > 3) The page zooms instead of continuing to scroll. > > Expected results: > The page could still scroll. Microsoft Edge has this behavior. Chrome > behaves like Firefox, but I think this is a terrible decision. I constantly > randomly zoom in and out while using firefox. We realized that the bug description wasn't clear that this bug is about *momentum* scroll events causing zooming. The offending zooms happen after the fingers have already left the touchpad.
Summary: Scrolling with a trackpad can zoom the webpage on Windows → Inertial scrolling with a trackpad can zoom the webpage on Windows
Searching through the code again, I've come to believe that my patch isn't going to fix Mason's problem, because the wheel events are sent from a different place (probably from somewhere in WinMouseScrollHandler.cpp). I tried looking for information on how to get inertia information from WM_VSCROLL or VM_MOUSEWHEEL events, but failed. Instead I found this post which contains mostly unrelated but very interesting information: https://www.reddit.com/r/windows/comments/1hky29/precision_touchpads_the_future_of_touchpads_on/caw3obp
Comment on attachment 8654292 [details] [diff] [review] patch? Yeah, this must not fix the reported issue. But this patch does right thing.
Attachment #8654292 - Flags: review?(masayuki) → review+
Comment on attachment 8654292 [details] [diff] [review] patch? This feels a little smoother, but I'm not sure it's a placebo effect or not. Also, the patch as is, doesn't compile on windows. aWheelEvent.mIsMomentum is not a valid member of WidgetWheelEvent. It should actually be aWheelEvent.isMomentum [1]. [1] https://dxr.mozilla.org/mozilla-central/source/widget/MouseEvents.h?offset=100#500
Attachment #8654292 - Flags: feedback?(mchang) → feedback+
See Also: → 767197
Can we land this?
Flags: needinfo?(mstange)
Priority: P1 → P2
Whiteboard: gfx-noted → gfx-noted, tpi:+
Sure, but it doesn't fix the bug.
Flags: needinfo?(mstange)
I also find that as well as: "2) While the scroll is still occurring, push ctrl." it also zooms even if the page has recently hit the end and is no longer visibly scrolling, when I press crtl. (Presumably Windows 10 is still generating the scroll events to implement momentum, or something). (I seem to be hitting this often recently, having never noticed it months back when this ticket was logged. Perhaps I'm just more sensitive to it now.) Currently running: 55.0b3 (64-bit)
I'm experiencing this as well on current nightly, in a new tab, even on activity stream.
Moving to p3 because no activity for at least 1 year(s). See https://github.com/mozilla/bug-handling/blob/master/policy/triage-bugzilla.md#how-do-you-triage for more information
Priority: P2 → P3
See Also: → 1746304

With precision touchpad, we don't see reflow zoom at all. It keeps scrolling even after pressing Ctrl.

Summary: Inertial scrolling with a trackpad can zoom the webpage on Windows → Inertial scrolling with a non precision type trackpad can zoom the webpage on Windows
Severity: normal → S3

The severity field for this bug is relatively low, S3. However, the bug has 3 duplicates and 9 See Also bugs.
:spohl, could you consider increasing the bug severity?

For more information, please visit auto_nag documentation.

Flags: needinfo?(spohl.mozilla.bugs)

The last needinfo from me was triggered in error by recent activity on the bug. I'm clearing the needinfo since this is a very old bug and I don't know if it's still relevant.

Flags: needinfo?(spohl.mozilla.bugs)
Whiteboard: gfx-noted, tpi:+ → gfx-noted, [win:sizing]

Can someone who owns non-precision touchpad devices try this build?

I do actually have one but it seems to be broken, even two finger scrolling doesn't work there unfortunately.

I've managed to make my old laptop touchpad work again. It turned out unfortunately that the touchpad is actually non-precision one, but it doesn't support Windows Touch Gestures at all.

On the laptop (Lenovo Thinkpad T460p) I get WM_MOUSEWHEEL messages rather than WM_GESTURE messages, so my best guess is that the touchpad simulates inertial scrolling by sending mouse wheels for a while even after the user lifted their fingers.

Also note that Dan has tested the build in comment 19, he told me that full zoom actually stopped during inertial scrolling, but it also stops full zoom in non-inertial scrolling phases. So my best guess is that Windows sends this GF_INERTIA flag even if the user still keeps touching on the touchpad?

Duplicate of this bug: 1624780
URL: 1719909
See Also: → 1521293, 1719909
Duplicate of this bug: 1257940

I skimmed all relevant bugs related to Windows. Interestingly all recent-ish bugs were filed in 2020, and there's no new comments since then. I guess the touchpad drivers which used to support Windows Touch Gestures APIs have been migrated to use the DirectManipulation interface so that it works as precision typed devices nowadays? Probably there are some older bugs and comments that the touchpad in question doesn't support either of Windows Touch Gestures APIs or the DirectManipulation interface just like my old Windows laptop, but as far as I can tell there's nothing we can do for such devices.

Note that Chrome doesn't WM_GESTURE message at all, so I suppose they don't use Windows Touch Gestures APIs at all.

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

Attachment

General

Created:
Updated:
Size: