docs: events in the dock and on its page
The dock's Events block, the events slide-over page, the availability-rule deviation, the probe lines and the removal of the left pane are described; the false remembered-width claim is gone. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
9db5e4a49c
commit
c4b79da057
7 files changed
+206
-105
No files matched your search
@@ -102,10 +102,12 @@ touching the data path.
|
||||
own and registered under its id (`trigger`, `source-<id>`, `signals` (the signal list) and
|
||||
`signal:<name>` (one signal's page, `src/ui_signal_page.cpp`, created on demand by `signal_page_ensure()`
|
||||
and pruned by `signal_pages_sync()`, which `rebuild_signal_panels()` ends with), `cursors` (the cursors
|
||||
panel, unchanged) and `measure` (the measurements panel, unchanged; `m` toggles it); `events` is reserved
|
||||
for a later step). Both of those are registered whether or not they are open (a closed page's widgets
|
||||
exist, unmapped), and both are insensitive until the stream has signals, by the same
|
||||
`update_signal_availability()` call that sets the dock's sensitivity. One page is open at a time and `App::slideover.page`
|
||||
panel, unchanged) and `measure` (the measurements panel, unchanged; `m` toggles it); `events` (the full events list, `events-pane.ui`'s `events_box`: the Live, Compare and Accumulate
|
||||
controls and the multi-select list with its thumbnails; open it only through `open_events_page()`, which
|
||||
refreshes the list first, because the slide-over has no on-open hook). They are registered whether or not
|
||||
they are open (a closed page's widgets exist, unmapped); `cursors` and `measure` are insensitive until the
|
||||
stream has signals, by the same `update_signal_availability()` call that sets the dock's sensitivity, and
|
||||
`events` follows `sync_events_availability()` (below). One page is open at a time and `App::slideover.page`
|
||||
is its id, empty when closed. The open page is **not** a session value. Esc, *Close*, a second click on the
|
||||
badge and a click on the plot close it; the click-away is a capture-phase observer (see
|
||||
[invariants-gtk-and-chrome.md](invariants-gtk-and-chrome.md)). With two or more `source-*` pages, an
|
||||
@@ -120,7 +122,7 @@ touching the data path.
|
||||
pick and focus from `slideover.source_pages` being non-empty every tick, so anything that indexes the badge
|
||||
(the tour's `badges` step targets the whole bar, `[badges]`) must tolerate it being absent.
|
||||
- **The dock** is the `AdwOverlaySplitView` sidebar (`side_box` > `dock_scroller` > `dock_page`), **280 px**
|
||||
and fixed. It holds one thing, the **Readouts** box (`src/ui_dock.cpp`, `build_readouts_dock()`): a
|
||||
and fixed. It holds two things, the **Readouts** box and, under a separator, the **Events** block (below). The Readouts box (`src/ui_dock.cpp`, `build_readouts_dock()`): a
|
||||
**Cursors** block (heading, an **Edit** button that opens the `cursors` page, a `GtkGrid` of a header row
|
||||
`A B delta` and one line per page line) and a **Measurements** block (heading, **Edit** opening the
|
||||
`measure` page, one line per measurement: chip, type, value; a click on a line opens that measurement's
|
||||
@@ -132,6 +134,22 @@ touching the data path.
|
||||
kind's panels (those are slide-over pages). The window's measurement editor is a dialog
|
||||
(`open_measure_dialog()`), not part of the `measure` page.
|
||||
|
||||
The **Events** block (`build_events_dock()`, also `ui_dock.cpp`) is a heading with a **Manage** button
|
||||
(`open_events_page()`) over a short list (`dock_events_list`, 112 px, scrolled, no thumbnails): one compact
|
||||
row per `EventRecord`, newest first, capped at `kDockEventsMax` (24) with a dim "... N more, see Manage"
|
||||
row after them. A row's cells are a one-character marker (filled = the event on screen; hollow = a member
|
||||
of the group on screen -- dock only, the page's rows do not mark members; blank otherwise), the title
|
||||
(`event_row_title`, ellipsized, full text in the tooltip) and `#<seq>`; **one click replays** it
|
||||
(`replay_event()`, the body of the page's double-click handler). Both views are rebuilt from one
|
||||
`EventStore::list()` by `refresh_events_pane()`, but on different cadences: **the dock follows every
|
||||
latch** (`record_event()` refreshes it unconditionally), while the page's list is refreshed per latch only
|
||||
while the page is open and by `open_events_page()` otherwise. `mark_events_on_screen()` updates titles and
|
||||
markers in place and never rebuilds either list. The block, and the page, are insensitive (never hidden)
|
||||
unless `sync_events_availability()` says `event_recording || replaying || events_cached` -- a different
|
||||
rule from the spec's (see [invariants-trigger-and-pinning.md](invariants-trigger-and-pinning.md)).
|
||||
There is no events pane, divider or header toggle any more: the page is reached from Manage (or by a
|
||||
caller of `open_events_page()`), and the plot is never squeezed by events.
|
||||
|
||||
**When each is built and when it is read.** `build_slideover()` runs in `on_activate` right after the tour
|
||||
overlay is built (the tour's overlay wraps the whole window, so its dim rectangles cover the slide-over
|
||||
too); the trigger form is registered as
|
||||
|
||||
Reference in new issue
Block a user