Repository navigation
automation: a demo's captions and bar stay in the main window - #642
Merged
Merged
Conversation
While a tape played, an OS window over the main one (a dialog's, as About Fizzy or the unsaved-changes prompt; a menu's; a float's) drew the tape's caption inside itself, cut at its edge. The popout code hands every layer that takes no input to whichever OS window its middle is over (`Popout.overlaysFrame`), which is right for the demo's pointer and wrong for the captions, keys and bar: they are the stage's. Each of those layers is now marked as the main window's (`core.screens.markMain`), and `overlaysFrame` leaves them to it. The pointer, and a callout beside what it acts on, still go into the window they are over. The bar, left under a dialog's window, no longer takes the presses meant for that window: the app hands the player its OS windows' rects each frame (`replay.Player.Transport.covered`). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
foxnne
force-pushed
the
automation/overlay-main-window
branch
from
October 19, 2026 15:01
e1ec3ce to
b30c48c
Compare
foxnne
marked this pull request as ready for review
October 19, 2026 15:43
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.
What changes
While a demo tape plays, an OS window over the main one (a dialog's, as About Fizzy or the "unsaved changes before quitting?" prompt; a menu's; a float's) no longer draws the tape's caption inside itself, cut off at its bottom edge. The captions, key pills, the transport bar and the "Catching up" pill stay in the main window; the demo's pointer still goes over whatever window it is on.
Cause: the popout code hands every layer that takes no input to whichever OS window its middle is over (
Popout.overlaysFrame). That is what the demo's pointer wants, so it is drawn on the dialog it clicks in, but the tape overlay's captions and bar are layers of the same kind, so one whose middle fell inside a dialog's window was taken from the main window and drawn in the dialog.Fix: the overlay's layers other than the pointer (and a callout placed beside what the pointer acts on, which goes where that is) are marked as the main window's this frame (
core.screens.markMain, besidemarkEverywhere/markCarried), andoverlaysFrameleaves them to the main window.windowFrame(floats) andmenuFramealready took no such layer.The bar, now drawn under a dialog's OS window rather than over it, would still have taken presses at its rects meant for that window. The app hands the player its OS windows' rects each frame (
replay.Player.Transport.covered, filled fromPopout.windowsShownonly while a tape is loaded); a press there goes to the window, and the bar's hover clears.Not done (review): folding
markEverywhere/markCarried/markMenu/markMaininto one generic helper. dvui checks a data entry's type name in debug, andmarkMenuis called by plugins built against oldercore, so renaming its type would trip that.Touches the same
app/automation/overlay.zigas #637, in a different place (thelayerdefinition); either rebases trivially over the other.SDK impact
core.screens.markMain/isMain, new; no fingerprint move)Verified
🤖 Generated with Claude Code