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 =