From c6403637eac7ea4844fbf6c79c185cb804fedcf5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Moya?= Date: Thu, 14 May 2020 14:01:40 +0200 Subject: [PATCH] :sparkles: Handle mouse movement outside viewport --- .../src/uxbox/main/ui/workspace/viewport.cljs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/frontend/src/uxbox/main/ui/workspace/viewport.cljs b/frontend/src/uxbox/main/ui/workspace/viewport.cljs index 798826420..9632ec599 100644 --- a/frontend/src/uxbox/main/ui/workspace/viewport.cljs +++ b/frontend/src/uxbox/main/ui/workspace/viewport.cljs @@ -189,6 +189,22 @@ (when (= 2 (.-which event)) (st/emit! ::finish-positioning))))) + on-pointer-down + (mf/use-callback + (fn [event] + (let [target (dom/get-target event)] + ; Capture mouse pointer to detect the movements even if cursor + ; leaves the viewport or the browser itself + ; https://developer.mozilla.org/en-US/docs/Web/API/Element/setPointerCapture + (.setPointerCapture target (.-pointerId event))))) + + on-pointer-up + (mf/use-callback + (fn [event] + (let [target (dom/get-target event)] + ; Release pointer on mouse up + (.releasePointerCapture target (.-pointerId event))))) + on-click (mf/use-callback (fn [event] @@ -352,6 +368,8 @@ :on-double-click on-double-click :on-mouse-down on-mouse-down :on-mouse-up on-mouse-up + :on-pointer-down on-pointer-down + :on-pointer-up on-pointer-up :on-drag-over on-drag-over :on-drop on-drop} [:g