Describe the bug
UWP apps on devices with precision trackpads have a silky-smooth feel as you scroll through them with two fingers with a touchpad. It glides down pages and slows down as you release your fingers and bounces when you hit the ends. This experience continues in UWP apps using WinUI 3 in UWP. WinUI 3 apps in Win32, however, have a very choppy feel, where the scrolling does not glide or bounce.
The issues I’m writing about here occur with a precision touchpad. With a Synaptics touchpad (non-precision), the two-finger scrolling is choppy in WinUI 3 UWP, and in WinUI 3 Win32, essentially non-functional (see separate issue https://github.com/microsoft/microsoft-ui-xaml/issues/2482).
To summarize:
| Device | UWP without WinUI | UWP WinUI 3 | UWP Win32 |
| :-- | :-- | :-- | :-- |
| Precision touchpad | âś… Perfect scrolling | âś… Perfect scrolling | âš Low quality scrolling |
| Synaptics touchpad | ✅ Perfect scrolling | ⚠Low quality scrolling | 🛑 Totally non-functional https://github.com/microsoft/microsoft-ui-xaml/issues/2482 |
| Scroll wheel | âś… Perfect scrolling | âś… Perfect scrolling | âś… Perfect scrolling | âś… Perfect scrolling |
| Touch screen | âś… Perfect scrolling | âś… Perfect scrolling | âś… Perfect scrolling | âś… Perfect scrolling |
Steps to reproduce the bug
Steps to reproduce the behavior:
Expected behavior
Scrolling with the scroll wheel and touch screen (and just dragging the scrollbar with the mouse) all function as expected already. The main issue is that WinUI 3 Win32 apps do not have high-quality scrolling with precision touchpads. Scrolling should feel the same in WinUI 3 for both UWP and Win32 as it does in UWP XAML for both precision and other touchpads alike.
Screenshots
| WinUI UWP | WinUI Win32 |
| :-: | :-: |
| Beautiful, smooth with precision touchpad | Choppy, no bounce effect with precision touchpad |
Version Info
NuGet package version:
Microsoft.WinUI 3.0.0-preview1.200515.3
| Windows 10 version | Saw the problem? |
| :--------------------------------- | :-------------------- |
| Insider Build (xxxxx) | |
| November 2019 Update (18363) | Yes (tested Synaptics touchpad) |
| May 2019 Update (18362) | Yes (tested precision touchpad) |
| October 2018 Update (17763) | |
| April 2018 Update (17134) | |
| Fall Creators Update (16299) | |
| Creators Update (15063) | |
| Device form factor | Saw the problem? |
| :-------------------- | :------------------- |
| Desktop | Yes |
| Mobile | |
| Xbox | |
| Surface Hub | |
| IoT | |
This, #2506, and #2486 seem related in that interactions with WinUI elements running in a Win32 process are rendered at 30 fps - or the DWM's rendering rate is just set to 30. @ranjeshj
just while you're here I want to mention that you can't scroll horizontally in task manager and just overall scrolling in win32 apps sucks. Microsoft uses win32, even in new apps like Teams, so they can't just tell you to use WinUI and UWP.
Changing the zoom factor of a scrollviewer in a mouse wheel handler is very smooth with the platform XAML in a XAML island but very choppy in winui3 desktop (Preview2)
Most helpful comment
just while you're here I want to mention that you can't scroll horizontally in task manager and just overall scrolling in win32 apps sucks. Microsoft uses win32, even in new apps like Teams, so they can't just tell you to use WinUI and UWP.