mirror of
https://github.com/penpot/penpot.git
synced 2025-02-20 13:55:34 -05:00
✨ Hide guide lines when moving overlay marker
This commit is contained in:
parent
fea2d91a63
commit
c241100886
3 changed files with 32 additions and 20 deletions
|
@ -74,6 +74,7 @@
|
||||||
cursor (mf/use-state (utils/get-cursor :pointer-inner))
|
cursor (mf/use-state (utils/get-cursor :pointer-inner))
|
||||||
hover-ids (mf/use-state nil)
|
hover-ids (mf/use-state nil)
|
||||||
hover (mf/use-state nil)
|
hover (mf/use-state nil)
|
||||||
|
hover-disabled? (mf/use-state false)
|
||||||
frame-hover (mf/use-state nil)
|
frame-hover (mf/use-state nil)
|
||||||
active-frames (mf/use-state {})
|
active-frames (mf/use-state {})
|
||||||
|
|
||||||
|
@ -153,7 +154,7 @@
|
||||||
(hooks/setup-cursor cursor alt? panning drawing-tool drawing-path? node-editing?)
|
(hooks/setup-cursor cursor alt? panning drawing-tool drawing-path? node-editing?)
|
||||||
(hooks/setup-resize layout viewport-ref)
|
(hooks/setup-resize layout viewport-ref)
|
||||||
(hooks/setup-keyboard alt? ctrl? space?)
|
(hooks/setup-keyboard alt? ctrl? space?)
|
||||||
(hooks/setup-hover-shapes page-id move-stream objects transform selected ctrl? hover hover-ids zoom)
|
(hooks/setup-hover-shapes page-id move-stream objects transform selected ctrl? hover hover-ids @hover-disabled? zoom)
|
||||||
(hooks/setup-viewport-modifiers modifiers selected objects render-ref)
|
(hooks/setup-viewport-modifiers modifiers selected objects render-ref)
|
||||||
(hooks/setup-shortcuts node-editing? drawing-path?)
|
(hooks/setup-shortcuts node-editing? drawing-path?)
|
||||||
(hooks/setup-active-frames objects vbox hover active-frames)
|
(hooks/setup-active-frames objects vbox hover active-frames)
|
||||||
|
@ -320,7 +321,8 @@
|
||||||
|
|
||||||
(when show-prototypes?
|
(when show-prototypes?
|
||||||
[:& interactions/interactions
|
[:& interactions/interactions
|
||||||
{:selected selected}])
|
{:selected selected
|
||||||
|
:hover-disabled? hover-disabled?}])
|
||||||
|
|
||||||
(when show-selrect?
|
(when show-selrect?
|
||||||
[:& widgets/selection-rect {:data selrect
|
[:& widgets/selection-rect {:data selrect
|
||||||
|
|
|
@ -89,11 +89,12 @@
|
||||||
(hooks/use-stream ms/keyboard-ctrl #(reset! ctrl? %))
|
(hooks/use-stream ms/keyboard-ctrl #(reset! ctrl? %))
|
||||||
(hooks/use-stream ms/keyboard-space #(reset! space? %)))
|
(hooks/use-stream ms/keyboard-space #(reset! space? %)))
|
||||||
|
|
||||||
(defn setup-hover-shapes [page-id move-stream objects transform selected ctrl? hover hover-ids zoom]
|
(defn setup-hover-shapes [page-id move-stream objects transform selected ctrl? hover hover-ids hover-disabled? zoom]
|
||||||
(let [;; We use ref so we don't recreate the stream on a change
|
(let [;; We use ref so we don't recreate the stream on a change
|
||||||
zoom-ref (mf/use-ref zoom)
|
zoom-ref (mf/use-ref zoom)
|
||||||
transform-ref (mf/use-ref nil)
|
transform-ref (mf/use-ref nil)
|
||||||
selected-ref (mf/use-ref selected)
|
selected-ref (mf/use-ref selected)
|
||||||
|
hover-disabled-ref (mf/use-ref hover-disabled?)
|
||||||
|
|
||||||
query-point
|
query-point
|
||||||
(mf/use-callback
|
(mf/use-callback
|
||||||
|
@ -101,21 +102,22 @@
|
||||||
(fn [point]
|
(fn [point]
|
||||||
(let [zoom (mf/ref-val zoom-ref)
|
(let [zoom (mf/ref-val zoom-ref)
|
||||||
rect (gsh/center->rect point (/ 5 zoom) (/ 5 zoom))]
|
rect (gsh/center->rect point (/ 5 zoom) (/ 5 zoom))]
|
||||||
(uw/ask-buffered!
|
(if (mf/ref-val hover-disabled-ref)
|
||||||
{:cmd :selection/query
|
(rx/of nil)
|
||||||
:page-id page-id
|
(uw/ask-buffered!
|
||||||
:rect rect
|
{:cmd :selection/query
|
||||||
:include-frames? true
|
:page-id page-id
|
||||||
:reverse? true})))) ;; we want the topmost shape to be selected first
|
:rect rect
|
||||||
|
:include-frames? true
|
||||||
|
:reverse? true}))))) ;; we want the topmost shape to be selected first
|
||||||
|
|
||||||
over-shapes-stream
|
over-shapes-stream
|
||||||
(mf/use-memo
|
(mf/use-memo
|
||||||
(fn []
|
(fn []
|
||||||
(->> move-stream
|
(->> move-stream
|
||||||
;; When transforming shapes we stop querying the worker
|
;; When transforming shapes we stop querying the worker
|
||||||
(rx/filter #(not (some? (mf/ref-val transform-ref))))
|
(rx/filter #(not (some? (mf/ref-val transform-ref))))
|
||||||
(rx/switch-map query-point))))
|
(rx/switch-map query-point))))]
|
||||||
]
|
|
||||||
|
|
||||||
;; Refresh the refs on a value change
|
;; Refresh the refs on a value change
|
||||||
|
|
||||||
|
@ -131,6 +133,10 @@
|
||||||
(mf/deps selected)
|
(mf/deps selected)
|
||||||
#(mf/set-ref-val! selected-ref selected))
|
#(mf/set-ref-val! selected-ref selected))
|
||||||
|
|
||||||
|
(mf/use-effect
|
||||||
|
(mf/deps hover-disabled?)
|
||||||
|
#(mf/set-ref-val! hover-disabled-ref hover-disabled?))
|
||||||
|
|
||||||
(hooks/use-stream
|
(hooks/use-stream
|
||||||
over-shapes-stream
|
over-shapes-stream
|
||||||
(mf/deps page-id objects @ctrl?)
|
(mf/deps page-id objects @ctrl?)
|
||||||
|
|
|
@ -192,7 +192,7 @@
|
||||||
|
|
||||||
|
|
||||||
(mf/defc overlay-marker
|
(mf/defc overlay-marker
|
||||||
[{:keys [index orig-shape dest-shape position objects] :as props}]
|
[{:keys [index orig-shape dest-shape position objects hover-disabled?] :as props}]
|
||||||
(let [start-move-position
|
(let [start-move-position
|
||||||
(fn [_]
|
(fn [_]
|
||||||
(st/emit! (dw/start-move-overlay-pos index)))]
|
(st/emit! (dw/start-move-overlay-pos index)))]
|
||||||
|
@ -203,7 +203,9 @@
|
||||||
marker-y (+ (:y orig-frame) (:y position))
|
marker-y (+ (:y orig-frame) (:y position))
|
||||||
width (:width dest-shape)
|
width (:width dest-shape)
|
||||||
height (:height dest-shape)]
|
height (:height dest-shape)]
|
||||||
[:g {:on-mouse-down start-move-position}
|
[:g {:on-mouse-down start-move-position
|
||||||
|
:on-mouse-enter #(reset! hover-disabled? true)
|
||||||
|
:on-mouse-leave #(reset! hover-disabled? false)}
|
||||||
[:path {:stroke "#31EFB8"
|
[:path {:stroke "#31EFB8"
|
||||||
:fill "#000000"
|
:fill "#000000"
|
||||||
:fill-opacity 0.3
|
:fill-opacity 0.3
|
||||||
|
@ -223,7 +225,7 @@
|
||||||
]))))
|
]))))
|
||||||
|
|
||||||
(mf/defc interactions
|
(mf/defc interactions
|
||||||
[{:keys [selected] :as props}]
|
[{:keys [selected hover-disabled?] :as props}]
|
||||||
(let [local (mf/deref refs/workspace-local)
|
(let [local (mf/deref refs/workspace-local)
|
||||||
zoom (mf/deref refs/selected-zoom)
|
zoom (mf/deref refs/selected-zoom)
|
||||||
current-transform (:transform local)
|
current-transform (:transform local)
|
||||||
|
@ -294,13 +296,15 @@
|
||||||
:orig-shape shape
|
:orig-shape shape
|
||||||
:dest-shape dest-shape
|
:dest-shape dest-shape
|
||||||
:position move-overlay-to
|
:position move-overlay-to
|
||||||
:objects objects}]
|
:objects objects
|
||||||
|
:hover-disabled? hover-disabled?}]
|
||||||
[:& overlay-marker {:key (str "pos" (:id shape) "-" index)
|
[:& overlay-marker {:key (str "pos" (:id shape) "-" index)
|
||||||
:index index
|
:index index
|
||||||
:orig-shape shape
|
:orig-shape shape
|
||||||
:dest-shape dest-shape
|
:dest-shape dest-shape
|
||||||
:position (:overlay-position interaction)
|
:position (:overlay-position interaction)
|
||||||
:objects objects}]))])))
|
:objects objects
|
||||||
|
:hover-disabled? hover-disabled?}]))])))
|
||||||
(when (not (#{:move :rotate} current-transform))
|
(when (not (#{:move :rotate} current-transform))
|
||||||
[:& interaction-handle {:key (:id shape)
|
[:& interaction-handle {:key (:id shape)
|
||||||
:index nil
|
:index nil
|
||||||
|
|
Loading…
Add table
Reference in a new issue