fix: stabilize canvas local edit controls
Some checks failed
Lint / build (20) (push) Has been cancelled
Playwright Tests / test (push) Has been cancelled

This commit is contained in:
Your Name 2026-05-20 15:44:17 +08:00
parent 06edd31b87
commit 31a697f491

View File

@ -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}
>
<div className="flex items-center gap-1.5">
@ -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" &&