diff options
| author | user <user@clank> | 2026-08-16 19:31:59 +0200 |
|---|---|---|
| committer | user <user@clank> | 2026-08-16 19:31:59 +0200 |
| commit | d8e6e1525ace2a68a060e60365178f5dfa016a4b (patch) | |
| tree | 83914faa68d7e8d17f67989abbaf0cea9af6b662 /docs/scripting.md | |
| parent | sl0ppty: `C-a >` sends this pane to the next tab (diff) | |
| download | slosh-d8e6e1525ace2a68a060e60365178f5dfa016a4b.tar.gz slosh-d8e6e1525ace2a68a060e60365178f5dfa016a4b.tar.xz slosh-d8e6e1525ace2a68a060e60365178f5dfa016a4b.zip | |
sl0ppty: drag a pane onto a tab
Drop it on a tab in the strip and it moves into that tab; drop it on the `+` and it
gets one of its own. The fourth verb of the same drag machine, and it cost almost
nothing because it is the third one's target read the other way round: the strip was
already a row of drop targets, and a pane in your hand was already a thing being
carried somewhere.
The strip draws the drop states itself. `ptr_on` reports nothing during a drag -- on
purpose, so hover feedback does not fight a gesture -- so a tab cannot find out it is
under the pointer the usual way. It uses the two states the panes already use for
this exact question: every tab the pane does not live in is a candidate in the drop
colour, and the one under the pointer is filled. These are all targets; that is the
one you are on. The tab the pane already lives in does not offer itself, because
dropping there is the one refusal a drag can reach -- and it says "it is already in
that tab" rather than looking like a drag that failed to take.
Leaving the strip takes the offer back, the same way dragging a tab off the strip is
not a cancel but simply not a place to put one. Releasing over a pane still swaps
the two, which has a test of its own: the strip is a new kind of destination, not a
replacement for the old one.
A toast says where the pane went, and here it matters more than for the keys: the
pane lands in a tab you are not looking at, so without a word the screen just shows
one fewer pane.
Verified: `tests/test_move_pane.py` at 52 checks. The new ones drive real mouse
reports -- press on a title, motion onto a tab hit, release -- for the move, the `+`,
the three highlight states (candidate, filled, and the pane's own tab declining),
taking the offer back by dragging off the strip, the refusal, and that pane-onto-pane
still swaps.
Diffstat (limited to 'docs/scripting.md')
0 files changed, 0 insertions, 0 deletions
