fix: abort freedraw line if second touch is detected (#6440)
This commit is contained in:
parent
e31230f78c
commit
d34cd3072f
@ -3500,6 +3500,43 @@ class App extends React.Component<AppProps, AppState> {
|
|||||||
this.setState({ contextMenu: null });
|
this.setState({ contextMenu: null });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.updateGestureOnPointerDown(event);
|
||||||
|
|
||||||
|
// if dragging element is freedraw and another pointerdown event occurs
|
||||||
|
// a second finger is on the screen
|
||||||
|
// discard the freedraw element if it is very short because it is likely
|
||||||
|
// just a spike, otherwise finalize the freedraw element when the second
|
||||||
|
// finger is lifted
|
||||||
|
if (
|
||||||
|
event.pointerType === "touch" &&
|
||||||
|
this.state.draggingElement &&
|
||||||
|
this.state.draggingElement.type === "freedraw"
|
||||||
|
) {
|
||||||
|
const element = this.state.draggingElement as ExcalidrawFreeDrawElement;
|
||||||
|
this.updateScene({
|
||||||
|
...(element.points.length < 10
|
||||||
|
? {
|
||||||
|
elements: this.scene
|
||||||
|
.getElementsIncludingDeleted()
|
||||||
|
.filter((el) => el.id !== element.id),
|
||||||
|
}
|
||||||
|
: {}),
|
||||||
|
appState: {
|
||||||
|
draggingElement: null,
|
||||||
|
editingElement: null,
|
||||||
|
startBoundElement: null,
|
||||||
|
suggestedBindings: [],
|
||||||
|
selectedElementIds: Object.keys(this.state.selectedElementIds)
|
||||||
|
.filter((key) => key !== element.id)
|
||||||
|
.reduce((obj: { [id: string]: boolean }, key) => {
|
||||||
|
obj[key] = this.state.selectedElementIds[key];
|
||||||
|
return obj;
|
||||||
|
}, {}),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// remove any active selection when we start to interact with canvas
|
// remove any active selection when we start to interact with canvas
|
||||||
// (mainly, we care about removing selection outside the component which
|
// (mainly, we care about removing selection outside the component which
|
||||||
// would prevent our copy handling otherwise)
|
// would prevent our copy handling otherwise)
|
||||||
@ -3539,8 +3576,6 @@ class App extends React.Component<AppProps, AppState> {
|
|||||||
});
|
});
|
||||||
this.savePointer(event.clientX, event.clientY, "down");
|
this.savePointer(event.clientX, event.clientY, "down");
|
||||||
|
|
||||||
this.updateGestureOnPointerDown(event);
|
|
||||||
|
|
||||||
if (this.handleCanvasPanUsingWheelOrSpaceDrag(event)) {
|
if (this.handleCanvasPanUsingWheelOrSpaceDrag(event)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user