From f0bba18841d1dd95415f360593d449ceab1f947b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Mon, 14 Sep 2026 18:14:02 +0800 Subject: [PATCH] =?UTF-8?q?UI=E7=BC=96=E8=BE=91=E5=99=A8=E6=94=B6=E5=8F=A3?= =?UTF-8?q?=E5=A4=9A=E6=A0=91=E4=B8=8A=E4=B8=8B=E6=96=87=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E7=9B=AE=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 预览菜单携带所属树 ID 避免非当前图片树的结构操作写错目标 --- .../components/preview/PreviewWorkspace.tsx | 17 ++++++++++++++--- .../components/preview/UiTreeRenderer.tsx | 6 +++++- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/apps/ai-game-creator-shell/src/view/ui-editor/components/preview/PreviewWorkspace.tsx b/apps/ai-game-creator-shell/src/view/ui-editor/components/preview/PreviewWorkspace.tsx index 91c0c24a1..5527e7687 100644 --- a/apps/ai-game-creator-shell/src/view/ui-editor/components/preview/PreviewWorkspace.tsx +++ b/apps/ai-game-creator-shell/src/view/ui-editor/components/preview/PreviewWorkspace.tsx @@ -98,6 +98,7 @@ export function PreviewWorkspace({ >(new Map()); const [contextMenu, setContextMenu] = useState<{ nodeId: NodeId; + treeId: string; x: number; y: number; isPageRoot: boolean; @@ -480,9 +481,12 @@ export function PreviewWorkspace({ event: ReactMouseEvent, node: NonNullable['root'], isPageRoot: boolean, + treeId?: string, ) => { + if (!treeId) return; setContextMenu({ nodeId: node.id, + treeId, x: event.clientX, y: event.clientY, isPageRoot, @@ -566,6 +570,7 @@ export function PreviewWorkspace({ ) : null} setContextMenu(null)} - onInsertChild={(nodeId) => canvas.insertNode(nodeId)} - onInsertSibling={(nodeId) => canvas.insertNodeAfter(nodeId)} - onDelete={(nodeId) => canvas.deleteNode(nodeId)} + onInsertChild={(nodeId) => + canvas.insertNode(nodeId, contextMenu.treeId) + } + onInsertSibling={(nodeId) => + canvas.insertNodeAfter(nodeId, contextMenu.treeId) + } + onDelete={(nodeId) => + canvas.deleteNode(nodeId, contextMenu.treeId) + } /> ) : null}
; @@ -41,6 +42,7 @@ type UiTreeRendererProps = { event: ReactMouseEvent, node: UiNode, isPageRoot: boolean, + treeId?: string, ) => void; onNodePointerDown: NodePointerDown; onNodePointerMove: (event: ReactPointerEvent) => void; @@ -81,6 +83,7 @@ const EMPTY_PREVIEW_TRANSFORMS: ReadonlyMap< function RenderNode({ node, + treeId, isRoot, parentContainer, showFrame, @@ -173,7 +176,7 @@ function RenderNode({ event.preventDefault(); event.stopPropagation(); onSelectNode(node.id); - onNodeContextMenu(event, node, Boolean(isRoot)); + onNodeContextMenu(event, node, Boolean(isRoot), treeId); }} onPointerDown={ receivesPointerGesture @@ -206,6 +209,7 @@ function RenderNode({