From c4924dbd6b4f2ec4666c5d45338bb448c5183acf Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 1 Mar 2026 03:57:13 +0800 Subject: [PATCH] fix(canvas): make compare toggle size adaptive with separate hit area --- components/canvas/nodes/ImageNode.tsx | 64 ++++++++++++++++++++------- 1 file changed, 49 insertions(+), 15 deletions(-) diff --git a/components/canvas/nodes/ImageNode.tsx b/components/canvas/nodes/ImageNode.tsx index abf78862d..b713e9cb6 100644 --- a/components/canvas/nodes/ImageNode.tsx +++ b/components/canvas/nodes/ImageNode.tsx @@ -357,6 +357,22 @@ export function ImageNode({ node, isSelected }: ImageNodeProps) { }, [allNodes, data.metadata, data.originalSrc, data.src, node.connections, node.id]); const hasCompareSource = Boolean(data.src) && Boolean(compareSource); + const compareButtonVisualSize = useMemo(() => { + const minSide = Math.max(1, Math.min(node.size.width || 0, node.size.height || 0)); + return Math.round(Math.max(32, Math.min(42, minSide * 0.12))); + }, [node.size.height, node.size.width]); + const compareButtonHitSize = useMemo( + () => Math.max(44, compareButtonVisualSize + 12), + [compareButtonVisualSize] + ); + const compareButtonIconSize = useMemo( + () => Math.round(Math.max(14, Math.min(20, compareButtonVisualSize * 0.45))), + [compareButtonVisualSize] + ); + const compareButtonInset = useMemo( + () => Math.max(6, Math.min(12, Math.round(compareButtonVisualSize * 0.24))), + [compareButtonVisualSize] + ); // 退出拾取模式时清空状态 useEffect(() => { @@ -1716,13 +1732,18 @@ export function ImageNode({ node, isSelected }: ImageNodeProps) { )}