diff --git a/components/canvas/nodes/ImageNode.tsx b/components/canvas/nodes/ImageNode.tsx index dce455f47..87642d981 100644 --- a/components/canvas/nodes/ImageNode.tsx +++ b/components/canvas/nodes/ImageNode.tsx @@ -350,6 +350,11 @@ export function ImageNode({ node, isSelected }: ImageNodeProps) { setCompareSplitPercent(clampedPercent); }, []); + const startCompareDrag = useCallback((clientX: number) => { + setIsCompareDragging(true); + updateCompareSplitByClientX(clientX); + }, [updateCompareSplitByClientX]); + useEffect(() => { if (!isCompareDragging) return; @@ -1562,64 +1567,69 @@ export function ImageNode({ node, isSelected }: ImageNodeProps) { isCompareDragging ? "cursor-col-resize" : "cursor-default" )} style={{ touchAction: "none" }} + data-canvas-no-drag="true" + onPointerDown={(event) => { + if (event.button !== 0) return; + event.preventDefault(); + event.stopPropagation(); + event.currentTarget.setPointerCapture(event.pointerId); + startCompareDrag(event.clientX); + }} + onPointerMove={(event) => { + if (!isCompareDragging) return; + event.preventDefault(); + event.stopPropagation(); + updateCompareSplitByClientX(event.clientX); + }} + onPointerUp={(event) => { + if (!isCompareDragging) return; + event.preventDefault(); + event.stopPropagation(); + setIsCompareDragging(false); + }} + onPointerCancel={() => { + setIsCompareDragging(false); + }} > {displayTitle}
{`${displayTitle}-原图`}
原图