[Settings] Fix FancyZones page scroll bounce at Excluded apps#47937
Open
niels9001 wants to merge 1 commit into
Open
[Settings] Fix FancyZones page scroll bounce at Excluded apps#47937niels9001 wants to merge 1 commit into
niels9001 wants to merge 1 commit into
Conversation
The Excluded apps TextBox at the bottom of the FancyZones settings page forced its inner ScrollViewer to be permanently enabled with a visible scrollbar, nested inside the page-level ScrollViewer provided by SettingsPageControl. When the wheel pointer reached the TextBox, the two scrollers competed for wheel events and the page over-scrolled past its content end, producing the bouncing effect tracked in microsoft#25353. Drop the explicit ScrollViewer.VerticalScrollMode and IsVerticalRailEnabled overrides, switch VerticalScrollBarVisibility from Visible to Auto, and add MaxHeight=320 to bound the box's growth so layout cannot reflow during scrolling. Fixes microsoft#25353 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Collaborator
Author
|
Tested with a Logi mouse and can confirm that the stuttering is no longer there. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes #25353 — the FancyZones Settings page bounces / jumps when the user scrolls down to the bottom (the Excluded apps expander). Several closed dupes report the same behavior: #31500, #34259, #30164, #45173, #32099, #32361.
Root cause
The Excluded-apps
TextBox(lines 283-305 ofFancyZonesPage.xaml) forced its own innerScrollViewerto be permanently enabled with a visible scrollbar, nested inside the page-levelScrollViewerprovided bySettingsPageControl:The expander is
IsExpanded="True"and sits at the very bottom of the page, so when you wheel-scroll down the page the pointer ends up over the TextBox. The TextBox''s inner scroller intercepts the wheel events; when it has nothing left to scroll the event bubbles back to the outer page scroller, which tries to over-scroll past content end. The result is the bounce/jump visible in the videos on the issue.The unbounded
MinHeight="160"(with noMaxHeight) made it worse, because the box can grow as users type, triggering layout re-measures during scrolling.Fix
Minimal change to the same TextBox:
ScrollViewer.IsVerticalRailEnabledandScrollViewer.VerticalScrollMode—AcceptsReturn="True"already wires up the inner scroller correctly.ScrollViewer.VerticalScrollBarVisibilityfromVisibletoAuto, so the inner scroller only competes with the outer one when there is actual overflow to scroll.MaxHeight="320"so the box cannot keep growing as the user types.Validation
tools\build\build.cmdfromsrc\settings-ui\Settings.UI, arm64 Debug, exit 0, 0 errors).