scope windows: their own layout editor, and the same shortcuts
A detached window is a view with an arrangement of its own -- and there was no way to change it:
the layout editor was the main window's, and a second window's rows could not be added or removed.
Every scope window now carries its own editor: `L` (or the grid toggle in its corner, revealed by
the same proximity rule as the attach button) shows the main editor's `+` / `×` / Done controls,
and they act on **that window's** row set (`set_scope_layout_editing()`, every button tagged with
its window), so a window holds as many figures as the user gives it and the two editors cannot
move each other's rows. Nothing a scope window arranges is written to the main window's session:
the windows themselves are not persisted.
The keyboard: each scope window gets a `GtkEventControllerKey` running the application's one
accelerator table -- `L` acts on the window the key arrived in, every other action reaches the
application through `run_app_action()`. The plot's own keys ('f', the arrows, Escape) already
worked there, through its plot controller.
The window struct now always builds its overlay (the corner controls' host); the attach button
stays detached-only, and both corner toggles step aside while the editor is up (Done is the way
out).
Probe: `[scope-probe] layout buttons=3 rows=1->2` -- the toggle builds 2*rows+1 buttons and a
boundary `+` adds a row. `L` in a real scope window verified by OCR ("Done" appears, the row's
`×` at its left). Docs: README, the Mallard layout page, the probe readings, and the layout
invariant (a view's arrangement is the view's).
This commit is contained in:
1 parent
ecdbf4f0e1
commit
0c9333858c
6 files changed
+327
-37
No files matched your search
@@ -145,9 +145,11 @@ 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 right-click on a scope window's plot opens **its own
|
||||
menu** — y axis (auto or a fixed range), *Fit X axis*, *Fit all*, remove a trace — acting on that
|
||||
window's rows (the x fit resets the **shared** time span, so every view follows); a detached
|
||||
"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,
|
||||
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
|
||||
range), *Fit X axis*, *Fit all*, remove a trace — acting on that window's rows (the x fit resets the **shared** time span, so every view follows); a detached
|
||||
window's menu carries **Attach back to the main window** beside them. A window that cannot paint
|
||||
says so on stderr and in the status bar after two seconds, naming its **GSK renderer**: a blank
|
||||
plot is indistinguishable from a context that failed, and the GTK **Vulkan** renderer is known to
|
||||
|
||||
Reference in new issue
Block a user