Skip to content

KeyTips: the File tab drills into whatever its request opens (Backstage window/menu, context menu) - #79

Merged
mstrobel merged 1 commit into
developfrom
feat/keytips-plain-targets
Sep 12, 2026
Merged

mstrobel merged 1 commit into
developfrom
feat/keytips-plain-targets

Conversation

@mstrobel

Copy link
Copy Markdown
Owner

Follow-up on the same branch as #78 (merged). Closes the queued "KeyTips vs Backstage" item.

The ribbon can't fix this alone — it never sees its Backstage, only whether BackstageRequested was handled. So the File tab is now a DrillPopup with no builder of its own: the controller snapshots the surface stack before the reveal and builds the next level over the surface the reveal added — a FullScreen Backstage window, a Menu-mode popup, or the tab's context menu when the request goes unhandled — with the destinations badged by their header mnemonics, and that level's Esc retract closes that surface. A request that opens nothing ends as an activation (exit), as before.

OnActiveWindowChanged no longer exits blindly: it stays while a build is parked (the build is parked before the reveal so the window change is seen as expected), pops to a held level when a window on the stack closed (Esc, the Backstage's own ◂) — the surface sync now covers windows as well as popups — and exits only for an unrelated window. The develop-side Post(TryPopLevel + Exit) workaround is gone.

Tests (KeyTipBackstageTests): FullScreen and Menu drills, a destination badge selects and exits, Esc returns to the ribbon level with the overlay still up, the Backstage's own back pops the level; the existing File-tab test now waits out the bounded retries for the nothing-opened case. Bars 332 green.

🤖 Generated with Claude Code

https://claude.ai/code/session_013qbF5ru6uh5w7fqhP3yoPE

…the Backstage window or menu, or its context menu

Maintainer, 2026-09-12: KeyTips didn't play well with Backstage, and the ribbon can't fix that alone — it never sees
its Backstage, only whether BackstageRequested was handled. The File tab is now a DrillPopup with no builder of its
own: the controller snapshots the surface stack before the reveal and builds the next level over the surface the
reveal added (a FullScreen Backstage window, a Menu-mode popup, or the tab's context menu when the request goes
unhandled) — the destinations badged by their header mnemonics — and that level's Esc retract closes that surface.
A request that opens nothing ends as an activation (exit), as before.

OnActiveWindowChanged no longer exits blindly: it stays while a build is parked (the reveal just opened the window;
the build is parked BEFORE the reveal so the change is seen as expected), pops to a held level when a window on the
stack closed (Esc, the Backstage's own back button) via the surface sync that now covers windows as well as popups,
and exits only for an unrelated window. The develop-side Post(TryPopLevel + Exit) workaround is gone.

KeyTipBackstageTests: FullScreen and Menu drills, destination badge selects and exits, Esc returns to the ribbon
level with the overlay up, the Backstage's own back pops the level. Bars 332 green.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013qbF5ru6uh5w7fqhP3yoPE
@mstrobel
mstrobel merged commit 0bd9a79 into develop Sep 12, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant