Pan with the middle button, select several nodes, and fit properly
Three things the graph view did differently from the scene view, or not at all: Panning moves to the middle button, which works from anywhere – a node under the pointer included, since NodeView now lets that one button bubble up. Shift-drag on empty canvas pans too. The left button pulls a rubber band instead and no longer pans. Nodes can be selected several at a time: by band, by ctrl/shift-click, moved together, deleted together, each as one undo step. The selection model gains `nodeIds` alongside the objects' `objectIds`. Fit really fits. It used to pin the zoom at 1 and merely centre, so a graph larger than the view always left nodes hanging out, and it sized every node with one guessed height although real ones vary with their port count. Both sums now live in editor/graph/framing.ts as pure functions, which is what made the defect testable at all. The band selects any node it overlaps rather than one whose position it contains, unlike the scene view: nodes are large rectangles, and a band drawn visibly across one has to catch it.
This commit is contained in:
1 parent
ed1fe31c77
commit
e0d43e12aa
12 files changed
+656
-61
No files matched your search
@@ -0,0 +1,29 @@
|
||||
1. panning per linksklick drag soll raus, dafür beim mittelklick (aber egal ob man ins leere klick oder sich über einem node befindet) = wie bei scene view
|
||||
2. mehrere nodes gleichzeitig auswählbar um dadurch mehrere zu bewegen oder zu löschen. auch mit rect-auswahl selektierbar = auch wie bei scene view
|
||||
3. was anderes: wenn ich in der graph view auf "fit" klicke, dann fittet es nicht wirklich (es befinden sich nodes halb außerhalb)
|
||||
|
||||
---
|
||||
|
||||
**Umgesetzt (2026-09-09), alle drei Punkte.**
|
||||
|
||||
1. **Panning nur noch mit der mittleren Taste** — und zwar von ueberall, auch wenn der Zeiger
|
||||
ueber einem Node steht: der NodeView laesst den Mittelklick bewusst durchblubbern, statt ihn
|
||||
wie jeden anderen Klick zu schlucken. Shift+Links auf leerer Flaeche pannt zusaetzlich, genau
|
||||
wie im Scene-View. Die linke Taste pannt gar nicht mehr.
|
||||
2. **Mehrfachauswahl**: Ziehen auf leerer Flaeche spannt ein Gummiband auf, das jeden **beruehrten**
|
||||
Node auswaehlt; Ctrl/Shift-Klick nimmt einzelne dazu oder raus; das Ziehen eines Nodes der
|
||||
Auswahl bewegt alle; `Delete` (und das Kontextmenue) loescht alle — jeweils als **ein**
|
||||
Undo-Schritt (`CompoundCommand`).
|
||||
Bewusster Unterschied zum Scene-View: dort entscheidet die *Position* eines Objekts, hier die
|
||||
*Ueberschneidung* mit dem Rechteck. Nodes sind grosse Kaesten — ein Band, das sichtbar quer
|
||||
durch einen Node geht, muss ihn fangen.
|
||||
3. **Fit fittet wirklich.** Die alte Fassung setzte den Zoom hart auf `1` und *zentrierte* nur —
|
||||
war der Graph groesser als die Ansicht, hingen Nodes danach zwangslaeufig heraus. Ausserdem
|
||||
rechnete sie mit einer *geschaetzten* Node-Hoehe (80) fuer alle, obwohl echte Nodes je nach
|
||||
Portzahl deutlich hoeher sind. Jetzt wird jeder Node mit seiner **gezeichneten** Groesse
|
||||
gemessen und der Zoom so gewaehlt, dass alles hineinpasst (nie ueber 1 hinaus vergroessert).
|
||||
|
||||
Die Geometrie dahinter liegt als reine Funktion in `src/editor/graph/framing.ts`
|
||||
(`boxesInBand`, `frameBoxes`), nicht im Panel — genau diese Rechnung war der Bug aus Punkt 3 und
|
||||
war vorher von keinem Test erreichbar. Die Mehrfachauswahl selbst sitzt im Selektionsmodell
|
||||
(`nodeSelection`/`toggleNode`, symmetrisch zu den Szenenobjekten), nicht im Canvas.
|
||||
Reference in new issue
Block a user