From 71501d966cf7d517273239da7aa088a798d295e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Moya?= Date: Tue, 7 Jun 2022 13:05:30 +0200 Subject: [PATCH 1/4] :bug: Fix resize parents when there are nested groups --- common/src/app/common/pages/changes_builder.cljc | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/common/src/app/common/pages/changes_builder.cljc b/common/src/app/common/pages/changes_builder.cljc index ea2e70cc5..25808b136 100644 --- a/common/src/app/common/pages/changes_builder.cljc +++ b/common/src/app/common/pages/changes_builder.cljc @@ -372,8 +372,8 @@ (assert-page-id changes) (assert-objects changes) (let [page-id (::page-id (meta changes)) - objects (lookup-objects changes) + objects (lookup-objects changes) xform (comp (mapcat #(cons % (cph/get-parent-ids objects %))) (map (d/getf objects)) @@ -409,7 +409,8 @@ resize-parent (fn [changes parent] - (let [children (->> parent :shapes (map (d/getf objects))) + (let [objects (lookup-objects changes) + children (->> parent :shapes (map (d/getf objects))) resized-parent (cond (empty? children) ;; a parent with no children will be deleted, nil ;; so it does not need resize @@ -434,12 +435,12 @@ (if (seq rops) (-> changes (update :redo-changes conj (assoc change :operations rops)) - (update :undo-changes d/preconj (assoc change :operations uops))) + (update :undo-changes d/preconj (assoc change :operations uops)) + (apply-changes-local)) changes)) changes)))] - (-> (reduce resize-parent changes all-parents) - (apply-changes-local)))) + (reduce resize-parent changes all-parents))) ;; Library changes From c3486c566a3a2404ae2dd6ba581bab871b931eba Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Wed, 8 Jun 2022 07:42:03 +0200 Subject: [PATCH 2/4] :bug: Fix exporter to frontend communication --- docker/images/config.env | 3 +++ exporter/src/app/renderer/bitmap.cljs | 2 +- exporter/src/app/renderer/pdf.cljs | 2 +- exporter/src/app/renderer/svg.cljs | 2 +- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/docker/images/config.env b/docker/images/config.env index 0174efe90..ad1ee70ad 100644 --- a/docker/images/config.env +++ b/docker/images/config.env @@ -79,3 +79,6 @@ PENPOT_FLAGS="enable-registration" # PENPOT_LDAP_ATTRS_FULLNAME=cn # PENPOT_LDAP_ATTRS_PHOTO=jpegPhoto # PENPOT_LOGIN_WITH_LDAP=true + +# Exporter +PENPOT_DOMAIN_WHITE_LIST=localhost:9001 diff --git a/exporter/src/app/renderer/bitmap.cljs b/exporter/src/app/renderer/bitmap.cljs index 96dff8bea..8283f6d03 100644 --- a/exporter/src/app/renderer/bitmap.cljs +++ b/exporter/src/app/renderer/bitmap.cljs @@ -61,7 +61,7 @@ :page-id page-id :object-id (mapv :id objects) :route "objects"} - uri (-> (or uri (cf/get :public-uri)) + uri (-> (cf/get :public-uri) (assoc :path "/render.html") (assoc :query (u/map->query-string params)))] (bw/exec! (prepare-options uri) (partial render uri))))) diff --git a/exporter/src/app/renderer/pdf.cljs b/exporter/src/app/renderer/pdf.cljs index be57229f9..e4c26392f 100644 --- a/exporter/src/app/renderer/pdf.cljs +++ b/exporter/src/app/renderer/pdf.cljs @@ -63,6 +63,6 @@ (on-object (assoc object :path path)) (p/recur (rest objects))))))] - (let [base-uri (or uri (cf/get :public-uri))] + (let [base-uri (cf/get :public-uri)] (bw/exec! (prepare-options base-uri) (partial render base-uri))))) diff --git a/exporter/src/app/renderer/svg.cljs b/exporter/src/app/renderer/svg.cljs index 73d518779..f0dfe7991 100644 --- a/exporter/src/app/renderer/svg.cljs +++ b/exporter/src/app/renderer/svg.cljs @@ -363,7 +363,7 @@ :render-embed true :object-id (mapv :id objects) :route "objects"} - uri (-> (or uri (cf/get :public-uri)) + uri (-> (cf/get :public-uri) (assoc :path "/render.html") (assoc :query (u/map->query-string params)))] (bw/exec! (prepare-options uri) From ba85dcf1a3962ab3d1358f179a1e4c5eda587884 Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Wed, 8 Jun 2022 10:52:18 +0200 Subject: [PATCH 3/4] :bug: Fix orientation artboard preset does not work with differently sized artboards --- CHANGES.md | 6 ++++ common/src/app/common/geom/shapes.cljc | 1 + .../app/common/geom/shapes/transforms.cljc | 25 +++++++++++++++++ frontend/src/app/main/data/workspace.cljs | 1 + .../app/main/data/workspace/transforms.cljs | 28 ++++++++++++++++++- .../sidebar/options/menus/measures.cljs | 7 +---- 6 files changed, 61 insertions(+), 7 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index bfb0cff51..338296b4f 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -8,6 +8,12 @@ ### :arrow_up: Deps updates ### :heart: Community contributions by (Thank you!) + +## 1.13.5-beta + +### :bug: Bugs fixed +- Fix orientation artboard preset not working with differently sized artboards [Taiga #3548](https://tree.taiga.io/project/penpot/issue/3548) + ## 1.13.4-beta ### :bug: Bugs fixed diff --git a/common/src/app/common/geom/shapes.cljc b/common/src/app/common/geom/shapes.cljc index c9b919ba2..ed5c52aa9 100644 --- a/common/src/app/common/geom/shapes.cljc +++ b/common/src/app/common/geom/shapes.cljc @@ -166,6 +166,7 @@ (dm/export gtr/update-group-selrect) (dm/export gtr/update-mask-selrect) (dm/export gtr/resize-modifiers) +(dm/export gtr/change-orientation-modifiers) (dm/export gtr/rotation-modifiers) (dm/export gtr/merge-modifiers) (dm/export gtr/transform-shape) diff --git a/common/src/app/common/geom/shapes/transforms.cljc b/common/src/app/common/geom/shapes/transforms.cljc index cd0a707b6..6fd41c01a 100644 --- a/common/src/app/common/geom/shapes/transforms.cljc +++ b/common/src/app/common/geom/shapes/transforms.cljc @@ -426,6 +426,31 @@ :resize-transform shape-transform :resize-transform-inverse shape-transform-inv})) +(defn change-orientation-modifiers + [shape orientation] + (us/assert map? shape) + (us/verify #{:horiz :vert} orientation) + (let [width (:width shape) + height (:height shape) + new-width (if (= orientation :horiz) (max width height) (min width height)) + new-height (if (= orientation :horiz) (min width height) (max width height)) + + shape-transform (:transform shape) + shape-transform-inv (:transform-inverse shape) + shape-center (gco/center-shape shape) + {sr-width :width sr-height :height} (:selrect shape) + + origin (cond-> (gpt/point (:selrect shape)) + (some? shape-transform) + (transform-point-center shape-center shape-transform)) + + scalev (gpt/divide (gpt/point new-width new-height) + (gpt/point sr-width sr-height))] + {:resize-vector scalev + :resize-origin origin + :resize-transform shape-transform + :resize-transform-inverse shape-transform-inv})) + (defn rotation-modifiers [shape center angle] (let [displacement (let [shape-center (gco/center-shape shape)] diff --git a/frontend/src/app/main/data/workspace.cljs b/frontend/src/app/main/data/workspace.cljs index 951f5dae9..6ada6cc96 100644 --- a/frontend/src/app/main/data/workspace.cljs +++ b/frontend/src/app/main/data/workspace.cljs @@ -1698,6 +1698,7 @@ (dm/export dwt/start-resize) (dm/export dwt/update-dimensions) +(dm/export dwt/change-orientation) (dm/export dwt/start-rotate) (dm/export dwt/increase-rotation) (dm/export dwt/start-move-selected) diff --git a/frontend/src/app/main/data/workspace/transforms.cljs b/frontend/src/app/main/data/workspace/transforms.cljs index c73384c54..0ae4229f9 100644 --- a/frontend/src/app/main/data/workspace/transforms.cljs +++ b/frontend/src/app/main/data/workspace/transforms.cljs @@ -556,6 +556,32 @@ (watch [_ _ _] (rx/of (apply-modifiers ids))))) +(defn change-orientation + "Change orientation of shapes, from the sidebar options form. + Will ignore pixel snap used in the options side panel" + [ids orientation] + (us/verify (s/coll-of ::us/uuid) ids) + (us/verify #{:horiz :vert} orientation) + (ptk/reify ::change-orientation + ptk/UpdateEvent + (update [_ state] + (let [objects (wsh/lookup-page-objects state) + layout (get state :workspace-layout) + snap-pixel? (contains? layout :snap-pixel-grid) + + update-modifiers + (fn [state id] + (let [shape (get objects id) + modifiers (gsh/change-orientation-modifiers shape orientation)] + (-> state + (update :workspace-modifiers + #(set-objects-modifiers % objects shape modifiers false snap-pixel?)))))] + (reduce update-modifiers state ids))) + + ptk/WatchEvent + (watch [_ _ _] + (rx/of (apply-modifiers ids))))) + ;; -- Rotate -------------------------------------------------------- (defn start-rotate @@ -786,7 +812,7 @@ (rx/of (apply-modifiers selected) (finish-transform)))) - (rx/empty)))))) + (rx/empty)))))) (s/def ::x number?) (s/def ::y number?) diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/measures.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/menus/measures.cljs index 58d4bc2d4..0977b1a63 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/measures.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/measures.cljs @@ -110,12 +110,7 @@ on-orientation-clicked (fn [orientation] - (let [width (:width values) - height (:height values) - new-width (if (= orientation :horiz) (max width height) (min width height)) - new-height (if (= orientation :horiz) (min width height) (max width height))] - (st/emit! (udw/update-dimensions ids :width new-width) - (udw/update-dimensions ids :height new-height)))) + (st/emit! (udw/change-orientation ids orientation))) on-size-change (mf/use-callback From 28b61759430ca57c5b312c95dac6a402c2ebc179 Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Thu, 9 Jun 2022 08:47:55 +0200 Subject: [PATCH 4/4] :paperclip: Tag new minor release --- version.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.txt b/version.txt index 374c54408..884011b6b 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.13.4-beta +1.13.5-beta