ui: the sidebar's tabs become one dock; Measure and Signals by keyboard section; session keeps the dock's state

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Martino FerrariandClaude Opus 4.6 committed 2026-11-02 20:37:55 +01:00
1 parent 31ff778e07
commit 4b65197f56
19 files changed
+421 -419

No files matched your search

+4 -7
View File
@@ -422,11 +422,9 @@ void start_tour(App& app) {
app.settings.tour_seen = true;
(void)save_settings(app.settings);
}
// The sidebar's own stack, so a stop can name the page it stands on. Set here and not in
// `build_tour()`: the overlay is inserted above the window's content *before* `App::side_stack` is
// assigned, so the member does not exist yet at build time -- and the walk cannot start before the
// window is up anyway.
app.tour.page_stack = app.side_stack;
// The main window has no page stack any more (the dock is one scroller): `page_stack` stays null, so
// a stop's `page` selects nothing and a stop whose target is unmapped is dropped. The slide-over hook
// that lets a stop open the trigger page is the next step's.
// The whole table, in walk order: `tour_begin()` drops the stops whose surface is not on screen.
std::vector<TourStop> stops;
stops.reserve(kTourStepCount);
@@ -486,8 +484,7 @@ constexpr FigureSurface kFigureSurfaces[] = {
{"trigger_summary", &App::trigger_summary},
{"trigger_panel", &App::trigger_panel},
{"signal_list", &App::signal_list},
{"side_switcher", &App::side_switcher},
{"side_stack", &App::side_stack},
{"side_stack", &App::side_box},
{"window_button", &App::window_button},
{"status_label", &App::status_label},
{"header_bar", &App::toolbar},