Commit Graph

18 Commits

Author SHA1 Message Date
filtered
fd4ffbc1f8 Fix render issues after moving floating input links (#841)
- Fixes floating inputs have invisible segment after moving
- Fixes floating input can be moved onto existing input link, resulting
in the slot having two links
2025-03-24 00:16:06 +00:00
filtered
7b8f01f546 [Refactor] Split moving links (#839)
Splits moving links out to separate input and output classes.
2025-03-23 22:11:08 +00:00
filtered
05587d8a19 Fix moving existing links can result in loopback (#838)
Prevents nodes connecting links to themselves when moving existing
links.

If moving multiple links with reroutes, this will instead _reconnect_
any links that would become loopbacks, only without any rereoutes.
2025-03-23 19:00:55 +00:00
filtered
ff6281c840 Fix cannot shift-drag new link from first link segment (#836)
Fixes issue where new links can only be shift-click dragged from the
link line on link segments *after* a native reroute.
2025-03-23 15:13:06 +00:00
filtered
cd9778bb6c Fix reroutes lost when dropping output links on reroute (#820)
Blocks attempts to drag links from an output onto a reroute in any of
the links.
2025-03-22 13:49:26 +00:00
filtered
850d1b9652 [API] Finalise LinkConnector design, adding reroute logic (#817)
- Splits link connect logic out of `LinkConnector` to individual
`RenderLink` classes
- Add support for connecting / reconnecting reroutes in various
configurations
- Adds support for moving existing floating links from outputs / inputs
- Fixes numerous corruption issues when reconnecting reroutes / moving
links
- Tests in separate PR #816
2025-03-21 19:41:20 +00:00
filtered
87aeab16a0 [API] Fix several floating links issues & add Reroute.totalLinks (#815)
Resolves several issues with floating links.  Highlights:

- Caches floating links on slots, removing some loop checks (inefficient
/ does not scale)
- Simpler APIs
- Adds `Reroute.totalLinks` (regular and floating
2025-03-21 19:17:54 +00:00
filtered
766e69bbf1 Fix regression: shift-drag new link from link line (#814)
- Resolves #375
- Resolves https://github.com/Comfy-Org/ComfyUI_frontend/issues/2941
2025-03-21 19:10:26 +00:00
filtered
38bbf2fead Add reroute snap highlight (#813)
### Reroute snap highlight

When connecting links, a simple border now helps to indicate that a
connecting link can be dropped on a reroute below the pointer.

### Reroute ID badges

Optionally, intended for debugging purposes, drawing of ID badges can
also be manually enabled via console.
2025-03-21 19:05:09 +00:00
filtered
4078e3ad8b Improve reroutes - prep for LinkConnector overhaul (#810)
- Fixes TS types
- Various bug fixes for reroute / link (re)connect
- Adds reroute snap circle when connecting links
- Validates reroutes on drop (part of larger work)
- Prevent nodes linking to themselves
2025-03-21 18:47:36 +00:00
filtered
48483670f5 Fix #781 regression in reconnect floating reroutes (#783)
- Follow-up on #781
- Fixes regression when reconnecting a reroute chain from an input
2025-03-14 01:41:52 +00:00
filtered
690f7bdfb3 Improve reroute re-connecting UX (#781)
More intuitive UX when connecting reroutes to each other.
- Remove middle reroutes when connecting around them
- Fix earlier reroutes in chain lost when stitching
- Fix all reroutes removed when stitching in reverse
2025-03-14 01:15:38 +00:00
filtered
bb822e999f Fix new link from reroute to canvas does nothing (#779)
Resolves regression - now performs the same action as dropping a link
from an output to canvas.
2025-03-14 11:17:44 +11:00
filtered
36f197b34e Fix move links & drop on canvas ignores reroutes (#775)
Moving links onto the canvas re-connects existing reroutes after picking
a new node.
2025-03-13 20:56:07 +00:00
filtered
e6a914117b Add floating reroutes (#773)
### Floating reroutes

Native reroutes can now be kept in a disconnected state.

Link chains may be kept provided they are connected to _either_ an input
or an output. By design, reroutes will be automatically removed if both
sides are disconnected.
2025-03-13 19:56:57 +00:00
filtered
9981d19b36 Fix connecting link regressions (#750)
- Fix move link creates link bypassing reroutes
- Fix move link creates new link instead of moving
2025-03-11 14:10:42 +00:00
filtered
5ed264ce8e Allow reroutes to be re-connected (#749)
- Resolves #305
- Allows links to be dragged from inputs to reroutes
2025-03-11 13:47:26 +00:00
filtered
c0bfe5489f [API] Add LinkConnector - replaces connecting_links (#726)
### LinkConnector

Replaces the minimal-change effort of `connecting_links` with a more
reliable implementation.

- Subscribable, event-based API
- Uses browser-standard `e.preventDefault()` to cancel `before-*` events
- Uses standard `state` POJO - can be proxied without issue
- Structures code and separates concerns out of `LGraphCanvas`
- Link creation calls can now be made from anywhere, without the need
for a rewrite
- New canvas sub-components now live in `src/canvas/`

### Rendering

- Skips link segments by setting a `_dragging` bool flag on the LLink or
Reroute
- Moves some previously nested code to event listeners, configured in
the `LGraphCanvas` constructor

### Deprecation

`LGraphCanvas.connecting_links` is now deprecated and will later be
removed.

Until it is removed, to prevent breaking extensions it will continue to
be set and cleared by a legacy callback. The contents of this property
are ignored; code search revealed no exentsions actually modifying the
array.
2025-03-08 23:48:45 +00:00