ui: the events list is a slide-over page; the left pane, its divider and the header toggle are gone

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Martino FerrariandClaude Sonnet 4.6 committed 2026-11-03 07:07:57 +01:00
1 parent cb098eff75
commit 8c866300d8
12 files changed
+244 -350

No files matched your search

+9 -4
View File
@@ -11,7 +11,7 @@
//
// Below them, the Events block: one compact row per cached event (marker, title, time; no thumbnails),
// a Manage button for the full list, and one click on a row to replay it. Its rows are built from the
// same `event_store->list()` and the same `event_row_title()` as the events pane, so the two cannot
// same `event_store->list()` and the same `event_row_title()` as the events page, so the two cannot
// disagree.
#include "ui_app.hpp"
@@ -249,11 +249,16 @@ const char* dock_event_marker(const App& app, const EventRecord& r) {
return " ";
}
/// Opens the `events` page. The page's list is rebuilt only while the page is open (see `record_event()`),
/// so it is refreshed here, once, before the page shows: the slide-over has no on-open hook, and the list
/// is small. The button is not a child of either list, so the rebuild cannot free the widget it runs from.
void on_manage_events(GtkButton*, gpointer user) {
slideover_open(*static_cast<App*>(user), "events");
App& app = *static_cast<App*>(user);
refresh_events_pane(app);
slideover_open(app, "events");
}
/// One click on a row replays it, as the pane's activation does: `replay_event()` and then the in-place
/// One click on a row replays it, as the page list's activation does: `replay_event()` and then the in-place
/// re-mark. The record is copied first, because nothing it triggers may be allowed to free the row it
/// was read from.
///
@@ -394,7 +399,7 @@ void dock_rebuild_events(App& app, const std::vector<EventRecord>& records) {
gtk_widget_set_hexpand(name, true);
gtk_widget_set_tooltip_text(name, text.c_str());
gtk_box_append(GTK_BOX(line), name);
// The latch's sequence number, as the pane's third line ends with it: the title already carries the
// The latch's sequence number, as the page row's third line ends with it: the title already carries the
// clock, so this is the part of the row that is not in it.
const std::string seq = "#" + std::to_string(r.seq);
GtkWidget* num = fixed_label(seq.c_str(), kEventSeqChars, GTK_ALIGN_END);