修复素材键盘选择来源判定
根据 click detail 识别键盘激活并提前清理残留指针类型 新增触摸手势后键盘选择的回归测试
This commit is contained in:
@@ -227,6 +227,22 @@ describe('ImageCanvasAssetRowView', () => {
|
||||
);
|
||||
});
|
||||
|
||||
it('uses click detail to recognize keyboard selection after a stale touch gesture', () => {
|
||||
const toggleAssetSelected = vi.fn();
|
||||
renderAssetRow({ isAssetSelectionMode: true, toggleAssetSelected });
|
||||
const primaryButton = screen.getByRole('button', {
|
||||
name: '选择素材账号素材A',
|
||||
});
|
||||
|
||||
fireEvent.pointerDown(primaryButton, { pointerType: 'touch' });
|
||||
fireEvent.click(primaryButton, { detail: 0 });
|
||||
|
||||
expect(toggleAssetSelected).toHaveBeenCalledWith(
|
||||
'asset-1',
|
||||
expect.objectContaining({ pointerKind: 'keyboard' }),
|
||||
);
|
||||
});
|
||||
|
||||
it('renders rename input and commits with Enter', () => {
|
||||
const commitAssetRename = vi.fn();
|
||||
renderAssetRow({
|
||||
|
||||
@@ -109,6 +109,9 @@ export function ImageCanvasAssetRowView({
|
||||
|
||||
const selectAssetFromEvent = useCallback(
|
||||
(event: ReactMouseEvent<HTMLElement>) => {
|
||||
const pointerKind =
|
||||
event.detail === 0 ? 'keyboard' : selectionPointerKindRef.current;
|
||||
selectionPointerKindRef.current = 'keyboard';
|
||||
if (
|
||||
!isAssetSelectionMode ||
|
||||
isUploadingAsset ||
|
||||
@@ -123,9 +126,8 @@ export function ImageCanvasAssetRowView({
|
||||
shiftKey: event.shiftKey,
|
||||
ctrlKey: event.ctrlKey,
|
||||
metaKey: event.metaKey,
|
||||
pointerKind: selectionPointerKindRef.current,
|
||||
pointerKind,
|
||||
});
|
||||
selectionPointerKindRef.current = 'keyboard';
|
||||
},
|
||||
[
|
||||
asset.id,
|
||||
|
||||
Reference in New Issue
Block a user