From a077f2dda4a147ff71d19a0e6ae9ca6ed04ef43c Mon Sep 17 00:00:00 2001 From: galister <22305755+galister@users.noreply.github.com> Date: Wed, 25 Sep 2024 04:16:37 +0900 Subject: [PATCH] fix dragging cursor off-screen --- src/backend/input.rs | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/backend/input.rs b/src/backend/input.rs index 2bf6568..98d7b5f 100644 --- a/src/backend/input.rs +++ b/src/backend/input.rs @@ -313,15 +313,17 @@ where pointer = &mut app.input_state.pointers[idx]; pointer.interaction.hovered_id = None; } - if let Some(clicked_id) = pointer.interaction.clicked_id.take() { - if let Some(clicked) = overlays.mut_by_id(clicked_id) { - let hit = PointerHit { - pointer: pointer.idx, - overlay: clicked_id, - mode: pointer.interaction.mode, - ..Default::default() - }; - clicked.backend.on_pointer(app, &hit, false); + if !pointer.now.click && pointer.before.click { + if let Some(clicked_id) = pointer.interaction.clicked_id.take() { + if let Some(clicked) = overlays.mut_by_id(clicked_id) { + let hit = PointerHit { + pointer: pointer.idx, + overlay: clicked_id, + mode: pointer.interaction.mode, + ..Default::default() + }; + clicked.backend.on_pointer(app, &hit, false); + } } } return (0.0, None); // no hit