Fix mouse leave deselecting nodes

This commit is contained in:
thepaperpilot 2023-04-25 23:51:18 -05:00
parent 1e3f065427
commit 7872cd1bc6

View file

@ -19,7 +19,7 @@
@touchstart="(e: TouchEvent) => mouseDown(e)" @touchstart="(e: TouchEvent) => mouseDown(e)"
@mouseup="() => endDragging(unref(draggingNode))" @mouseup="() => endDragging(unref(draggingNode))"
@touchend.passive="() => endDragging(unref(draggingNode))" @touchend.passive="() => endDragging(unref(draggingNode))"
@mouseleave="() => endDragging(unref(draggingNode))" @mouseleave="() => endDragging(unref(draggingNode), true)"
> >
<svg class="stage" width="100%" height="100%"> <svg class="stage" width="100%" height="100%">
<g class="g1"> <g class="g1">
@ -223,7 +223,7 @@ function drag(e: MouseEvent | TouchEvent) {
} }
} }
function endDragging(node: BoardNode | null) { function endDragging(node: BoardNode | null, mouseLeave = false) {
if (props.draggingNode.value != null && props.draggingNode.value === node) { if (props.draggingNode.value != null && props.draggingNode.value === node) {
if (props.receivingNode.value == null) { if (props.receivingNode.value == null) {
props.draggingNode.value.position.x += Math.round(dragged.value.x / 25) * 25; props.draggingNode.value.position.x += Math.round(dragged.value.x / 25) * 25;
@ -241,7 +241,7 @@ function endDragging(node: BoardNode | null) {
} }
props.setDraggingNode.value(null); props.setDraggingNode.value(null);
} else if (!hasDragged.value) { } else if (!hasDragged.value && !mouseLeave) {
props.state.value.selectedNode = null; props.state.value.selectedNode = null;
props.state.value.selectedAction = null; props.state.value.selectedAction = null;
} }