fix: place the guided tour's card from its allocation, and count GTK warnings
The tour measured its card with a height-for-width request whose for_size came from the natural width minus the margins the tour sets for positioning. A measure reports margins *included*, so that for_size landed a margin short of the minimum the box answers with and GTK warned once per frame: Trying to measure GtkBox 0x... for width of N, but it needs at least M (about 9/s for as long as the tour was up). The card now takes its size from gtk_widget_compute_bounds() once a frame has run -- its allocation rectangle, not gtk_widget_get_width(), which is only the content box -- and falls back to a measure with no for_size at all only on a frame with nothing allocated. GTK is built with structured logging, so its messages reach the log writer and never the handler API; no existing probe can read one. The exit dump now counts them (`gtk warnings:`, must read 0) through a writer function chained to g_log_writer_default(), which leaves stderr unchanged.
This commit is contained in:
1 parent
d8a79b96ba
commit
bb62b8178c
5 files changed
+94
-12
No files matched your search
@@ -410,6 +410,17 @@ Two lines of the self-check output are assertions in disguise:
|
||||
against the same config directory reads `auto=0` — and `requested=1` is the **chooser's** "Guided tour"
|
||||
(`Config::tour_pending`) having been carried into this run instead, which is `auto=0` because it is not
|
||||
the auto-start.
|
||||
- `gtk warnings: N` (in the exit dump, beside `help layer:`) — **GTK's own log at warning or above,
|
||||
counted for the whole run, and it must read `0`.** It is counted through a log *writer* function
|
||||
because GTK is built with structured logging: its messages go through the writer and never through
|
||||
`g_log_set_handler()`/`g_log_set_default_handler()`, which is exactly why no probe can read one —
|
||||
the message is written by the toolkit from inside a call of ours and is stored in no widget. The
|
||||
first class to need it was `Trying to measure GtkBox … for width of N, but it needs at least M`
|
||||
(once per frame, from a card measured for a height with a width a margin short of its own minimum;
|
||||
see the allocation bullet in
|
||||
[invariants-gtk-and-chrome.md](invariants-gtk-and-chrome.md)). The writer chains to
|
||||
`g_log_writer_default()`, so every message still reaches stderr exactly as before and the documented
|
||||
baselines are read the same way.
|
||||
- `help figures: trigger_head=X,Y,W,H trigger_summary=… trigger_panel=… signal_list=… side_switcher=… side_stack=… window_button=… status_label=… header_bar=… plot=…` (in the exit
|
||||
dump, beside `help layer:`) — the **window-coordinate** rectangle of each surface the help's annotated
|
||||
figures label, `x,y,width,height`, or `-1,-1,0,0` for a surface that is **not on screen**. It is
|
||||
|
||||
Reference in new issue
Block a user