From a2cbc70d692f2c5ea41ab651d89aa1466ad47321 Mon Sep 17 00:00:00 2001 From: Skyler Lehmkuhl Date: Sun, 22 Dec 2024 05:45:08 -0500 Subject: [PATCH] Fix mouseup handler not getting called when mouse is released outside the canvas --- src/main.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main.js b/src/main.js index 26378e3..63ebbae 100644 --- a/src/main.js +++ b/src/main.js @@ -3142,7 +3142,7 @@ function stage() { updateUI() updateInfopanel() }) - stage.addEventListener("mouseup", (e) => { + stage.mouseup = (e) => { context.mouseDown = false context.dragging = false context.dragDirection = undefined @@ -3201,11 +3201,18 @@ function stage() { updateUI() updateMenu() updateInfopanel() - }) + } + stage.addEventListener("mouseup", stage.mouseup) stage.addEventListener("mousemove", (e) => { let mouse = getMousePos(stage, e) mouse = context.activeObject.transformMouse(mouse) context.mousePos = mouse + // if mouse is released, even if it happened outside the stage + if (e.buttons==0 && + (context.mouseDown || context.dragging || context.dragDirection || context.selectionRect)) { + stage.mouseup(e) + return + } switch (mode) { case "draw": context.activeCurve = undefined