From d73ce57a7ccf9470e4029b4785de6f9b04daf424 Mon Sep 17 00:00:00 2001 From: meleki Date: Mon, 14 Sep 2026 19:16:28 +0200 Subject: [PATCH] A hit test asks the same area as the pointer, and the + menu is scrolled by the scaffold Behaviors: "on a node" for an edge drop is the node's pointer area, which reaches a port radius past its edge, so a drop on an input port at x = 0 is never a drop on empty canvas. Development: steps pick an asset type with `pickAssetType()`, the way they open a tab with `openTab()`. --- Behaviors.md | 5 ++++- Development.md | 6 ++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Behaviors.md b/Behaviors.md index c6e7bd1..0b6180a 100644 --- a/Behaviors.md +++ b/Behaviors.md @@ -224,7 +224,10 @@ shown on the node and editable in the inspector. types this edge could reach at all, and the picked node arrives already wired; node and link go in as **one** undo step (`core/graph/dropTarget.ts` decides all of this, the canvas only draws it). The dangling edge stays on screen while that palette is up, so the connection being made is - still visible while its node is chosen. + still visible while its node is chosen. **"On a node" means the area the node's pointer events + use** (`NodeView.containsLocal`), which reaches a port radius past the left and right edge: an + input port sits at exactly the node's edge, so a drop that hits the port hits the node, and never + the empty canvas a hair beside it. - **A link can be hidden**, so a connection across the whole graph does not have to be drawn as a line across the whole graph. Right-click a port → *Hide link*; the curve is replaced by a short stub at each end, ending in a dot captioned with the node at the *other* end. The connection is diff --git a/Development.md b/Development.md index 765d2cc..dded985 100644 --- a/Development.md +++ b/Development.md @@ -73,6 +73,12 @@ not by clicking its name: since the tenth tab the row hides some of them at the and the helper goes through the `»` menu when it has to. Clicking the label directly took the whole suite down the day the Particles tab was added. +The same holds for the **`+` menu**: it has one entry per asset type and scrolls past 320 px, so the +last of them sit under the mask, where `locate` still finds an entry but a click on it lands on +nothing. A step picks a type with `pickAssetType(t, 'Font')` from the same file, which scrolls it in +first. The fourteenth type (Variables) pushed `Font` under that edge and took the font step down, +because only the particles step had carried the workaround of its own. + **A check that demands an exact number must be handed the number, not something it can be derived from.** The particle preview used to hold second 0.5 by computing the clock reading that *would* mean 0.5 since the field started; the round trip through floating point misses by the last bit about one