Files
tty7/src/ui
l0ng-ai f7fd1d43fd fix(diff): let a drag cross the blank half of a split row
A split row pads whichever side of a change has no line, and that half
was drawn inert: no I-beam, a press that started nothing, and a range
that visibly stopped at the padding and resumed below it. A one-sided
change is the ordinary shape of a diff, so the dead band runs down most
of one column — the drag it swallows is the common one.

The blank half now carries the same press and move listeners as any
other cell and takes the selection colour when the range covers it. What
lands on the clipboard is unchanged: `DiffSelection::text` already reads
past the padding, because the blank half is layout, not a line.

Also drives an upward drag through the real entry points. `range()`
ordering was only asserted in `diff_rows`, where a selection is built by
hand; nothing checked that a drag whose head ends above its anchor
copies the same rows.
2026-09-07 22:18:21 +08:00
..