mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-04-27 09:45:13 +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'
|
return 'up'
|
||||||
case LinkDirection.DOWN:
|
case LinkDirection.DOWN:
|
||||||
return 'down'
|
return 'down'
|
||||||
|
case LinkDirection.CENTER:
|
||||||
|
case LinkDirection.NONE:
|
||||||
|
return 'none'
|
||||||
default:
|
default:
|
||||||
return 'right'
|
return 'right'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ export interface Point {
|
|||||||
y: number
|
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 RenderMode = 'spline' | 'straight' | 'linear'
|
||||||
export type ArrowShape = 'triangle' | 'circle' | 'square'
|
export type ArrowShape = 'triangle' | 'circle' | 'square'
|
||||||
|
|
||||||
@@ -255,6 +255,8 @@ export class CanvasPathRenderer {
|
|||||||
case 'down':
|
case 'down':
|
||||||
innerA.y += l
|
innerA.y += l
|
||||||
break
|
break
|
||||||
|
case 'none':
|
||||||
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (endDir) {
|
switch (endDir) {
|
||||||
@@ -270,6 +272,8 @@ export class CanvasPathRenderer {
|
|||||||
case 'down':
|
case 'down':
|
||||||
innerB.y += l
|
innerB.y += l
|
||||||
break
|
break
|
||||||
|
case 'none':
|
||||||
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
// Draw 4-point path: start -> innerA -> innerB -> end
|
// Draw 4-point path: start -> innerA -> innerB -> end
|
||||||
@@ -306,6 +310,8 @@ export class CanvasPathRenderer {
|
|||||||
case 'down':
|
case 'down':
|
||||||
innerA.y += l
|
innerA.y += l
|
||||||
break
|
break
|
||||||
|
case 'none':
|
||||||
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (endDir) {
|
switch (endDir) {
|
||||||
@@ -321,6 +327,8 @@ export class CanvasPathRenderer {
|
|||||||
case 'down':
|
case 'down':
|
||||||
innerB.y += l
|
innerB.y += l
|
||||||
break
|
break
|
||||||
|
case 'none':
|
||||||
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
// Calculate midpoint using innerA/innerB positions (matching original)
|
// Calculate midpoint using innerA/innerB positions (matching original)
|
||||||
@@ -399,6 +407,9 @@ export class CanvasPathRenderer {
|
|||||||
return { x: 0, y: -distance }
|
return { x: 0, y: -distance }
|
||||||
case 'down':
|
case 'down':
|
||||||
return { x: 0, y: distance }
|
return { x: 0, y: distance }
|
||||||
|
case 'none':
|
||||||
|
default:
|
||||||
|
return { x: 0, y: 0 }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -473,6 +484,8 @@ export class CanvasPathRenderer {
|
|||||||
case 'down':
|
case 'down':
|
||||||
pa.y += dist * factor
|
pa.y += dist * factor
|
||||||
break
|
break
|
||||||
|
case 'none':
|
||||||
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (endDirection) {
|
switch (endDirection) {
|
||||||
@@ -488,6 +501,8 @@ export class CanvasPathRenderer {
|
|||||||
case 'down':
|
case 'down':
|
||||||
pb.y += dist * factor
|
pb.y += dist * factor
|
||||||
break
|
break
|
||||||
|
case 'none':
|
||||||
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
// Calculate bezier point (matching original computeConnectionPoint)
|
// Calculate bezier point (matching original computeConnectionPoint)
|
||||||
@@ -608,6 +623,9 @@ export class CanvasPathRenderer {
|
|||||||
return 'down'
|
return 'down'
|
||||||
case 'down':
|
case 'down':
|
||||||
return 'up'
|
return 'up'
|
||||||
|
case 'none':
|
||||||
|
default:
|
||||||
|
return 'none'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user