修复方向键长按取消后的点击状态
重置 pointercancel 和 pointerleave 的重复触发标记。 补充长按取消后点击仍可调整的回归测试。
This commit is contained in:
+8
-2
@@ -477,8 +477,14 @@ function DirectionButton({
|
||||
startRepeating(event.shiftKey ? 10 : 1);
|
||||
}}
|
||||
onPointerUp={stopRepeating}
|
||||
onPointerCancel={stopRepeating}
|
||||
onPointerLeave={stopRepeating}
|
||||
onPointerCancel={() => {
|
||||
repeated.current = false;
|
||||
stopRepeating();
|
||||
}}
|
||||
onPointerLeave={() => {
|
||||
repeated.current = false;
|
||||
stopRepeating();
|
||||
}}
|
||||
onClick={(event) => {
|
||||
if (!repeated.current) {
|
||||
onAdjust(event.shiftKey ? 10 : 1);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// @vitest-environment jsdom
|
||||
|
||||
import { fireEvent, render, screen } from '@testing-library/react';
|
||||
import { describe, expect, it, vi } from 'vitest';
|
||||
import { act, fireEvent, render, screen } from '@testing-library/react';
|
||||
import { afterEach, describe, expect, it, vi } from 'vitest';
|
||||
|
||||
import type { Transform } from '../src/features/ui-editor/types/Transform';
|
||||
import { TransformEditor } from '../src/view/ui-editor/components/Inspector/Transform/TransformEditor';
|
||||
@@ -21,6 +21,10 @@ function renderEditor(onChange = vi.fn()) {
|
||||
}
|
||||
|
||||
describe('TransformEditor corner offset controls', () => {
|
||||
afterEach(() => {
|
||||
vi.useRealTimers();
|
||||
});
|
||||
|
||||
it('uses one X/Y input pair for the selected corner', () => {
|
||||
renderEditor();
|
||||
|
||||
@@ -74,4 +78,19 @@ describe('TransformEditor corner offset controls', () => {
|
||||
offset_max: [30, 30],
|
||||
});
|
||||
});
|
||||
|
||||
it('allows a click adjustment after a cancelled long press', () => {
|
||||
vi.useFakeTimers();
|
||||
const { onChange } = renderEditor();
|
||||
const button = screen.getByRole('button', { name: '左上角向右' });
|
||||
|
||||
fireEvent.pointerDown(button, { button: 0 });
|
||||
act(() => {
|
||||
vi.advanceTimersByTime(350);
|
||||
});
|
||||
fireEvent.pointerCancel(button);
|
||||
fireEvent.click(button);
|
||||
|
||||
expect(onChange).toHaveBeenCalledTimes(2);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user