diff --git a/src/components/image-editor/ImageCanvasAssetRowView.test.tsx b/src/components/image-editor/ImageCanvasAssetRowView.test.tsx index fe69f5845..95557c41e 100644 --- a/src/components/image-editor/ImageCanvasAssetRowView.test.tsx +++ b/src/components/image-editor/ImageCanvasAssetRowView.test.tsx @@ -126,8 +126,10 @@ function renderAssetRow({ onDownloadAsset, }; - render(); - return props; + return { + props, + ...render(), + }; } describe('ImageCanvasAssetRowView', () => { @@ -185,6 +187,25 @@ describe('ImageCanvasAssetRowView', () => { expect(screen.queryByRole('menu')).toBeNull(); }); + it('closes the right click menu when selection mode becomes active', () => { + const { props, rerender } = renderAssetRow(); + + fireEvent.contextMenu( + screen.getByRole('button', { name: '添加账号素材A' }), + { + clientX: 120, + clientY: 80, + }, + ); + expect(screen.getByRole('menu')).toBeTruthy(); + + rerender( + , + ); + + expect(screen.queryByRole('menu')).toBeNull(); + }); + it('selects the asset instead of adding it in selection mode', () => { const addAssetLayer = vi.fn(); const toggleAssetSelected = vi.fn(); diff --git a/src/components/image-editor/ImageCanvasAssetRowView.tsx b/src/components/image-editor/ImageCanvasAssetRowView.tsx index 47ea4cb3b..5f401a839 100644 --- a/src/components/image-editor/ImageCanvasAssetRowView.tsx +++ b/src/components/image-editor/ImageCanvasAssetRowView.tsx @@ -106,6 +106,12 @@ export function ImageCanvasAssetRowView({ setMenuPosition(null); }, []); + useEffect(() => { + if (isAssetSelectionMode) { + closeMenu(); + } + }, [closeMenu, isAssetSelectionMode]); + const selectAssetFromEvent = useCallback( (event: ReactMouseEvent) => { const pointerKind =