mirror of
https://github.com/penpot/penpot.git
synced 2025-05-24 17:26:11 +02:00
🐛 Fix problem with zoom and selection
This commit is contained in:
parent
6b571fd2bb
commit
c3be1c870d
2 changed files with 20 additions and 9 deletions
|
@ -19,6 +19,7 @@
|
||||||
|
|
||||||
- Prevent adding numeric suffix to layer names when not needed [Taiga #1929](https://tree.taiga.io/project/penpot/us/1929).
|
- Prevent adding numeric suffix to layer names when not needed [Taiga #1929](https://tree.taiga.io/project/penpot/us/1929).
|
||||||
- Prevent deleting or moving the drafts project [Taiga #1935](https://tree.taiga.io/project/penpot/issue/1935).
|
- Prevent deleting or moving the drafts project [Taiga #1935](https://tree.taiga.io/project/penpot/issue/1935).
|
||||||
|
- Fix problem with zoom and selection [Taiga #1919](https://tree.taiga.io/project/penpot/issue/1919)
|
||||||
|
|
||||||
### :arrow_up: Deps updates
|
### :arrow_up: Deps updates
|
||||||
### :boom: Breaking changes
|
### :boom: Breaking changes
|
||||||
|
|
|
@ -91,11 +91,16 @@
|
||||||
|
|
||||||
;; TODO: revisit the arguments, looks like `selected` is not necessary here
|
;; TODO: revisit the arguments, looks like `selected` is not necessary here
|
||||||
(defn setup-hover-shapes [page-id move-stream _selected objects transform selected ctrl? hover hover-ids zoom]
|
(defn setup-hover-shapes [page-id move-stream _selected objects transform selected ctrl? hover hover-ids zoom]
|
||||||
(let [query-point
|
(let [;; We use ref so we don't recreate the stream on a change
|
||||||
|
zoom-ref (mf/use-ref zoom)
|
||||||
|
transform-ref (mf/use-ref nil)
|
||||||
|
|
||||||
|
query-point
|
||||||
(mf/use-callback
|
(mf/use-callback
|
||||||
(mf/deps page-id)
|
(mf/deps page-id)
|
||||||
(fn [point]
|
(fn [point]
|
||||||
(let [rect (gsh/center->rect point (/ 5 zoom) (/ 5 zoom))]
|
(let [zoom (mf/ref-val zoom-ref)
|
||||||
|
rect (gsh/center->rect point (/ 5 zoom) (/ 5 zoom))]
|
||||||
(uw/ask-buffered!
|
(uw/ask-buffered!
|
||||||
{:cmd :selection/query
|
{:cmd :selection/query
|
||||||
:page-id page-id
|
:page-id page-id
|
||||||
|
@ -103,20 +108,25 @@
|
||||||
:include-frames? true
|
:include-frames? true
|
||||||
:reverse? true})))) ;; we want the topmost shape to be selected first
|
:reverse? true})))) ;; we want the topmost shape to be selected first
|
||||||
|
|
||||||
;; We use ref so we don't recreate the stream on a change
|
|
||||||
transform-ref (mf/use-ref nil)
|
|
||||||
|
|
||||||
over-shapes-stream
|
over-shapes-stream
|
||||||
(->> move-stream
|
(mf/use-memo
|
||||||
;; When transforming shapes we stop querying the worker
|
(fn []
|
||||||
(rx/filter #(not (some? (mf/ref-val transform-ref))))
|
(->> move-stream
|
||||||
(rx/switch-map query-point))
|
;; When transforming shapes we stop querying the worker
|
||||||
|
(rx/filter #(not (some? (mf/ref-val transform-ref))))
|
||||||
|
(rx/switch-map query-point))))
|
||||||
]
|
]
|
||||||
|
|
||||||
|
;; Refresh the refs on a value change
|
||||||
|
|
||||||
(mf/use-effect
|
(mf/use-effect
|
||||||
(mf/deps transform)
|
(mf/deps transform)
|
||||||
#(mf/set-ref-val! transform-ref transform))
|
#(mf/set-ref-val! transform-ref transform))
|
||||||
|
|
||||||
|
(mf/use-effect
|
||||||
|
(mf/deps zoom)
|
||||||
|
#(mf/set-ref-val! zoom-ref zoom))
|
||||||
|
|
||||||
(hooks/use-stream
|
(hooks/use-stream
|
||||||
over-shapes-stream
|
over-shapes-stream
|
||||||
(mf/deps page-id objects selected @ctrl?)
|
(mf/deps page-id objects selected @ctrl?)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue