From 1a9ecac889ba98fc4abbe9a71f15836eb2d78011 Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 19 Feb 2026 21:23:11 +0800 Subject: [PATCH] fix: hide per-image toolbars during multi-select --- components/canvas/nodes/ImageNode.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/components/canvas/nodes/ImageNode.tsx b/components/canvas/nodes/ImageNode.tsx index 7f6eb7d03..239cb4973 100644 --- a/components/canvas/nodes/ImageNode.tsx +++ b/components/canvas/nodes/ImageNode.tsx @@ -229,6 +229,7 @@ interface ImageNodeProps { export function ImageNode({ node, isSelected }: ImageNodeProps) { const data = node.data as ImageNodeData; + const selectedNodeIds = useCanvasStore((state) => state.selectedNodeIds); const [isHovered, setIsHovered] = useState(false); const [isProcessing, setIsProcessing] = useState(false); const [angleDialogOpen, setAngleDialogOpen] = useState(false); @@ -390,6 +391,7 @@ export function ImageNode({ node, isSelected }: ImageNodeProps) { setPickerMode(false); }, [setPickerMode]); const displayTitle = getImageNodeTitle(data, node.id); + const isMultiSelected = isSelected && selectedNodeIds.length > 1; const animateAddToChat = useCallback(async () => { if (!containerRef.current || !data.src || typeof window === "undefined") { @@ -1427,7 +1429,7 @@ export function ImageNode({ node, isSelected }: ImageNodeProps) { return ( <> {/* 选中时在图片上方显示标题 */} - {isSelected && data.src && ( + {isSelected && !isMultiSelected && data.src && (
@@ -1772,7 +1774,7 @@ export function ImageNode({ node, isSelected }: ImageNodeProps) { {/* 工具栏使用 Portal 渲染到 body,避免被裁剪 */} - {isSelected && data.src && !isEditingTitle && typeof document !== 'undefined' && createPortal( + {isSelected && !isMultiSelected && data.src && !isEditingTitle && typeof document !== 'undefined' && createPortal(