mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-01-26 19:09:52 +00:00
fix(links): remove drag-end offset in straight/linear modes by honoring CENTER/NONE as no-offset (#5520)
- Add 'none' direction to path renderer - Map CENTER/NONE to 'none' in adapter - Keep start-end offset intentional; end follows cursor exactly - Preserve spline behavior and arrow rendering Verified with typecheck; no visual changes outside dragging behavior.
This commit is contained in:
@@ -208,6 +208,9 @@ export class LitegraphLinkAdapter {
|
||||
return 'up'
|
||||
case LinkDirection.DOWN:
|
||||
return 'down'
|
||||
case LinkDirection.CENTER:
|
||||
case LinkDirection.NONE:
|
||||
return 'none'
|
||||
default:
|
||||
return 'right'
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ export interface Point {
|
||||
y: number
|
||||
}
|
||||
|
||||
export type Direction = 'left' | 'right' | 'up' | 'down'
|
||||
export type Direction = 'left' | 'right' | 'up' | 'down' | 'none'
|
||||
export type RenderMode = 'spline' | 'straight' | 'linear'
|
||||
export type ArrowShape = 'triangle' | 'circle' | 'square'
|
||||
|
||||
@@ -255,6 +255,8 @@ export class CanvasPathRenderer {
|
||||
case 'down':
|
||||
innerA.y += l
|
||||
break
|
||||
case 'none':
|
||||
break
|
||||
}
|
||||
|
||||
switch (endDir) {
|
||||
@@ -270,6 +272,8 @@ export class CanvasPathRenderer {
|
||||
case 'down':
|
||||
innerB.y += l
|
||||
break
|
||||
case 'none':
|
||||
break
|
||||
}
|
||||
|
||||
// Draw 4-point path: start -> innerA -> innerB -> end
|
||||
@@ -306,6 +310,8 @@ export class CanvasPathRenderer {
|
||||
case 'down':
|
||||
innerA.y += l
|
||||
break
|
||||
case 'none':
|
||||
break
|
||||
}
|
||||
|
||||
switch (endDir) {
|
||||
@@ -321,6 +327,8 @@ export class CanvasPathRenderer {
|
||||
case 'down':
|
||||
innerB.y += l
|
||||
break
|
||||
case 'none':
|
||||
break
|
||||
}
|
||||
|
||||
// Calculate midpoint using innerA/innerB positions (matching original)
|
||||
@@ -399,6 +407,9 @@ export class CanvasPathRenderer {
|
||||
return { x: 0, y: -distance }
|
||||
case 'down':
|
||||
return { x: 0, y: distance }
|
||||
case 'none':
|
||||
default:
|
||||
return { x: 0, y: 0 }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -473,6 +484,8 @@ export class CanvasPathRenderer {
|
||||
case 'down':
|
||||
pa.y += dist * factor
|
||||
break
|
||||
case 'none':
|
||||
break
|
||||
}
|
||||
|
||||
switch (endDirection) {
|
||||
@@ -488,6 +501,8 @@ export class CanvasPathRenderer {
|
||||
case 'down':
|
||||
pb.y += dist * factor
|
||||
break
|
||||
case 'none':
|
||||
break
|
||||
}
|
||||
|
||||
// Calculate bezier point (matching original computeConnectionPoint)
|
||||
@@ -608,6 +623,9 @@ export class CanvasPathRenderer {
|
||||
return 'down'
|
||||
case 'down':
|
||||
return 'up'
|
||||
case 'none':
|
||||
default:
|
||||
return 'none'
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user