diff --git a/common/src/app/common/geom/shapes/constraints.cljc b/common/src/app/common/geom/shapes/constraints.cljc index 6275e673f..bd158ccd5 100644 --- a/common/src/app/common/geom/shapes/constraints.cljc +++ b/common/src/app/common/geom/shapes/constraints.cljc @@ -13,6 +13,7 @@ [app.common.geom.shapes.transforms :as gtr] [app.common.math :as mth] [app.common.types.modifiers :as ctm] + [app.common.types.shape.layout :as ctl] [app.common.uuid :as uuid])) ;; Auxiliary methods to work in an specifica axis @@ -285,13 +286,25 @@ (let [modifiers (ctm/select-child modifiers) constraints-h - (if-not ignore-constraints + (cond + (ctl/layout? parent) + :left + + (not ignore-constraints) (:constraints-h child (default-constraints-h child)) + + :else :scale) constraints-v - (if-not ignore-constraints + (cond + (ctl/layout? parent) + :top + + (not ignore-constraints) (:constraints-v child (default-constraints-v child)) + + :else :scale)] (if (and (= :scale constraints-h) (= :scale constraints-v)) diff --git a/common/src/app/common/pages/changes_builder.cljc b/common/src/app/common/pages/changes_builder.cljc index 8375fc451..e27b7f3a3 100644 --- a/common/src/app/common/pages/changes_builder.cljc +++ b/common/src/app/common/pages/changes_builder.cljc @@ -283,13 +283,13 @@ (fn [old new attr] (let [old-val (get old attr) new-val (get new attr)] - (not= old-val new-val)))] - (let [new-obj (update-fn object)] - (if (= object new-obj) - '() + (not= old-val new-val))) + new-obj (update-fn object)] + (if (= object new-obj) + '() - (let [attrs (or attrs (d/concat-set (keys object) (keys new-obj)))] - (filter (partial changed? object new-obj) attrs)))))) + (let [attrs (or attrs (d/concat-set (keys object) (keys new-obj)))] + (filter (partial changed? object new-obj) attrs))))) (defn update-shapes "Calculate the changes and undos to be done when a function is applied to a diff --git a/frontend/src/app/main/data/workspace.cljs b/frontend/src/app/main/data/workspace.cljs index a14b0454d..74d1e1c1a 100644 --- a/frontend/src/app/main/data/workspace.cljs +++ b/frontend/src/app/main/data/workspace.cljs @@ -55,8 +55,8 @@ [app.main.data.workspace.path.shapes-to-path :as dwps] [app.main.data.workspace.persistence :as dwp] [app.main.data.workspace.selection :as dws] - [app.main.data.workspace.shapes :as dwsh] [app.main.data.workspace.shape-layout :as dwsl] + [app.main.data.workspace.shapes :as dwsh] [app.main.data.workspace.state-helpers :as wsh] [app.main.data.workspace.thumbnails :as dwth] [app.main.data.workspace.transforms :as dwt] diff --git a/frontend/src/app/util/cache.cljs b/frontend/src/app/util/cache.cljs index 90c675bb0..fcb54c917 100644 --- a/frontend/src/app/util/cache.cljs +++ b/frontend/src/app/util/cache.cljs @@ -29,15 +29,20 @@ :else (let [subject (rx/subject)] - (swap! pending assoc key subject) - (->> observable - (rx/catch #(do (rx/error! subject %) - (swap! pending dissoc key) - (rx/throw %))) - (rx/tap - (fn [data] - (let [entry {:created-at (dt/now) :data data}] - (swap! cache assoc key entry)) - (rx/push! subject data) - (rx/end! subject) - (swap! pending dissoc key)))))))) + (do + (swap! pending assoc key subject) + + (rx/subscribe + observable + + (fn [data] + (let [entry {:created-at (dt/now) :data data}] + (swap! cache assoc key entry)) + (swap! pending dissoc key) + (rx/push! subject data) + (rx/end! subject)) + + #(do + (swap! pending dissoc key) + (rx/error! subject %)))) + subject))))