0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-02-12 18:18:24 -05:00

🐛 Fix align options on rotated frames

This commit is contained in:
alonso.torres 2024-02-27 17:31:16 +01:00 committed by Andrey Antukh
parent 905e1eea7b
commit f57c5b4da2
2 changed files with 20 additions and 2 deletions

View file

@ -8,7 +8,8 @@
(:require
[app.common.geom.point :as gpt]
[app.common.geom.rect :as grc]
[app.common.geom.shapes :as gsh]))
[app.common.geom.shapes :as gsh]
[app.common.geom.shapes.points :as gpo]))
;; --- Alignment
@ -30,6 +31,23 @@
(- (:y align-pos) (:y wrapper-rect)))]
(gsh/move shape delta)))
(defn align-to-parent
"Does the same calc as align-to-rect but relative to a parent shape."
[shape parent axis]
(let [parent-bounds (:points parent)
wrapper-rect
(-> (gsh/transform-points (:points shape) (gsh/shape->center parent) (:transform-inverse parent))
(grc/points->rect))
align-pos (calc-align-pos wrapper-rect (:selrect parent) axis)
xv #(gpo/start-hv parent-bounds %)
yv #(gpo/start-vv parent-bounds %)
delta (-> (xv (- (:x align-pos) (:x wrapper-rect)))
(gpt/add (yv (- (:y align-pos) (:y wrapper-rect)))))]
(gsh/move shape delta)))
(defn calc-align-pos
[wrapper-rect rect axis]
(case axis

View file

@ -1080,7 +1080,7 @@
(let [object (get objects object-id)
parent-id (:parent-id (get objects object-id))
parent (get objects parent-id)]
[(gal/align-to-rect object parent axis)]))
[(gal/align-to-parent object parent axis)]))
(defn align-objects-list
[objects selected axis]