diff --git a/CHANGES.md b/CHANGES.md index 0e3d44df0..0a7037084 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -5,6 +5,7 @@ ### :bug: Bugs fixed - Fix fill information not complete when paste plain text [Taiga #3680](https://tree.taiga.io/project/penpot/issue/3680) +- Fix problem when resizing groups [Taiga #3702](https://tree.taiga.io/project/penpot/issue/3702) ## 1.14.1-beta diff --git a/common/src/app/common/geom/shapes/transforms.cljc b/common/src/app/common/geom/shapes/transforms.cljc index 6fd41c01a..e7a2ae2cf 100644 --- a/common/src/app/common/geom/shapes/transforms.cljc +++ b/common/src/app/common/geom/shapes/transforms.cljc @@ -524,15 +524,17 @@ (gmt/translate (gpt/negate center))))))) (defn- set-flip [shape modifiers] - (let [rx (or (get-in modifiers [:resize-vector :x]) - (get-in modifiers [:resize-vector-2 :x])) - ry (or (get-in modifiers [:resize-vector :y]) - (get-in modifiers [:resize-vector-2 :y]))] + (let [rv1x (or (get-in modifiers [:resize-vector :x]) 1) + rv1y (or (get-in modifiers [:resize-vector :y]) 1) + rv2x (or (get-in modifiers [:resize-vector-2 :x]) 1) + rv2y (or (get-in modifiers [:resize-vector-2 :y]) 1)] (cond-> shape - (and rx (< rx 0)) (-> (update :flip-x not) - (update :rotation -)) - (and ry (< ry 0)) (-> (update :flip-y not) - (update :rotation -))))) + (or (neg? rv1x) (neg? rv2x)) + (-> (update :flip-x not) + (update :rotation -)) + (or (neg? rv1y) (neg? rv2y)) + (-> (update :flip-y not) + (update :rotation -))))) (defn- apply-displacement [shape] (let [modifiers (:modifiers shape)] diff --git a/frontend/src/app/main/data/workspace/transforms.cljs b/frontend/src/app/main/data/workspace/transforms.cljs index 0ae4229f9..9ab913ff4 100644 --- a/frontend/src/app/main/data/workspace/transforms.cljs +++ b/frontend/src/app/main/data/workspace/transforms.cljs @@ -276,8 +276,7 @@ "Adjust modifiers so they adjust to the pixel grid" [modifiers shape] - (if (or (some? (:resize-transform modifiers)) - (some? (:resize-transform-2 modifiers))) + (if (some? (:resize-transform modifiers)) ;; If we're working with a rotation we don't handle pixel precision because ;; the transformation won't have the precision anyway modifiers @@ -290,7 +289,8 @@ (gsh/points->rect)) flip-x? (neg? (get-in modifiers [:resize-vector :x])) - flip-y? (neg? (get-in modifiers [:resize-vector :y])) + flip-y? (or (neg? (get-in modifiers [:resize-vector :y])) + (neg? (get-in modifiers [:resize-vector-2 :y]))) path? (= :path (:type shape)) vertical-line? (and path? (<= (:width raw-bounds) 0.01))