限制方向键长按仅响应主指针
忽略非主指针按钮的 pointerdown,避免右键触发连续调整。 补充非主键长按不产生调整的回归测试。
This commit is contained in:
+3
@@ -473,6 +473,9 @@ function DirectionButton({
|
||||
disabled={disabled}
|
||||
className="grid size-8 place-items-center rounded-lg border border-(--platform-subpanel-border) bg-white/70 text-(--platform-text-soft) transition hover:border-orange-300 hover:bg-orange-50 hover:text-orange-700 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-orange-200 disabled:cursor-default disabled:opacity-40"
|
||||
onPointerDown={(event) => {
|
||||
if (event.button !== 0) {
|
||||
return;
|
||||
}
|
||||
event.preventDefault();
|
||||
startRepeating(event.shiftKey ? 10 : 1);
|
||||
}}
|
||||
|
||||
@@ -13,6 +13,12 @@ const transform: Transform = {
|
||||
offset_max: [30, 40],
|
||||
};
|
||||
|
||||
function firePointerDown(element: HTMLElement, button: number) {
|
||||
const event = new Event('pointerdown', { bubbles: true });
|
||||
Object.defineProperty(event, 'button', { value: button });
|
||||
fireEvent(element, event);
|
||||
}
|
||||
|
||||
function renderEditor(onChange = vi.fn()) {
|
||||
return {
|
||||
onChange,
|
||||
@@ -84,7 +90,7 @@ describe('TransformEditor corner offset controls', () => {
|
||||
const { onChange } = renderEditor();
|
||||
const button = screen.getByRole('button', { name: '左上角向右' });
|
||||
|
||||
fireEvent.pointerDown(button, { button: 0 });
|
||||
firePointerDown(button, 0);
|
||||
act(() => {
|
||||
vi.advanceTimersByTime(350);
|
||||
});
|
||||
@@ -93,4 +99,17 @@ describe('TransformEditor corner offset controls', () => {
|
||||
|
||||
expect(onChange).toHaveBeenCalledTimes(2);
|
||||
});
|
||||
|
||||
it('does not start repeating for non-primary pointer buttons', () => {
|
||||
vi.useFakeTimers();
|
||||
const { onChange } = renderEditor();
|
||||
const button = screen.getByRole('button', { name: '左上角向右' });
|
||||
|
||||
firePointerDown(button, 2);
|
||||
act(() => {
|
||||
vi.advanceTimersByTime(350);
|
||||
});
|
||||
|
||||
expect(onChange).not.toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user