窗口失焦时丢弃未提交的树拖拽
PreviewWorkspace.tsx 的 onWindowBlur 一并清掉 treeDragRef 与树拖拽预览偏移:失焦时浏览器不一定补 pointercancel,陈旧手势会被后续 pointerup 复用并把意外偏移写进文档 tests/previewRightPanDrag.test.tsx 补失焦后抬起不提交偏移的用例
This commit is contained in:
@@ -404,6 +404,17 @@ export function PreviewWorkspace({
|
|||||||
rightPressSequenceRef.current = false;
|
rightPressSequenceRef.current = false;
|
||||||
rightPanRef.current = null;
|
rightPanRef.current = null;
|
||||||
setIsPanning(false);
|
setIsPanning(false);
|
||||||
|
// 失焦时浏览器不一定补 pointercancel:丢掉未提交的树拖拽,避免后续指针事件
|
||||||
|
// 复用陈旧手势把意外偏移写进文档。
|
||||||
|
const drag = treeDragRef.current;
|
||||||
|
if (drag) {
|
||||||
|
treeDragRef.current = null;
|
||||||
|
setPreviewTreeOffsets((current) => {
|
||||||
|
const next = new Map(current);
|
||||||
|
next.delete(drag.treeId);
|
||||||
|
return next;
|
||||||
|
});
|
||||||
|
}
|
||||||
};
|
};
|
||||||
window.addEventListener('keydown', onKeyDown);
|
window.addEventListener('keydown', onKeyDown);
|
||||||
window.addEventListener('keyup', onKeyUp);
|
window.addEventListener('keyup', onKeyUp);
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user