aboutsummaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
authoruser <user@clank>2026-08-16 19:31:59 +0200
committeruser <user@clank>2026-08-16 19:31:59 +0200
commitd8e6e1525ace2a68a060e60365178f5dfa016a4b (patch)
tree83914faa68d7e8d17f67989abbaf0cea9af6b662 /docs
parentsl0ppty: `C-a >` sends this pane to the next tab (diff)
downloadslosh-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')
-rw-r--r--docs/panes.md4
1 files changed, 4 insertions, 0 deletions
diff --git a/docs/panes.md b/docs/panes.md
index 388de89..40ea565 100644
--- a/docs/panes.md
+++ b/docs/panes.md
@@ -32,6 +32,10 @@ nothing you click can disagree with what is on screen.
drag the crossing to move both at once.
- **Drag a pane by its title** onto another to swap them. Everything it could
land on greys out; the pane in your hand keeps its colour.
+- **...or onto a tab in the strip** to move it into that tab, or onto the `+` for a
+ tab of its own. The tabs light up as destinations while you carry a pane and the
+ one under the pointer fills; the tab it already lives in does not offer itself. A
+ toast says where it went, since the pane lands somewhere you are not looking.
- **Double-click a name to rename it in place** — a pane's title or a tab in the
strip. Enter keeps it, Escape abandons it, empty gives it back to the program.
- **Drag a tab along the strip** to reorder it. The strip rearranges as you go