Fix mouseup handler not getting called when mouse is released outside the canvas

This commit is contained in:
Skyler Lehmkuhl 2024-12-22 05:45:08 -05:00
parent 8c0945813e
commit a2cbc70d69
1 changed files with 9 additions and 2 deletions

View File

@ -3142,7 +3142,7 @@ function stage() {
updateUI() updateUI()
updateInfopanel() updateInfopanel()
}) })
stage.addEventListener("mouseup", (e) => { stage.mouseup = (e) => {
context.mouseDown = false context.mouseDown = false
context.dragging = false context.dragging = false
context.dragDirection = undefined context.dragDirection = undefined
@ -3201,11 +3201,18 @@ function stage() {
updateUI() updateUI()
updateMenu() updateMenu()
updateInfopanel() updateInfopanel()
}) }
stage.addEventListener("mouseup", stage.mouseup)
stage.addEventListener("mousemove", (e) => { stage.addEventListener("mousemove", (e) => {
let mouse = getMousePos(stage, e) let mouse = getMousePos(stage, e)
mouse = context.activeObject.transformMouse(mouse) mouse = context.activeObject.transformMouse(mouse)
context.mousePos = 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) { switch (mode) {
case "draw": case "draw":
context.activeCurve = undefined context.activeCurve = undefined