Thanks for your quick and thorough reply!
(In reply to Doug Thayer [:dthayer] (he/him) from comment #8)
In theory it shouldn't - we create the first window much earlier than usual, trying our best to exactly match the first toplevel window that
nsWindow creates, and then when
nsWindow actually comes along and tries to create its first toplevel window, it just consumes the one we already created.
Ah, it we re-use the skeleton hwnd as our hwnd, that could be involved somehow, I didn't realize that.
Does it change any window styles or anything like that?
It's possible that there is a window style mismatch. On debug builds we assert that the style of the early window matches the style that we intend to create, though - so we should be failing that assertion on debug builds for anyone who would be experiencing this - if a window style discrepancy is the underlying cause.
Yeah, I didn't hit any assert when reproducing a debug build.
This effect does not go away, it is not something that just happens early in the process.
Does dmanip work for new windows created after the first one?
Yes. We call RecreateDirectManipulationIfNeeded when we create a new window.
<snip some debugging suggestions>
I'll give those a try.
I wouldn't mind debugging this and solving it myself, though maybe I would need to get loaner hardware to reproduce this? I do most of my work on a desktop Windows machine, and my one Windows laptop does not seem to exhibit this problem (scrolling continues after fingers leave the touchpad with or without the skeleton UI enabled.)
I'm not 100% sure how to reproduce this on demand, but I did develop these complicated steps which seemed to work 100% of the time and allowed me to bisect this:
run mozregression, ignore the instance that it runs though (keep it open though). Use the firefox.exe that it creates in the tmp dir and run with my default nightly development profile, test scrolling in that, close, run it again, test scrolling. Then run that firefox.exe again with no cmd line arguments (this seems to cause it to use/create some sort of fresh profile), test scrolling, close it. Then run firefox.exe again with no cmd line arguments (so that regular about:home comes up), test scrolling, the scrolling will now have no inertia.
For your laptop to reproduce it would need to have a precision touchpad, you can verify this in Windows settings under touchpad, it'll say precision touchpad if you have one. I've also heard from a couple developers with thinkpads that they were able to find and install some drivers that then "activated" the precision touchpad on their machine.
I do almost all of my Windows development on a desktop machine, I bought a usb touchpad so I could implement dmanip, specifically this https://www.amazon.ca/gp/product/B07TM8FZYB/ and it works quite well. I'm going to spend some time today debugging this though.