mirror of
https://github.com/penpot/penpot.git
synced 2025-02-23 15:26:29 -05:00
🐛 Fix scaling frame proportionally
This commit is contained in:
parent
4eeef41ed4
commit
44c35e6aee
2 changed files with 19 additions and 15 deletions
|
@ -635,28 +635,32 @@
|
|||
matrix)))]
|
||||
(recur matrix (next modifiers)))))))
|
||||
|
||||
(defn transform-text-node [value attrs]
|
||||
(let [font-size (-> (get attrs :font-size 14)
|
||||
(d/parse-double)
|
||||
(* value)
|
||||
(str))]
|
||||
(d/txt-merge attrs {:font-size font-size})))
|
||||
|
||||
(defn update-text-content
|
||||
[shape scale-text-content value]
|
||||
(update shape :content scale-text-content value))
|
||||
|
||||
(defn apply-structure-modifiers
|
||||
"Apply structure changes to a shape"
|
||||
[shape modifiers]
|
||||
(letfn [(scale-text-content
|
||||
[content value]
|
||||
|
||||
(->> content
|
||||
(txt/transform-nodes
|
||||
txt/is-text-node?
|
||||
(fn [attrs]
|
||||
(let [font-size (-> (get attrs :font-size 14)
|
||||
(d/parse-double)
|
||||
(* value)
|
||||
(str)) ]
|
||||
(d/txt-merge attrs {:font-size font-size}))))))
|
||||
(partial transform-text-node value))))
|
||||
|
||||
(apply-scale-content
|
||||
[shape value]
|
||||
|
||||
(cond-> shape
|
||||
(cph/text-shape? shape)
|
||||
(update :content scale-text-content value)
|
||||
(update-text-content scale-text-content value)
|
||||
|
||||
(cph/rect-shape? shape)
|
||||
(gsc/update-corners-scale value)
|
||||
|
@ -698,7 +702,6 @@
|
|||
(let [value (dm/get-prop operation :value)]
|
||||
(update shape :shapes remove-children value))
|
||||
|
||||
|
||||
:scale-content
|
||||
(let [value (dm/get-prop operation :value)]
|
||||
(apply-scale-content shape value))
|
||||
|
|
|
@ -104,7 +104,8 @@
|
|||
(defn start-resize
|
||||
"Enter mouse resize mode, until mouse button is released."
|
||||
[handler ids shape]
|
||||
(letfn [(resize [shape initial layout [point lock? center? point-snap]]
|
||||
(letfn [(resize
|
||||
[shape initial layout [point lock? center? point-snap]]
|
||||
(let [{:keys [width height]} (:selrect shape)
|
||||
{:keys [rotation]} shape
|
||||
|
||||
|
@ -192,7 +193,7 @@
|
|||
(ctm/scale-content (:x scalev))))
|
||||
|
||||
modif-tree (dwm/create-modif-tree ids modifiers)]
|
||||
(rx/of (dwm/set-modifiers modif-tree))))
|
||||
(rx/of (dwm/set-modifiers modif-tree (and (= :frame (:type shape)) scale-text)))))
|
||||
|
||||
;; Unifies the instantaneous proportion lock modifier
|
||||
;; activated by Shift key and the shapes own proportion
|
||||
|
@ -209,7 +210,7 @@
|
|||
ptk/WatchEvent
|
||||
(watch [_ state stream]
|
||||
(let [initial-position @ms/mouse-position
|
||||
stoper (rx/filter ms/mouse-up? stream)
|
||||
stopper (rx/filter ms/mouse-up? stream)
|
||||
layout (:workspace-layout state)
|
||||
page-id (:current-page-id state)
|
||||
focus (:workspace-focus-selected state)
|
||||
|
@ -226,7 +227,7 @@
|
|||
(->> (snap/closest-snap-point page-id resizing-shapes objects layout zoom focus point)
|
||||
(rx/map #(conj current %)))))
|
||||
(rx/mapcat (partial resize shape initial-position layout))
|
||||
(rx/take-until stoper))
|
||||
(rx/take-until stopper))
|
||||
(rx/of (dwm/apply-modifiers)
|
||||
(finish-transform))))))))
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue