KeyTips: menu/popup drill, hidden-level access keys stand down, focus-restore respects app gestures - #72
Merged
Conversation
…letters typed ahead of a parked level are replayed into it Two related escapes from the KeyTip drill (maintainer, 2026-09-09): - 'Alt, P' with no P badge at the root fired a '_Paste' button two levels down, and 'Alt, H, B' fired '_Bold' under Format instead of drilling the B group. A bonked letter fell through the dispatch to the access-key stage, which matches access keys on every surface whatever level the overlay shows. AccessKeyManager.ProcessKeyDown now refuses inline activation while the KeyTip controller is active (a menu-mode bonk: consumed in sticky mode, left to the remaining tails while Alt is physically held — so an Alt-bearing KeyBinding still fires). - A group letter typed before the tab's group level was built (the level is parked until the post-layout hook) was matched against the ROOT level. The controller now queues letters typed while a build is parked and replays them into the new level, in order; a still-ambiguous multi-char prefix is consumed rather than falling through. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013qbF5ru6uh5w7fqhP3yoPE
… moved while it was up A file dialog's Alt+P focuses its Places rail, but the KeyTip overlay (armed on Alt-down against the ribbon behind the dialog) restored its pre-Alt focus snapshot on Alt-release, bouncing focus straight back to the file list (maintainer, 2026-09-09). RestoreFocus now puts the snapshot back only when focus is still on it or parked on a bar surface by menu mode (the Alt-tap focus of the menu bar's first item is the move the restore exists to undo); focus moved elsewhere in the active root is the app's decision. Regression test with an Alt+P KeyBinding in a Window. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013qbF5ru6uh5w7fqhP3yoPE
… collapsed groups, the collapsed QAT, toolbar overflow The deferred v2 leg of keytips-design §6 (maintainer, 2026-09-09: 'key tips were never implemented for menus and popups'). One rule for every popup (KeyTipPopupLevels): the opened popup's content is walked for its accelerator- eligible controls; a submenu header or a dropdown-bearing control drills again, everything else activates; a level built before the popup has a surface is null so the parked build retries next frame. Hosts: a menu header opens its submenu (the access-key open) and badges the rows; a ribbon control level drills a BarDropDownButton into its dropdown; a collapsed group / the collapsed QAT opener drill into their flyouts; the toolbar overflow chevron carries badge 0 and drills into the overflow. Esc pops a level and its retract closes the popup it opened. The overlay surface is now anchored directly above the surface the shown level's targets live on (WindowManager.AnchorKeyTipOverlay — root / window / the drilled popup), so popup-level badges paint over their popup and under anything opened on top of it; level-0 discovery scopes to the active root, so bars behind a modal window are not badged. KeyTipPopupDrillTests; design doc §6/§8/§14 updated. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013qbF5ru6uh5w7fqhP3yoPE
This was referenced Sep 12, 2026
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.
Three KeyTip issues reported 2026-09-09.
1. Hidden levels leaked into the drill.
Alt, H, Bfired_Bold(under Format) instead of drilling the B group;Alt, Pwith no P badge fired_Paste. A letter the current level didn't claim fell through the dispatch to the inline access-key stage, which matches_xaccess keys on every surface whatever level the overlay shows.AccessKeyManager.ProcessKeyDownnow refuses inline activation while the KeyTip controller is active (consumed in sticky mode; left to the remaining tails while Alt is physically held, so an Alt-bearingKeyBindingstill fires). A group letter typed before the tab's group level was built (the level is parked until the post-layout hook) was matched against the root level: the controller now queues letters typed while a build is parked and replays them into the new level in order.2. KeyTips for menus and popups. The deferred v2 leg of keytips-design §6. One rule for every popup (
KeyTipPopupLevels): the opened popup's content is walked for its accelerator-eligible controls; a submenu header or a dropdown-bearing control drills again, everything else activates; a level built before the popup has a surface is null so the parked build retries next frame. Menu headers drill into their submenus; ribbon control levels drillBarDropDownButtons into their dropdowns; collapsed groups and the collapsed QAT opener drill into their flyouts; the toolbar overflow chevron carries badge0and drills into the overflow. Esc pops a level and closes the popup it opened. The overlay surface is now anchored directly above the surface the shown level's targets live on (WindowManager.AnchorKeyTipOverlay), so popup badges paint over their popup and under anything opened on top; level-0 discovery scopes to the active root, so bars behind a modal window are not badged.3. File dialog Alt+P bounce. The overlay armed on the ribbon behind the dialog and restored its pre-Alt focus snapshot on Alt-release, yanking focus off the Places rail. Two fixes:
RestoreFocusputs the snapshot back only when focus is still on it or parked on a bar surface by menu mode (focus an app gesture moved elsewhere stands), and with active-root scoping the overlay no longer arms against a ribbon behind a dialog at all.Tests:
KeyTipTests(+4), newKeyTipPopupDrillTests(5). Bars 311 / UI 3962 green. Design doc §6/§8/§14 updated.🤖 Generated with Claude Code
https://claude.ai/code/session_013qbF5ru6uh5w7fqhP3yoPE