Grab Alt+arrows and rotate tabs when reorder wraps past an end

A focused terminal acted on Alt+Shift+Up/Down (selection/typing) because
the reorder chord was forwarded like plain Alt+Up/Down cycling was.  Both
are now grabbed: tabbed consumes them so the focused client never sees
them.

Reordering off an end previously swapped the moved tab with the far-end
tab, leaving the middle of the list in place ([A,B,C,D] moving D off the
end gave [D,B,C,A]).  reorder_active_tab now shifts every slot between the
two positions, so the whole list rotates: [D,A,B,C].  Adjacent moves are
unchanged (rotation is a swap there).

The reorder test now runs three tabs to distinguish swap from rotation
([R,G,B] moving B off the end must land [B,R,G]) and keeps the
Ctrl+Shift+T anchor-slot check.  The clipboard tests got more patience
(retry on stalled wl-paste; longer socket-start wait) since a stalled host
GNOME display was flaking them.

Full suite 5/5 green.
This commit is contained in:
Andrew Hamilton 2026-08-17 11:12:28 +10:00
parent 6677012a9a
commit f6c1a6b92e
3 changed files with 76 additions and 46 deletions

View file

@ -124,10 +124,16 @@ tabs while any other key stops it.
`Alt+Shift+Up/Down` reorder the overlay list instead of switching: the
active tab stays active, it just moves one position earlier or later in the
order. Moving off either end wraps around to the other end, and holding the
chord keeps moving it (same synthesized repeat as cycling). A `Ctrl+Shift+T`
inside the moved tab opens exactly where the reordered list says it should —
immediately right of the tab's new position.
order. Moving off either end wraps around and the whole list shifts — a
rightmost tab moved past the end lands first, with every other tab pushed
one position, not merely swapped with the first. Holding the chord keeps
moving it (same synthesized repeat as cycling). A `Ctrl+Shift+T` inside the
moved tab opens exactly where the reordered list says it should — immediately
right of the tab's new position.
Both `Alt+Up/Down` and `Alt+Shift+Up/Down` are grabbed: tabbed consumes them
so the focused client never receives the chord (e.g. a terminal can't act on
`Shift`+arrow while you reorder).
`Alt+Delete` closes the active tab. The tab disappears immediately (the tab
to its right becomes active, or the left neighbor if it was the rightmost);