mirror of
https://github.com/penpot/penpot.git
synced 2025-08-07 14:38:33 +02:00
🐛 Fix constraints calc when parent has displacement
This commit is contained in:
parent
2d38d7af82
commit
7cc9fa6d30
1 changed files with 29 additions and 28 deletions
|
@ -375,19 +375,12 @@
|
||||||
(let [parent-rect (:selrect parent)
|
(let [parent-rect (:selrect parent)
|
||||||
child-rect (:selrect child)
|
child-rect (:selrect child)
|
||||||
|
|
||||||
; If the modifiers include a resize vector, apply it to the parent,
|
;; Apply the modifiers to the parent, to check the difference with
|
||||||
; to check the difference and calculate child transformations.
|
;; the original rect, and calculate child transformations.
|
||||||
origin (-> (:resize-origin parent-modifiers)
|
transformed-parent-rect (-> parent
|
||||||
((d/nilf transform-point-center)
|
(assoc :modifiers parent-modifiers)
|
||||||
(gco/center-shape parent)
|
(transform-shape)
|
||||||
(:resize-transform-inverse parent-modifiers (gmt/matrix))))
|
(:selrect))
|
||||||
|
|
||||||
transformed-parent-rect (-> parent-rect
|
|
||||||
(gpr/rect->points)
|
|
||||||
(transform-points
|
|
||||||
origin
|
|
||||||
(gmt/scale-matrix (get parent-modifiers :resize-vector (gpt/point 1 1))))
|
|
||||||
(gpr/points->selrect))
|
|
||||||
|
|
||||||
;; Calculate the modifiers in the horizontal and vertical directions
|
;; Calculate the modifiers in the horizontal and vertical directions
|
||||||
;; depending on the child constraints.
|
;; depending on the child constraints.
|
||||||
|
@ -431,11 +424,18 @@
|
||||||
{}))
|
{}))
|
||||||
|
|
||||||
:scale
|
:scale
|
||||||
(if (and (:resize-vector parent-modifiers)
|
(cond-> {}
|
||||||
|
(and (:resize-vector parent-modifiers)
|
||||||
(not (mth/close? (:x (:resize-vector parent-modifiers)) 1)))
|
(not (mth/close? (:x (:resize-vector parent-modifiers)) 1)))
|
||||||
{:resize-origin (:resize-origin parent-modifiers)
|
(assoc :resize-origin (:resize-origin parent-modifiers)
|
||||||
:resize-vector (gpt/point (:x (:resize-vector parent-modifiers)) 1)}
|
:resize-vector (gpt/point (:x (:resize-vector parent-modifiers)) 1))
|
||||||
{})
|
|
||||||
|
(:displacement parent-modifiers)
|
||||||
|
(assoc :displacement
|
||||||
|
(gpt/point (-> (gpt/point 0 0)
|
||||||
|
(gpt/transform (:displacement parent-modifiers))
|
||||||
|
(:x))
|
||||||
|
0)))
|
||||||
|
|
||||||
{})
|
{})
|
||||||
|
|
||||||
|
@ -476,11 +476,17 @@
|
||||||
{}))
|
{}))
|
||||||
|
|
||||||
:scale
|
:scale
|
||||||
(if (and (:resize-vector parent-modifiers)
|
(cond-> {}
|
||||||
|
(and (:resize-vector parent-modifiers)
|
||||||
(not (mth/close? (:y (:resize-vector parent-modifiers)) 1)))
|
(not (mth/close? (:y (:resize-vector parent-modifiers)) 1)))
|
||||||
{:resize-origin (:resize-origin parent-modifiers)
|
(assoc :resize-origin (:resize-origin parent-modifiers)
|
||||||
:resize-vector (gpt/point 1 (:y (:resize-vector parent-modifiers)))}
|
:resize-vector (gpt/point 1 (:y (:resize-vector parent-modifiers))))
|
||||||
{})
|
|
||||||
|
(:displacement parent-modifiers)
|
||||||
|
(assoc :displacement
|
||||||
|
(gpt/point 0 (-> (gpt/point 0 0)
|
||||||
|
(gpt/transform (:displacement parent-modifiers))
|
||||||
|
(:y)))))
|
||||||
|
|
||||||
{})]
|
{})]
|
||||||
|
|
||||||
|
@ -498,11 +504,6 @@
|
||||||
:resize-vector (gpt/point (get (:resize-vector modifiers-h) :x 1)
|
:resize-vector (gpt/point (get (:resize-vector modifiers-h) :x 1)
|
||||||
(get (:resize-vector modifiers-v) :y 1)))
|
(get (:resize-vector modifiers-v) :y 1)))
|
||||||
|
|
||||||
(:displacement parent-modifiers)
|
|
||||||
(update :displacement #(if (nil? %)
|
|
||||||
(:displacement parent-modifiers)
|
|
||||||
(gmt/add-translate % (:displacement parent-modifiers))))
|
|
||||||
|
|
||||||
(:resize-transform parent-modifiers)
|
(:resize-transform parent-modifiers)
|
||||||
(assoc :resize-transform (:resize-transform parent-modifiers)
|
(assoc :resize-transform (:resize-transform parent-modifiers)
|
||||||
:resize-transform-inverse (:resize-transform-inverse parent-modifiers)))))
|
:resize-transform-inverse (:resize-transform-inverse parent-modifiers)))))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue