What
While drag-selecting, moving the pointer to the top or bottom edge of the
terminal should scroll the viewport and keep extending the selection —
standard select-past-the-edge behaviour.
Current state
Dragging past the canvas edge simply stops updating the selection head:
cell_at() uses cursor.position_in(bounds) which returns None off-bounds
(crates/app/src/shell/terminal.rs:212-217, 360), so head freezes at the
last in-bounds cell. There is no edge detection and no autoscroll tick.
Fix direction
- Detect the pointer at/beyond the top/bottom edge during an active selection.
- Drive a scroll tick (and extend
head) while held there.
- Shares the absolute-line anchoring work with the "selection follows
scroll" issue — both need selection off viewport coordinates.
What
While drag-selecting, moving the pointer to the top or bottom edge of the
terminal should scroll the viewport and keep extending the selection —
standard select-past-the-edge behaviour.
Current state
Dragging past the canvas edge simply stops updating the selection head:
cell_at()usescursor.position_in(bounds)which returnsNoneoff-bounds(
crates/app/src/shell/terminal.rs:212-217, 360), soheadfreezes at thelast in-bounds cell. There is no edge detection and no autoscroll tick.
Fix direction
head) while held there.scroll" issue — both need selection off viewport coordinates.