diff --git a/CHANGES.md b/CHANGES.md index 966de9ca51..be607ef8ac 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -16,6 +16,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 a727947c4c..5adb7e988e 100644 --- a/common/src/app/common/geom/shapes/transforms.cljc +++ b/common/src/app/common/geom/shapes/transforms.cljc @@ -539,15 +539,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 5b043d8b6e..ffd31b1fde 100644 --- a/frontend/src/app/main/data/workspace/transforms.cljs +++ b/frontend/src/app/main/data/workspace/transforms.cljs @@ -284,8 +284,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 @@ -298,7 +297,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)) diff --git a/frontend/src/app/main/ui/routes.cljs b/frontend/src/app/main/ui/routes.cljs index a456f7bd46..3a2f87b3ff 100644 --- a/frontend/src/app/main/ui/routes.cljs +++ b/frontend/src/app/main/ui/routes.cljs @@ -92,17 +92,23 @@ (defn on-navigate [router path] - (let [match (match-path router path) - profile (:profile @storage) - nopath? (or (= path "") (= path "/")) - authed? (and (not (nil? profile)) - (not= (:id profile) uuid/zero))] + (let [match (match-path router path) + profile (:profile @storage) + nopath? (or (= path "") (= path "/")) + path-name (-> match :data :name) + authpath? (some #(= path-name %) '(:auth-login + :auth-register + :auth-register-validate + :auth-register-success + :auth-recovery-request + :auth-recovery)) + authed? (and (not (nil? profile)) + (not= (:id profile) uuid/zero))] (cond - (and nopath? authed? (nil? match)) - (if (not= uuid/zero profile) - (st/emit! (rt/nav :dashboard-projects {:team-id (du/get-current-team-id profile)})) - (st/emit! (rt/nav :auth-login))) + (or (and nopath? authed? (nil? match)) + (and authpath? authed?)) + (st/emit! (rt/nav :dashboard-projects {:team-id (du/get-current-team-id profile)})) (and (not authed?) (nil? match)) (st/emit! (rt/nav :auth-login))