The B5 cursor icon was re-derived in reshape, but accepted PanelFrame messages changed the document boundary without reaching reshape. A stationary pointer therefore kept Text over a new panel, or RowResize after the panel disappeared. Route panel inset changes through one helper that synchronizes dimensions and reshapes. Keep content-only panel frames on the repaint path, so normal panel output does not rebuild the document. Geometry epoch advancement uses the same helper because it disowns the retained frame after resize/font handling has already reshaped against the old presentation. Add production-path witnesses for Present/Absent, an independent epoch invalidation row, and a discriminator keeping content-only frames off the reshape path. All four documented mutations fire. |
||
|---|---|---|
| .. | ||
| fonts | ||
| src | ||
| Cargo.toml | ||