diff --git a/components/canvas/nodes/ImageNode.tsx b/components/canvas/nodes/ImageNode.tsx index 030b69ffc..e230a0eee 100644 --- a/components/canvas/nodes/ImageNode.tsx +++ b/components/canvas/nodes/ImageNode.tsx @@ -2723,9 +2723,6 @@ export function ImageNode({ useEffect(() => { if (!isSelected) { - if (localEditMode && isLocalEditControlTarget(document.activeElement)) { - return; - } setCropPanelOpen(false); setCropRect(null); setCropInteraction(null); @@ -2736,7 +2733,10 @@ export function ImageNode({ setIsEditingTitle(false); setPromptDialogOpen(false); resetBoxCutoutState(); - resetLocalEditState(); + // 局部编辑有独立的“退出”按钮,避免用户点到浮层或画布边缘时丢失框选与底部操作条。 + if (!localEditMode) { + resetLocalEditState(); + } } }, [isSelected, localEditMode, resetBoxCutoutState, resetLocalEditState]); @@ -8520,11 +8520,8 @@ export function ImageNode({ data-local-edit-control="true" key={region.id} onClick={(event) => event.stopPropagation()} - onClickCapture={(event) => event.stopPropagation()} onMouseDown={(event) => event.stopPropagation()} - onMouseDownCapture={(event) => event.stopPropagation()} onPointerDown={(event) => event.stopPropagation()} - onPointerDownCapture={(event) => event.stopPropagation()} style={style} >
@@ -8756,6 +8753,12 @@ export function ImageNode({ event.stopPropagation(); removeLocalEditReferenceImage(region.id, reference.id); }} + onPointerDown={(event) => { + event.preventDefault(); + event.nativeEvent.stopImmediatePropagation?.(); + event.stopPropagation(); + removeLocalEditReferenceImage(region.id, reference.id); + }} title="移除参考图" type="button" > @@ -8770,10 +8773,9 @@ export function ImageNode({ ) )} - {isSelected && + {localEditMode && !isMultiSelected && data.src && - localEditMode && !isThisNodePicking && !isCompareMode && typeof document !== "undefined" &&