Microsoft-ui-xaml: Windows 1903 breaks two finger touchpad panning in XAML islands

Created on 27 May 2019  路  29Comments  路  Source: microsoft/microsoft-ui-xaml

Describe the bug

In Windows 1809, two finger panning with the touchpad worked perfectly when using a ScrollViewer in a XAML Islands. It is broken on Windows 1903 and apparently tries to emulate mouse wheel events.

Steps to reproduce the bug

Steps to reproduce the behavior:

*Create a XAML Island application (winforms)
*Add a ScrollViewer (the inbox version) with horizontal and vertical scrolling enabled and a suitable content (larger than the scrollviewer itself)
*Try invoking two finger panning on the touchpad
*Vertical panning might work, but I guess only because it fires PointerWheelChanged events
*Horizontal panning does not work

Expected behavior

Two finger panning on the touchpad works correctly as in Windows 1809.

Screenshots

Version Info

NuGet package version:


| Windows 10 version | Saw the problem? |
| :--------------------------------- | :-------------------- |
| Insider Build (xxxxx) | |
| May 2019 Update (18362) | Yes |
| October 2018 Update (17763) | No |
| April 2018 Update (17134) | |
| Fall Creators Update (16299) | |
| Creators Update (15063) | |
| Anniversary Update (14393) | |


| Device form factor | Saw the problem? |
| :-------------------- | :------------------- |
| Desktop | Yes |
| Mobile | |
| Xbox | |
| Surface Hub | |
| IoT | |

Additional context

area-Islands bug team-Reach

All 29 comments

@lhak could you attach or point to a small repro app? This could be a compositor chaining issue, i'll follow up.

I have attached a repro project below. If you compile and start it on Windows 1809 (without debugging), panning and zooming with the touchpad will work, but it is broken on Windows 1903.

WindowsFormsApp1.zip

@Austin-Lamb I think you have more context on this, can you follow up?

@lhak, thanks for reporting this! I'm following up with some folks internally to figure out what's going on. We drastically changed the input plumbing for XAML Islands in 1903, but I don't yet know how it caused this issue.

Does your machine have a Precision TouchPad? If you're not sure, can you update with some details about your hardware (make/model/etc.)?

Thanks!

Yes, all the machines I have tested it on have precision touchpads. This includes a ThinkPad e480 and a Surface Go. On both machines it worked fine before updating to Windows 1903.

Any update on this bug? Maybe its useful to know that I managed to workaround issue #798 to try the winui ScrollViewer and can confirm that the touchpad gestures work there. Unfortunately, even when issue #798 is fixed in the future, this will not help because the winui ScrollViewer does not work correctly in my scenario and also still seems to lack a lot of features.

@lhak - We don't yet know the root cause of this bug, but have been investigating. The fix for this is in the framework, or possibly in another OS component we depend on in the input subsystem, so unfortunately this means we can't fix the issue until WinUI 3 (or possibly later) just to set expectations that this one won't have a fix in the short term.

I think the best we can hope for is that once we find the root cause, maybe we can find some way to workaround the bug temporarily - but I'm not super hopeful about that.

For the feedback on ScrollViewer, I'm sure @jevansaks would be interested to hear what features it's lacking. Could you followup with him and open more issues for us on what the winui ScrollViewer is missing?

@Austin-Lamb So if I understand you correctly you do not plan fix this bug (which was introduced by Microsoft...) and roll it out in a Windows update in the next weeks? I seriously hope this is not what you are implying...

Seems that I am not the only one discovering this bug: windows-toolkit/Microsoft.Toolkit.Win32#117

@lhak - Sorry, I shouldn鈥檛 have speculated that far. We鈥檙e still actively investigating the issue, so let鈥檚 wait until we understand the root cause to see what component it鈥檚 in. That will help us understand what options we have for workarounds or Windows Updates.

@lhak - we're still investigating this, but so far we've been unable to repro it working on 1809 as a comparison point. I can confirm we see the repro on 1903 as well.

I'm wondering what might be different about your machine/app/something that had it working in 1809. Are you able to confirm that it definitely worked in 1809?

Yes, I can confirm that it definitely worked on 1809 (actually tried it today on a machine that is still on this release). See above for a repro project that works on 1809 but is broken on 1903.

Yeah, we've been using that repro project, but haven't been able to see two-finger pan working on 1809 yet. We're investigating on 1903 anyway, but comparing it working on 1809 would help us narrow down the root cause faster.

Could you perhaps take a video of your repro on 1809 so we can see if there's somehow a subtle difference in the repro steps you're using?

I tried again on a 1809 machine (Acer Aspire V3 laptop with a precision touchpad) with the repro project using the following steps:

  • Unzip the file
  • Open the project in Visual studio
  • Build it and start it (might require nuget restore before)

As you can see in the video below, two finger panning on the touchpad then works fine:

Form1 2019-06-17 13-07-23.zip

Thanks @lhak - we've gotten further with the debugging and are starting to think this is related to DPI. Win32 has many DPI modes (DPI unaware, system aware, per-monitor aware, per-mon v2 aware...it's complicated). What is your display scaling set to in Settings -> Display -> "Change the size of text, apps, and other items", on both your 1809 and 1903 machines?

@Austin-Lamb The application I use is per-monitor v2 aware. Scaling of the machines on 1809 and 1903 is set to 125%. Changing it does not seem to make a difference

@lhak - We think we've finally identified the root cause, and are working on testing the fix thoroughly. It will take some time to have an internal discussion about what the next steps are to move this along, but at least we've made good progress these past couple days!

@lhak - Thanks again for reporting this. We鈥檝e confirmed the root cause and are putting a candidate fix out in the next Windows Insider Fast flight (18927 or higher will have the fix). Once we鈥檙e able to evaluate this in the broader population, we鈥檒l look into servicing options for 1903. If you鈥檙e able to use an Insider Fast flight to help us validate the fix, that would be appreciated.

I finally managed to put my Surface 3 on the current insider fast build. Unfortunately, my application crashes (the same code works fine on the current stable Windows release). This is the stack trace:

    twinapi.appcore.dll!Windows::ApplicationModel::Core::CoreApplicationViewTitleBar::_TryGetTitleBarClientAdapter(struct Windows::Internal::ApplicationModel::WindowManagement::ITitleBarClientAdapter * *)    
    twinapi.appcore.dll!Windows::ApplicationModel::Core::CoreApplicationViewTitleBar::add_LayoutMetricsChanged(struct Windows::Foundation::ITypedEventHandler<class Windows::ApplicationModel::Core::CoreApplicationViewTitleBar *,struct IInspectable *> *,struct EventRegistrationToken *)    
    Windows.UI.Xaml.Controls.dll!winrt::impl::consume_Windows_ApplicationModel_Core_ICoreApplicationViewTitleBar<struct winrt::Windows::ApplicationModel::Core::ICoreApplicationViewTitleBar>::LayoutMetricsChanged(struct winrt::auto_revoke_t,struct winrt::Windows::Foundation::TypedEventHandler<struct winrt::Windows::ApplicationModel::Core::CoreApplicationViewTitleBar,struct winrt::Windows::Foundation::IInspectable> const &)   
    Windows.UI.Xaml.Controls.dll!NavigationView::OnApplyTemplate(void)  
    Windows.UI.Xaml.Controls.dll!winrt::impl::produce<class NavigationView,struct winrt::Windows::UI::Xaml::IFrameworkElementOverrides>::OnApplyTemplate(void)  
    Windows.UI.Xaml.dll!DirectUI::FrameworkElementGenerated::OnApplyTemplateProtected() Line 1096   C++
    Windows.UI.Xaml.dll!DirectUI::FrameworkElement::OnApplyTemplateFromCore(CFrameworkElement * nativeTarget) Line 191  C++
    [Inlineframe] Windows.UI.Xaml.dll!CFxCallbacks::FrameworkElement_OnApplyTemplate(CFrameworkElement *) Line 850  C++
    Windows.UI.Xaml.dll!CFrameworkElement::InvokeApplyTemplate(unsigned char * bAddedVisuals) Line 1289 C++
    Windows.UI.Xaml.dll!CFrameworkElement::MeasureCore(XSIZEF availableSize, XSIZEF & desiredSize) Line 1561    C++
    Windows.UI.Xaml.dll!CUIElement::MeasureInternal(XSIZEF availableSize) Line 4121 C++
    Windows.UI.Xaml.dll!CUIElement::Measure(XSIZEF availableSize) Line 3981 C++
    Windows.UI.Xaml.dll!CGrid::MeasureOverride(XSIZEF availableSize, XSIZEF & desiredSize) Line 1021    C++
    Windows.UI.Xaml.dll!CFrameworkElement::MeasureCore(XSIZEF availableSize, XSIZEF & desiredSize) Line 1614    C++
    Windows.UI.Xaml.dll!CUIElement::MeasureInternal(XSIZEF availableSize) Line 4121 C++
    Windows.UI.Xaml.dll!CUIElement::Measure(XSIZEF availableSize) Line 3981 C++
    [Inlineframe] Windows.UI.Xaml.dll!UIElement_Measure(CUIElement *) Line 999  C++
    Windows.UI.Xaml.dll!DirectUI::UIElement::MeasureImpl(Windows::Foundation::Size availableSize) Line 573  C++
    Windows.UI.Xaml.dll!DirectUI::UIElementGenerated::Measure(Windows::Foundation::Size availableSize) Line 4318    C++
    Windows.UI.Xaml.dll!DirectUI::Page::MeasureOverride(Windows::Foundation::Size availableSize, Windows::Foundation::Size * pReturnValue) Line 628 C++
    Windows.UI.Xaml.dll!DirectUI::FrameworkElementGenerated::MeasureOverrideProtected(Windows::Foundation::Size availableSize, Windows::Foundation::Size * pReturnValue) Line 1052  C++
    Windows.UI.Xaml.dll!DirectUI::FrameworkElement::MeasureOverrideFromCore(CFrameworkElement * nativeTarget, float inWidth, float inHeight, float * outWidth, float * outHeight) Line 255  C++
    [Inlineframe] Windows.UI.Xaml.dll!CFxCallbacks::FrameworkElement_MeasureOverride(CFrameworkElement *) Line 844  C++
    Windows.UI.Xaml.dll!CFrameworkElement::MeasureCore(XSIZEF availableSize, XSIZEF & desiredSize) Line 1597    C++
    Windows.UI.Xaml.dll!CUIElement::MeasureInternal(XSIZEF availableSize) Line 4121 C++
    Windows.UI.Xaml.dll!CUIElement::Measure(XSIZEF availableSize) Line 3981 C++
    [Inlineframe] Windows.UI.Xaml.dll!UIElement_Measure(CUIElement *) Line 999  C++
    Windows.UI.Xaml.dll!DirectUI::UIElement::MeasureImpl(Windows::Foundation::Size availableSize) Line 573  C++
    Windows.UI.Xaml.dll!DirectUI::UIElementGenerated::Measure(Windows::Foundation::Size availableSize) Line 4318    C++
    [Externer Code] 
    Windows.UI.Xaml.dll!DirectUI::FrameworkElementGenerated::MeasureOverrideProtected(Windows::Foundation::Size availableSize, Windows::Foundation::Size * pReturnValue) Line 1052  C++
    Windows.UI.Xaml.dll!DirectUI::FrameworkElement::MeasureOverrideFromCore(CFrameworkElement * nativeTarget, float inWidth, float inHeight, float * outWidth, float * outHeight) Line 255  C++
    [Inlineframe] Windows.UI.Xaml.dll!CFxCallbacks::FrameworkElement_MeasureOverride(CFrameworkElement *) Line 844  C++
    Windows.UI.Xaml.dll!CFrameworkElement::MeasureCore(XSIZEF availableSize, XSIZEF & desiredSize) Line 1597    C++
    Windows.UI.Xaml.dll!CUIElement::MeasureInternal(XSIZEF availableSize) Line 4121 C++
    Windows.UI.Xaml.dll!CUIElement::Measure(XSIZEF availableSize) Line 3981 C++
    Windows.UI.Xaml.dll!CBorder::MeasureOverride(XSIZEF availableSize, XSIZEF & desiredSize) Line 254   C++
    Windows.UI.Xaml.dll!CFrameworkElement::MeasureCore(XSIZEF availableSize, XSIZEF & desiredSize) Line 1614    C++
    Windows.UI.Xaml.dll!CUIElement::MeasureInternal(XSIZEF availableSize) Line 4121 C++
    Windows.UI.Xaml.dll!CUIElement::Measure(XSIZEF availableSize) Line 3981 C++
    [Inlineframe] Windows.UI.Xaml.dll!UIElement_Measure(CUIElement *) Line 999  C++
    Windows.UI.Xaml.dll!DirectUI::UIElement::MeasureImpl(Windows::Foundation::Size availableSize) Line 573  C++
    Windows.UI.Xaml.dll!DirectUI::UIElementGenerated::Measure(Windows::Foundation::Size availableSize) Line 4318    C++
    Windows.UI.Xaml.dll!DirectUI::ScrollContentPresenter::MeasureOverride(Windows::Foundation::Size availableSize, Windows::Foundation::Size * pReturnValue) Line 1862  C++
    Windows.UI.Xaml.dll!DirectUI::FrameworkElementGenerated::MeasureOverrideProtected(Windows::Foundation::Size availableSize, Windows::Foundation::Size * pReturnValue) Line 1056  C++
    Windows.UI.Xaml.dll!DirectUI::FrameworkElement::MeasureOverrideFromCore(CFrameworkElement * nativeTarget, float inWidth, float inHeight, float * outWidth, float * outHeight) Line 255  C++
    [Inlineframe] Windows.UI.Xaml.dll!CFxCallbacks::FrameworkElement_MeasureOverride(CFrameworkElement *) Line 844  C++
    Windows.UI.Xaml.dll!CFrameworkElement::MeasureCore(XSIZEF availableSize, XSIZEF & desiredSize) Line 1597    C++
    Windows.UI.Xaml.dll!CUIElement::MeasureInternal(XSIZEF availableSize) Line 4121 C++
    Windows.UI.Xaml.dll!CUIElement::Measure(XSIZEF availableSize) Line 3981 C++
    [Inlineframe] Windows.UI.Xaml.dll!UIElement_Measure(CUIElement *) Line 999  C++
    Windows.UI.Xaml.dll!DirectUI::UIElement::MeasureImpl(Windows::Foundation::Size availableSize) Line 573  C++
    Windows.UI.Xaml.dll!DirectUI::UIElementGenerated::Measure(Windows::Foundation::Size availableSize) Line 4318    C++
    Windows.UI.Xaml.dll!DirectUI::ScrollViewer::MeasureOverride(Windows::Foundation::Size availableSize, Windows::Foundation::Size * pDesired) Line 1963    C++
    Windows.UI.Xaml.dll!DirectUI::FrameworkElementGenerated::MeasureOverrideProtected(Windows::Foundation::Size availableSize, Windows::Foundation::Size * pReturnValue) Line 1056  C++
    Windows.UI.Xaml.dll!DirectUI::FrameworkElement::MeasureOverrideFromCore(CFrameworkElement * nativeTarget, float inWidth, float inHeight, float * outWidth, float * outHeight) Line 255  C++
    [Inlineframe] Windows.UI.Xaml.dll!CFxCallbacks::FrameworkElement_MeasureOverride(CFrameworkElement *) Line 844  C++
    Windows.UI.Xaml.dll!CFrameworkElement::MeasureCore(XSIZEF availableSize, XSIZEF & desiredSize) Line 1597    C++
    Windows.UI.Xaml.dll!CUIElement::MeasureInternal(XSIZEF availableSize) Line 4121 C++
    Windows.UI.Xaml.dll!CUIElement::Measure(XSIZEF availableSize) Line 3981 C++
    Windows.UI.Xaml.dll!CXamlIslandRoot::MeasureOverride(XSIZEF availableSize, XSIZEF & desiredSize) Line 830   C++
    Windows.UI.Xaml.dll!CFrameworkElement::MeasureCore(XSIZEF availableSize, XSIZEF & desiredSize) Line 1614    C++
    Windows.UI.Xaml.dll!CUIElement::MeasureInternal(XSIZEF availableSize) Line 4121 C++
    Windows.UI.Xaml.dll!CUIElement::Measure(XSIZEF availableSize) Line 3981 C++
    Windows.UI.Xaml.dll!CXamlIslandRootCollection::MeasureOverride(XSIZEF availableSize, XSIZEF & desiredSize) Line 24  C++
    Windows.UI.Xaml.dll!CFrameworkElement::MeasureCore(XSIZEF availableSize, XSIZEF & desiredSize) Line 1614    C++
    Windows.UI.Xaml.dll!CUIElement::MeasureInternal(XSIZEF availableSize) Line 4121 C++
    Windows.UI.Xaml.dll!CUIElement::Measure(XSIZEF availableSize) Line 3981 C++
    Windows.UI.Xaml.dll!CRootVisual::MeasureOverride(XSIZEF availableSize, XSIZEF & desiredSize) Line 97    C++
    Windows.UI.Xaml.dll!CFrameworkElement::MeasureCore(XSIZEF availableSize, XSIZEF & desiredSize) Line 1614    C++
    Windows.UI.Xaml.dll!CUIElement::MeasureInternal(XSIZEF availableSize) Line 4121 C++
    Windows.UI.Xaml.dll!CUIElement::Measure(XSIZEF availableSize) Line 3981 C++
    Windows.UI.Xaml.dll!CLayoutManager::UpdateLayout(unsigned int controlWidth, unsigned int controlHeight) Line 279    C++
    Windows.UI.Xaml.dll!CCoreServices::NWDrawTree(HWWalk * pHWWalk, CWindowRenderTarget * pRenderTarget, VisualTree * pVisualTree, unsigned int forceRedraw, XRECT_WH * prcDirtyRect) Line 6288 C++
    Windows.UI.Xaml.dll!CCoreServices::NWDrawMainTree(CWindowRenderTarget * pIRenderTarget, bool fForceRedraw, XRECT_WH * prcDirtyRect) Line 6078   C++
    Windows.UI.Xaml.dll!CWindowRenderTarget::Draw(CCoreServices * fForceRedraw, unsigned int prcDirtyRect, XRECT_WH *) Line 136 C++
    Windows.UI.Xaml.dll!CXcpBrowserHost::OnTick() Line 545  C++
    Windows.UI.Xaml.dll!CXcpDispatcher::Tick() Line 1447    C++
    Windows.UI.Xaml.dll!CXcpDispatcher::OnReentrancyProtectedWindowMessage(HWND__ * msg, unsigned int lParam, unsigned __int64) Line 1047   C++
    Windows.UI.Xaml.dll!CXcpDispatcher::ProcessMessage(HWND__ * msg, unsigned int wParam, unsigned __int64 lParam, __int64 plRet, __int64 * pbDoDefault, unsigned int *) Line 891   C++
    Windows.UI.Xaml.dll!CXcpDispatcher::WindowProc(HWND__ * hwnd, unsigned int msg, unsigned __int64 wParam, __int64 lParam) Line 837   C++
    Windows.UI.Xaml.dll!CDeferredInvoke::DispatchQueuedMessage(bool * dispatchedWork, bool * hasMoreWork) Line 299  C++
    [Inlineframe] Windows.UI.Xaml.dll!CXcpDispatcher::MessageTimerCallback() Line 1532  C++
    Windows.UI.Xaml.dll!CXcpDispatcher::MessageTimerCallbackStatic(void * myUserData) Line 1524 C++
    CoreMessaging.dll!Microsoft__CoreUI__Dispatch__TimeoutHandler$CallbackThunk(class System::Delegate *)   
    CoreMessaging.dll!Microsoft::CoreUI::Dispatch::TimeoutManager::Callback_OnDispatch()    
    CoreMessaging.dll!Microsoft::CoreUI::Dispatch::EventLoop::Callback_RunCoreLoop(struct Microsoft::CoreUI::Dispatch::RunMode,bool,bool &) 
    CoreMessaging.dll!Microsoft::CoreUI::Dispatch::UserAdapter::OnUserDispatch()    
    CoreMessaging.dll!Microsoft::CoreUI::Dispatch::UserAdapter_DoWork() 
    CoreMessaging.dll!Microsoft::CoreUI::Dispatch::UserAdapter_WindowProc() 
    user32.dll!UserCallWinProcCheckWow()    
    user32.dll!DispatchClientMessage()  
    user32.dll!__fnDWORD
()  
    ntdll.dll!KiUserCallbackDispatcherContinue
()  
    win32u.dll!NtUserPeekMessage
()  
    user32.dll!_PeekMessage()   
    user32.dll!PeekMessageW()   
    System.Windows.Forms.ni.dll!00007ffedcc0df6b()  

Ouch, that's bad. What OS version are you on?

The device is on the latest insider fast build, so version 18956.

@lhak are you trying to use NavigationView in a XAML Island? This may be a separate regression. Could you file a new bug for that?

And please include a repro app if you can!

That crash in twinapi.appcore.dll!Windows::ApplicationModel::Core::CoreApplicationViewTitleBar::_TryGetTitleBarClientAdapter appears to be the same as the one found in internal Watson bug 22051719 for which the stack trace was:

twinapi_appcore!Microsoft::WRL::ComPtr_Windows::Phone::UI::Core::INavigationClient_::As_Windows::Internal::ApplicationModel::WindowManagement::INavigationClient_AdapterOwner_
twinapi_appcore!Windows::ApplicationModel::Core::CoreApplicationViewTitleBar::_TryGetTitleBarClientAdapter
twinapi_appcore!Windows::ApplicationModel::Core::CoreApplicationViewTitleBar::add_LayoutMetricsChanged
windows_ui_xaml_controls!winrt::impl::consume_Windows_ApplicationModel_Core_ICoreApplicationViewTitleBar_winrt::Windows::ApplicationModel::Core::ICoreApplicationViewTitleBar_::LayoutMetricsChanged
windows_ui_xaml_controls!NavigationView::OnApplyTemplate
windows_ui_xaml_controls!winrt::impl::produce_NavigationView,winrt::Windows::UI::Xaml::IFrameworkElementOverrides_::OnApplyTemplate
windows_ui_xaml_7ffc06060000!DirectUI::FrameworkElementGenerated::OnApplyTemplateProtected
windows_ui_xaml_7ffc06060000!DirectUI::FrameworkElement::OnApplyTemplateFromCore
windows_ui_xaml_7ffc06060000!CFrameworkElement::InvokeApplyTemplate
windows_ui_xaml_7ffc06060000!CFrameworkElement::MeasureCore
windows_ui_xaml_7ffc06060000!CUIElement::MeasureInternal
windows_ui_xaml_7ffc06060000!CUIElement::Measure
windows_ui_xaml_7ffc06060000!CBorder::MeasureOverride
...
windows_ui_xaml_7ffc06060000!CLayoutManager::UpdateLayout
windows_ui_xaml_7ffc06060000!CCoreServices::NWDrawTree
windows_ui_xaml_7ffc06060000!CCoreServices::NWDrawMainTree
windows_ui_xaml_7ffc06060000!CWindowRenderTarget::Draw
windows_ui_xaml_7ffc06060000!CXcpBrowserHost::OnTick
windows_ui_xaml_7ffc06060000!CXcpDispatcher::Tick
windows_ui_xaml_7ffc06060000!CXcpDispatcher::OnReentrancyProtectedWindowMessage
windows_ui_xaml_7ffc06060000!CXcpDispatcher::ProcessMessage
windows_ui_xaml_7ffc06060000!CXcpDispatcher::WindowProc
windows_ui_xaml_7ffc06060000!CDeferredInvoke::DispatchQueuedMessage
windows_ui_xaml_7ffc06060000!CXcpDispatcher::MessageTimerCallbackStatic
coremessaging!Microsoft__CoreUI__Dispatch__TimeoutHandler$CallbackThunk
coremessaging!Microsoft::CoreUI::Dispatch::TimeoutManager::Callback_OnDispatch
coremessaging!Microsoft::CoreUI::Dispatch::EventLoop::Callback_RunCoreLoop
coremessaging!Microsoft::CoreUI::Dispatch::UserAdapter::OnUserDispatch
coremessaging!Microsoft::CoreUI::Dispatch::UserAdapter_DoWork
coremessaging!Microsoft::CoreUI::Dispatch::UserAdapter_WindowProc
user32!UserCallWinProcCheckWow
user32!DispatchClientMessage
user32!__fnDWORD
ntdll!KiUserCallbackDispatcherContinue
win32u!ZwUserGetMessage
user32!GetMessageW
msctf!CThreadInputMgr::GetMessageW
microsoft_win32_registry!ILStubClass.IL_STUB_CLRtoCOM
windowsbase!System.Windows.Threading.Dispatcher.GetMessage
windowsbase!System.Windows.Threading.Dispatcher.PushFrameImpl
windowsbase!System.Windows.Threading.Dispatcher.PushFrame
windowsbase!System.Windows.Threading.Dispatcher.Run
presentationframework!System.Windows.Application.RunDispatcher
presentationframework!System.Windows.Application.RunInternal
presentationframework!System.Windows.Application.Run
presentationframework!System.Windows.Application.Run
wpfxamltemplate!WPFXamlTemplate.App.Main
coreclr!CallDescrWorkerInternal
coreclr!MethodDescCallSite::CallTargetWorker
coreclr!RunMain
coreclr!Assembly::ExecuteMainMethod
coreclr!CorHost2::ExecuteAssembly
coreclr!coreclr_execute_assembly
hostpolicy!coreclr_t::execute_assembly
hostpolicy!run_as_app
hostpolicy!corehost_main
hostfxr!fx_muxer_t::read_config_and_execute
hostfxr!fx_muxer_t::handle_exec_host_command
hostfxr!fx_muxer_t::execute
hostfxr!hostfxr_main_startupinfo
wpfxamltemplate_exe!exe_start

That was for a WPF app called WpfXamlTemplate.exe as opposed to a Windows Forms app. It occurred for version 10.0.18912.1001 of rs_prerelease.

Secondly, it most likely also is a dup of internal Watson bug 21686650 for which the stack trace was:

twinapi_appcore!Microsoft::WRL::ComPtr_Windows::Phone::UI::Core::INavigationClient_::As_Windows::Internal::ApplicationModel::WindowManagement::INavigationClient_AdapterOwner_
twinapi_appcore!Windows::ApplicationModel::Core::CoreApplicationViewTitleBar::_TryGetTitleBarClientAdapter
twinapi_appcore!Windows::ApplicationModel::Core::CoreApplicationViewTitleBar::add_IsVisibleChanged
microsoft_visualstudio_designtools_uwptap!Microsoft::VisualStudio::DesignTools::UwpTap::InAppUI::InAppMenu::LoadInAppMenu
microsoft_visualstudio_designtools_uwptap!std::_Func_impl__lambda_66348aede34075babc119089ae70411c_,std::allocator_int_,long_::_Do_call
microsoft_visualstudio_designtools_uwptap!std::_Func_impl__lambda_8d9ad14074cc617437570b1511be3c14_,std::allocator_int_,void_::_Do_call
microsoft_visualstudio_designtools_uwptap!Microsoft::VisualStudio::DesignTools::UwpTap::PackagedTask_void_::operator
microsoft_visualstudio_designtools_uwptap!winrt::Windows::UI::Core::impl_DispatchedHandler__lambda_7a68d99a3ae1ea3e0cd7ffe918b5ec2e_ _::abi_Invoke
windows_ui!Microsoft::WRL::Details::DelegateArgTraits_long (__cdecl Windows::System::IDispatcherQueueHandler::*)
coremessaging!Windows::System::DispatcherQueue::DeferInvokeCallback
coremessaging!System__Action$CallbackThunk
coremessaging!Microsoft::CoreUI::Dispatch::DeferredCall::Callback_Dispatch
coremessaging!Microsoft::CoreUI::Dispatch::DeferredCallDispatcher::Callback_OnDispatch
coremessaging!Microsoft::CoreUI::Dispatch::EventLoop::Callback_RunCoreLoop
coremessaging!Microsoft::CoreUI::Dispatch::UserAdapter::OnUserDispatch
coremessaging!Microsoft::CoreUI::Dispatch::UserAdapter_DoWork
coremessaging!Microsoft::CoreUI::Dispatch::UserAdapter_WindowProc
user32!UserCallWinProcCheckWow
user32!DispatchMessageWorker
windowsterminal
coremessaging!Microsoft::CoreUI::IExportMessageConversation$X__ExportAdapter::RemoveItem

It occurred a few days ago, with build 10.0.18963.1000 of rs_prerelease, for an application called fiberlaser.exe, also on a Surface 3 device!
In that case the NavigationView control in particular and XAML's WinUI in general are not involved.

Thus I'd say this is not a XAML issue and the twinapi_appcore team should be investigating this.

I notified the team that owns Windows::ApplicationModel::Core::CoreApplicationViewTitleBar so that they are aware of this customer report.

I can confirm that with a simple test application, touchpad panning works again in build 18965.1000.

@Austin-Lamb It seems that this was fixed in a recent update to Windows 1903? At least in my application it is working again.

@lhak - great, I was waiting to hear when it would get deployed to give you an update, I was hoping it was late last week but some folks were out on vacation for the holidays so I couldn't confirm.

I'll close this issue now. Please let us know if you encounter any other issues, and thanks again for reporting this!

The update seems to have fixed the horizontal touchpad issue, which is good, but mouse wheel tilt to scroll horizontally still does not seem to work in XAML host (it works fine in pure UWP apps though).

@aquinn39 - thanks, I think that's a separate issue as the horizontal scroll wheel uses a different codepath than precision touchpads.

Could you please open a new issue on this so we can track it separately?

Was this page helpful?
0 / 5 - 0 ratings