diff --git a/frontend/src/app/main/ui/workspace/viewport.cljs b/frontend/src/app/main/ui/workspace/viewport.cljs index 8374386cf..35cb52be7 100644 --- a/frontend/src/app/main/ui/workspace/viewport.cljs +++ b/frontend/src/app/main/ui/workspace/viewport.cljs @@ -122,6 +122,7 @@ cursor (mf/use-state (utils/get-cursor :pointer-inner)) hover-ids (mf/use-state nil) hover (mf/use-state nil) + measure-hover (mf/use-state nil) hover-disabled? (mf/use-state false) hover-top-frame-id (mf/use-state nil) frame-hover (mf/use-state nil) @@ -264,7 +265,8 @@ (hooks/setup-viewport-size vport viewport-ref) (hooks/setup-cursor cursor alt? mod? space? panning drawing-tool drawing-path? node-editing? z? workspace-read-only?) (hooks/setup-keyboard alt? mod? space? z? shift?) - (hooks/setup-hover-shapes page-id move-stream base-objects transform selected mod? hover hover-ids hover-top-frame-id @hover-disabled? focus zoom show-measures?) + (hooks/setup-hover-shapes page-id move-stream base-objects transform selected mod? hover measure-hover + hover-ids hover-top-frame-id @hover-disabled? focus zoom show-measures?) (hooks/setup-viewport-modifiers modifiers base-objects) (hooks/setup-shortcuts node-editing? drawing-path? text-editing? grid-editing?) (hooks/setup-active-frames base-objects hover-ids selected active-frames zoom transform vbox) @@ -433,7 +435,7 @@ {:bounds vbox :selected-shapes selected-shapes :frame selected-frame - :hover-shape @hover + :hover-shape @measure-hover :zoom zoom}]) (when show-padding? diff --git a/frontend/src/app/main/ui/workspace/viewport/hooks.cljs b/frontend/src/app/main/ui/workspace/viewport/hooks.cljs index c195917cf..f995848ec 100644 --- a/frontend/src/app/main/ui/workspace/viewport/hooks.cljs +++ b/frontend/src/app/main/ui/workspace/viewport/hooks.cljs @@ -167,7 +167,7 @@ (not)))) (defn setup-hover-shapes - [page-id move-stream objects transform selected mod? hover hover-ids hover-top-frame-id hover-disabled? focus zoom show-measures?] + [page-id move-stream objects transform selected mod? hover measure-hover hover-ids hover-top-frame-id hover-disabled? focus zoom show-measures?] (let [;; We use ref so we don't recreate the stream on a change zoom-ref (mf/use-ref zoom) mod-ref (mf/use-ref @mod?) @@ -285,9 +285,6 @@ mod? (filter grouped?) - show-measures? - (filter #(group-empty-space? % objects ids)) - (not mod?) (filter #(or (root-frame-with-data? %) (group-empty-space? % objects ids)))) @@ -309,9 +306,21 @@ (remove #(and mod? (no-fill-nested-frames? %))) (filter #(or (empty? focus) (cpf/is-in-focus? objects focus %))) (first) - (get objects))] + (get objects)) + + ;; We keep track of a diferent shape for measures + measure-hover-shape + (when show-measures? + (->> ids + (remove #(group-empty-space? % objects ids)) + (remove (partial cfh/hidden-parent? objects)) + (remove #(and mod? (no-fill-nested-frames? %))) + (filter #(or (empty? focus) (cpf/is-in-focus? objects focus %))) + (first) + (get objects)))] (reset! hover hover-shape) + (reset! measure-hover measure-hover-shape) (reset! hover-ids ids)))))) (defn setup-viewport-modifiers @@ -420,4 +429,3 @@ text-editing? (do (st/emit! (dsc/push-shortcuts ::text tsc/shortcuts)) #(st/emit! (dsc/pop-shortcuts ::text))))))) -