优化叠加模式子节点显示

从互斥模式切回叠加模式时恢复全部直接子节点可见

补充模式切换回归测试并同步实施合同
This commit is contained in:
2026-08-20 11:42:27 +08:00
parent bfecfffd2b
commit 901534519f
3 changed files with 21 additions and 1 deletions
@@ -741,11 +741,24 @@ export function useUiEditorSession(
function setNodeChildrenDisplayMode(mode: ChildrenDisplayMode) {
if (!activeImageId || !selectedNodeId) return;
const selectedNode = treeForActiveImage
? findUiNodeLocation(treeForActiveImage.root, selectedNodeId)?.node
: null;
const result = editor.setNodeChildrenDisplayMode(
activeImageId,
selectedNodeId,
mode,
);
if (result.ok && mode === 'Stack' && selectedNode) {
setHiddenNodeIds((current) => {
if (!selectedNode.children.some((child) => current.has(child.id))) {
return current;
}
const next = new Set(current);
for (const child of selectedNode.children) next.delete(child.id);
return next;
});
}
if (!result.ok) setStatus('子节点显示模式更新失败。');
return result;
}
@@ -436,6 +436,13 @@ describe('UiEditorPage', () => {
act(() => result.current.canvas.selectExclusiveChild(childAId!));
expect(result.current.canvas.isNodePreviewVisible(childAId!)).toBe(true);
expect(result.current.canvas.isNodePreviewVisible(childBId!)).toBe(false);
act(() => result.current.inspector.setNodeChildrenDisplayMode('Stack'));
expect(result.current.canvas.isNodePreviewVisible(childAId!)).toBe(true);
expect(result.current.canvas.isNodePreviewVisible(childBId!)).toBe(true);
expect(
result.current.canvas.isNodePreviewVisible(childBDescendantId!),
).toBe(true);
});
it('shows a page-level save failure and allows a retry', async () => {