diff --git a/frontend/src/app/main/data/workspace.cljs b/frontend/src/app/main/data/workspace.cljs index 724c987bd..26b60f9f7 100644 --- a/frontend/src/app/main/data/workspace.cljs +++ b/frontend/src/app/main/data/workspace.cljs @@ -1146,7 +1146,8 @@ ptk/WatchEvent (watch [_ state stream] - (rx/of (dws/select-shape (:id shape)))))) + (rx/of (dws/deselect-all) + (dws/select-shape (:id shape)))))) (def hide-context-menu (ptk/reify ::hide-context-menu diff --git a/frontend/src/app/main/ui/components/dropdown.cljs b/frontend/src/app/main/ui/components/dropdown.cljs index 9903c528e..db9013df3 100644 --- a/frontend/src/app/main/ui/components/dropdown.cljs +++ b/frontend/src/app/main/ui/components/dropdown.cljs @@ -31,11 +31,11 @@ on-mount (fn [] - (let [lkey1 (events/listen (dom/get-root) EventType.CLICK on-click) - lkey2 (events/listen (dom/get-root) EventType.KEYUP on-keyup)] - #(do - (events/unlistenByKey lkey1) - (events/unlistenByKey lkey2))))] + (let [keys [(events/listen js/document EventType.CLICK on-click) + (events/listen js/document EventType.CONTEXTMENU on-click) + (events/listen js/document EventType.KEYUP on-keyup)]] + #(doseq [key keys] + (events/unlistenByKey key))))] (mf/use-effect on-mount) children)) diff --git a/frontend/src/app/main/ui/modal.cljs b/frontend/src/app/main/ui/modal.cljs index 07d3849a6..544c0d55c 100644 --- a/frontend/src/app/main/ui/modal.cljs +++ b/frontend/src/app/main/ui/modal.cljs @@ -75,9 +75,10 @@ (mf/use-layout-effect (mf/deps allow-click-outside) (fn [] - (let [keys [(events/listen js/window EventType.POPSTATE on-pop-state) - (events/listen js/document EventType.KEYDOWN handle-keydown) - (events/listen (dom/get-root) EventType.CLICK handle-click-outside)]] + (let [keys [(events/listen js/window EventType.POPSTATE on-pop-state) + (events/listen js/document EventType.KEYDOWN handle-keydown) + (events/listen js/document EventType.CLICK handle-click-outside) + (events/listen js/document EventType.CONTEXTMENU handle-click-outside)]] #(doseq [key keys] (events/unlistenByKey key))))) diff --git a/frontend/src/app/main/ui/workspace/shapes/path/editor.cljs b/frontend/src/app/main/ui/workspace/shapes/path/editor.cljs index 1cefba76a..e8367bcd0 100644 --- a/frontend/src/app/main/ui/workspace/shapes/path/editor.cljs +++ b/frontend/src/app/main/ui/workspace/shapes/path/editor.cljs @@ -186,7 +186,7 @@ (mf/use-layout-effect (fn [] - (let [keys [(events/listen (dom/get-root) EventType.CLICK handle-click-outside)]] + (let [keys [(events/listen js/document EventType.CLICK handle-click-outside)]] #(doseq [key keys] (events/unlistenByKey key))))) diff --git a/frontend/src/app/main/ui/workspace/shapes/text/editor.cljs b/frontend/src/app/main/ui/workspace/shapes/text/editor.cljs index 499b72b88..79b27658f 100644 --- a/frontend/src/app/main/ui/workspace/shapes/text/editor.cljs +++ b/frontend/src/app/main/ui/workspace/shapes/text/editor.cljs @@ -203,8 +203,8 @@ on-mount (fn [] - (let [lkey1 (events/listen (dom/get-root) EventType.CLICK on-click-outside) - lkey2 (events/listen (dom/get-root) EventType.KEYUP on-key-up)] + (let [lkey1 (events/listen js/document EventType.CLICK on-click-outside) + lkey2 (events/listen js/document EventType.KEYUP on-key-up)] (st/emit! (dwt/assign-editor id editor) (dwc/start-undo-transaction)) diff --git a/frontend/src/app/main/ui/workspace/viewport.cljs b/frontend/src/app/main/ui/workspace/viewport.cljs index d90da22a8..fdafadd01 100644 --- a/frontend/src/app/main/ui/workspace/viewport.cljs +++ b/frontend/src/app/main/ui/workspace/viewport.cljs @@ -248,7 +248,6 @@ (mf/use-callback (fn [event] (dom/prevent-default event) - (dom/stop-propagation event) (let [position (dom/get-client-position event)] (st/emit! (dw/show-context-menu {:position position}))))) @@ -287,7 +286,6 @@ on-click (mf/use-callback (fn [event] - (dom/stop-propagation event) (let [ctrl? (kbd/ctrl? event) shift? (kbd/shift? event) alt? (kbd/alt? event)]