You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Let users reorder the navigation pages by dragging them in the sidebar - #5520
The Software Catalog added two pages to the sidebar and pushed the existing ones down, so users lost the Ctrl+number layout they were used to. The order is now theirs to choose; the default stays the current one.
Drag a page in the navigation panel to move it (mouse, pen or touch), or press Alt+Up/Down (Option on macOS) on a focused page. Escape cancels a drag. Ctrl/Cmd+number, Ctrl+Tab cycling, the accelerator metadata and the macOS View menu all follow the new order, and keyboard moves are announced to screen readers.
The order is stored in the NavigationPageOrder setting. A default order is stored as unset, so users who never reorder follow future default changes. The stored value always lists the catalog pages too, so an order chosen while the catalog is disabled keeps those pages in place when it is re-enabled. Unknown or duplicate names are ignored and missing pages are appended.
Settings > User interface gets a "Navigation menu order" card with Reset.
The nav ListBox now uses a plain StackPanel: with the default VirtualizingStackPanel, clearing and re-adding the ListBoxItems (which are their own containers) left them detached, so every page vanished after a reorder.
Drag positions are measured against the items panel, so scrolling the sidebar mid-drag still drops where the pointer is, and the sidebar only listens to its view model while attached.
SvgIcon's static theme brushes are now immutable. The mutable ones were bound to whichever UI thread first rendered an icon, which broke any headless test session that rendered icons after another one.
Tests: SidebarNavigationOrderTests drives the real SidebarView headlessly (mouse drag both ways, touch drag including a scrollable sidebar, Escape, Alt+arrows with focus kept, the announcement, scrolling mid-drag, detach and reattach), and all of them fail if the StackPanel panel is removed. SoftwareCatalogTests covers resolving, merging and serializing the stored order
The Software Catalog added two pages to the sidebar and pushed the existing
ones down, so users lost the Ctrl+number layout they were used to. The order
is now theirs to choose; the default stays the current one.
- Drag a page in the navigation panel to move it (mouse, pen or touch), or
press Alt+Up/Down (Option on macOS) on a focused page. Escape cancels a
drag. Ctrl/Cmd+number, Ctrl+Tab cycling, the accelerator metadata and the
macOS View menu all follow the new order, and keyboard moves are announced
to screen readers.
- The order is stored in the NavigationPageOrder setting. A default order is
stored as unset, so users who never reorder follow future default changes.
The stored value always lists the catalog pages too, so an order chosen
while the catalog is disabled keeps those pages in place when it is
re-enabled. Unknown or duplicate names are ignored and missing pages are
appended.
- Settings > User interface gets a "Navigation menu order" card with Reset.
- The nav ListBox now uses a plain StackPanel: with the default
VirtualizingStackPanel, clearing and re-adding the ListBoxItems (which are
their own containers) left them detached, so every page vanished after a
reorder.
- Drag positions are measured against the items panel, so scrolling the
sidebar mid-drag still drops where the pointer is, and the sidebar only
listens to its view model while attached.
- SvgIcon's static theme brushes are now immutable. The mutable ones were
bound to whichever UI thread first rendered an icon, which broke any
headless test session that rendered icons after another one.
Tests: SidebarNavigationOrderTests drives the real SidebarView headlessly
(mouse drag both ways, touch drag including a scrollable sidebar, Escape,
Alt+arrows with focus kept, the announcement, scrolling mid-drag, detach and
reattach), and all of them fail if the StackPanel panel is removed.
SoftwareCatalogTests covers resolving, merging and serializing the stored
order.
Resetting the order during an active drag clears _dragItems and _dragTops but leaves _isDragging true. With User interface settings open, holding a touch drag in the docked sidebar and activating Reset with another contact reaches this path. The next drag move or release indexes the empty arrays in UpdateDrag. Cancel the drag and release its captured pointer before rebuilding the items, and add a reset-during-drag regression test.
A second touch on another row overwrites _dragCandidate and _dragStart while the first finger is dragging. Move and release handlers also accept any pointer, so the second finger can move or commit the first finger's drag while it is still held; the release handler then releases the second pointer's capture instead of the drag owner's. Track the initiating pointer from press through cleanup and ignore unrelated pointer events, including capture loss. Add a two-contact regression test; the current touch helper always uses contact ID 1.
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
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.
The Software Catalog added two pages to the sidebar and pushed the existing ones down, so users lost the Ctrl+number layout they were used to. The order is now theirs to choose; the default stays the current one.
Tests: SidebarNavigationOrderTests drives the real SidebarView headlessly (mouse drag both ways, touch drag including a scrollable sidebar, Escape, Alt+arrows with focus kept, the announcement, scrolling mid-drag, detach and reattach), and all of them fail if the StackPanel panel is removed. SoftwareCatalogTests covers resolving, merging and serializing the stored order