Describe picking a link or transition on its line (#289)

admin committed 2026-10-01 20:51:20 +02:00
1 parent f9b11df4d1
commit 5c472427d8
4 files changed
+16 -4

No files matched your search

+10
@@ -442,6 +442,16 @@ playing use the same two words.
touches — nodes are large rectangles, so touching counts, unlike the scene view's test of an
object's position. Ctrl/Shift-click adds or removes single nodes, dragging any node of a
selection moves all of them, and `Delete` removes all of them — one undo step either way.
- **A link is picked on its line** (#289). A click on the curve selects that link and draws a
halo behind it; Ctrl/Shift-click adds or takes one, and the rubber band takes every line it
crosses, into the same selection as the nodes and boxes it caught. `Delete` or `Backspace`
removes what is picked as one undo step, and a right-click on a line offers *Hide link* and
*Delete link* (it speaks about the whole selection, like a box's menu). The inspector shows a
picked link: the node and port at each end and the type it carries, with *Hide link* and
*Delete link* below; for several it says how many. A press counts within 6 screen pixels of
the line, and where two cross the one drawn last wins. A hidden link has no line and is never
picked this way: its mark at the port stays its handle. The port's own menu is unchanged,
*Disconnect* included. The hit test is `editor/graph/edgeHit.ts`, the canvas only asks it.
- **The band catches groups and comments too** (#95), and they end up in the *same* selection as
the nodes: one drag then moves all of it, one `Delete` removes all of it, one undo takes it back.
A box counts only when the band holds **all** of it, where a node counts on touching alone. That
+1 -1
@@ -18,7 +18,7 @@ php tests/php/accounts.test.php # the API's accoun
# has and the web server's container has not (SKIP there)
php tests/php/snapshots.test.php # the snapshot store (#231), the same way
php tests/php/releases.test.php # the release store (#266), the same way
node tools/seed-e2e.mjs && node tools/e2e.mjs # 1629 editor checks, screenshots in /tmp/gm-e2e-*.png
node tools/seed-e2e.mjs && node tools/e2e.mjs # 1635 editor checks, screenshots in /tmp/gm-e2e-*.png
GM_STEPS=20 node tools/e2e.mjs # or 1-12, or 6,20 — a subset while working on one step
./e2e.sh start [GM_STEPS] # the same run detached, see below
./e2e.sh status # live progress, or the last run's result
+1 -1
@@ -1,5 +1,5 @@
`Ctrl+Z` / `Ctrl+Shift+Z` / `Ctrl+Y` undo/redo (`Cmd` works wherever `Ctrl` does) · `Delete` or
`Backspace` remove the selection (objects, nodes, frames, the shapes of a vector art, keys or a row of the Animation tab, a graph group or comment — the box only, its nodes stay, and a band that caught boxes and nodes together removes both in one step; an asset asks first) · `Ctrl+G` create
`Backspace` remove the selection (objects, nodes, frames, the shapes of a vector art, keys or a row of the Animation tab, a graph group or comment — the box only, its nodes stay, and a band that caught boxes and nodes together removes both in one step; a link or transition picked on its line; an asset asks first) · `Ctrl+G` create
container from the selection · `Ctrl+Enter` play, and pause/resume while playing · `Esc` stop ·
`Esc` on a question does what its Cancel does ·
while the eyedropper of an object variable picks, `Enter` takes the candidate and `Esc` leaves
+4 -2
@@ -50,8 +50,10 @@ last. Only states may do this; any other node connected to itself is still refus
A transition can be **named**. Select a state and the inspector lists its transitions in two
groups, *out* and *in*, each row with the state at the far end, a name field and a button to
remove it — that list is also the only way to delete a transition, since the arrow itself cannot
be clicked. The name is drawn on the arrow. Names need **not** be unique across the machine: what
remove it. The arrow itself is a handle too (#289): a click on it, or on its name, picks the
transition, the inspector then shows its two states and its name field, and `Delete` or a
right-click → *Delete transition* removes it. Ctrl/Shift-click and the rubber band pick several.
The name is drawn on the arrow. Names need **not** be unique across the machine: what
must not repeat is two transitions of the same name leaving the *same* state (the inspector warns
when they do). That is the point of naming them — a single `State transition` node asking for
`alarm` moves every state that has an `alarm`.