• 0.1 62df049f53

    fix: the plot's two side margins are balanced, and the dump outlives its widgets

    martino released this 2026-10-05 22:34:10 +02:00

    With the axis titles gone the left gutter was 200 px of an 870 px viewport and the right
    side had no margin at all, so the newest tick's label was drawn half outside the plot and
    the newest sample's ink landed on the frame.

    Two causes on the left. The reservation covered format_si()'s %.3g fallback
    (-1.23e-45), which no signal on an Si axis produces -- the widest real label for a
    unitless axis is -1.23m -- and note_y_gutter() added 6 px of slack to a figure that is
    already the maximum of the labels and last frame's floor, making the gutter a ratchet that
    climbed to its 200 px cap in ~19 frames. It settles at 104 px now, with axes.w changes: 1
    where it read 17.

    The right side did not exist: a plot's axes rect reached the viewport's right edge by
    construction. deps/plotter gains Plot::set_right_gutter() and Figure::set_right_gutter()
    -- a want rather than a measurement, since nothing is drawn there, imposed figure-wide so
    the rows end on one column as they already start on one. udpscope asks for half the widest
    time label plus the label padding (59 px), x labels being centred on their tick.

    Separately: the exit dump asked two destroyed widgets for their size, which is where the
    "exactly two Gtk-CRITICALs" baseline came from. The pointer is freed memory by then, so a
    run that had destroyed other windows first (UDPSCOPE_PROBE_HELP_MS opens three) segfaulted
    in the middle of the dump instead. Both sizes are captured on the tick; a clean run now
    carries no critical.

    Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com

    Downloads