session: remember extra windows, and reopen them from the menu
A scope or detached window was never written to the session, and a detached figure vanished from the layout at the next start -- the figure had been removed from the main rows, and nothing kept the window that held it. Each window is now a `[[window]]` block in the session -- `name`, `detached`, and its own `[[window.plot]]` rows with the same keys the main `[[plot]]` rows carry (signals, row weight, cell width). `collect_layout()` writes the open windows' present arrangement plus the ones already closed; loading puts **all** of them in `App::closed_windows` and never opens one: a window is a view the user closed, and a launch that tiled windows onto the desktop would take that decision for them (a tiling WM would tile them straight away). The overflow menu gains **Reopen closed windows (N)**, which opens every remembered window through `open_scope_window_from_state()` -- the one window constructor, then its rows, weights and signals dealt into its row set. Closing a window records it, by name (a close/reopen cycle replaces its entry rather than multiplying them), and schedules the save; **attaching** records nothing, because that window's figure is on the main window again. A detached figure therefore survives a quit through its window's entry. Probe: `[scope-probe] loaded closed=N scopes=0` (remembered, none opened) and `reopen scopes=..->.. remembered=.. left=0` (close, remember, the menu item's own click reopens). Docs: README, the Mallard layout page, the probe readings and the session invariant.
This commit is contained in:
1 parent
0c9333858c
commit
a29f38eaa9
9 files changed
+326
-12
No files matched your search
@@ -145,7 +145,13 @@ every frame, and pumps its render — so the two windows never disagree about th
|
||||
mode or the span. **A signal badge dragged onto a scope window's plot lands there** — the same
|
||||
drop the main plot takes, into that window's own row set, on the cell the pointer is over — and
|
||||
the signal page's *Plot on* buttons list **every window**: one group per window (named, `In
|
||||
"plot 2"`), one button per plot of it. A scope window also **carries its own layout editor**: `L` (or the grid button in its corner,
|
||||
"plot 2"`), one button per plot of it. **The session remembers every extra window**, but a launch never opens one: a window is a view
|
||||
you closed on purpose, and a start that tiled them onto the desktop would take that decision for
|
||||
you. The overflow menu's **Reopen closed windows (N)** brings them back, arrangement and all; a
|
||||
window that was *attached* is not remembered (its figure is on the main window again), and a
|
||||
detached figure is preserved by its window's entry, so quitting with one open no longer loses it.
|
||||
|
||||
A scope window also **carries its own layout editor**: `L` (or the grid button in its corner,
|
||||
revealed like the others) shows the same `+`/`×`/Done controls the main window's editor has, and
|
||||
they change *that* window's rows — so a second window can hold several figures as easily as the
|
||||
main one. A right-click on a scope window's plot opens **its own menu** — y axis (auto or a fixed
|
||||
|
||||
Reference in new issue
Block a user