Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix issue with cancelled touch pointers not resetting state correctly #6875

Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion dev/NavigationView/NavigationViewItem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1070,7 +1070,8 @@ void NavigationViewItem::ProcessPointerCanceled(const winrt::PointerRoutedEventA
// What this flag tracks is complicated because of the NavigationView sub items and the m_capturedPointers that are being tracked..
// We do this check because PointerCaptureLost can sometimes take the place of PointerReleased events.
// In these cases we need to test if the pointer is over the item to maintain the proper state.
if (IsOutOfControlBounds(args.GetCurrentPoint(*this).Position()))
// In the case of touch input, we want to cancel anyway since there will be no pointer exited due to the pointer being cancelled.
if (IsOutOfControlBounds(args.GetCurrentPoint(*this).Position()) || args.Pointer().PointerDeviceType() == winrt::PointerDeviceType::Touch)
{
m_isPointerOver = false;
}
Expand Down