diff --git a/common/src/app/common/geom/shapes/constraints.cljc b/common/src/app/common/geom/shapes/constraints.cljc index ef72945c9..2ced1cce1 100644 --- a/common/src/app/common/geom/shapes/constraints.cljc +++ b/common/src/app/common/geom/shapes/constraints.cljc @@ -151,7 +151,9 @@ (let [angl (gpt/angle-with-other before-v after-v) sign (if (mth/close? angl 180) -1 1) length (* sign (gpt/length before-v))] - (gpt/subtract after-v (gpt/scale (gpt/unit after-v) length)))) + (if (mth/almost-zero? length) + after-v + (gpt/subtract after-v (gpt/scale (gpt/unit after-v) length))))) (defn side-vector [axis [c0 c1 _ c3]] diff --git a/frontend/src/app/main/data/workspace/shape_layout.cljs b/frontend/src/app/main/data/workspace/shape_layout.cljs index 7f2d7d3ae..d1f171b3d 100644 --- a/frontend/src/app/main/data/workspace/shape_layout.cljs +++ b/frontend/src/app/main/data/workspace/shape_layout.cljs @@ -78,8 +78,8 @@ has-group? (->> selected-shapes (d/seek cph/group-shape?)) is-group? (and single? has-group?)] (if is-group? - (let [parent-id (:parent-id (first selected-shapes)) - new-shape-id (uuid/next) + (let [new-shape-id (uuid/next) + parent-id (:parent-id (first selected-shapes)) shapes-ids (:shapes (first selected-shapes)) ordered-ids (into (d/ordered-set) shapes-ids)] (rx/of (dwse/select-shapes ordered-ids) diff --git a/frontend/src/app/main/data/workspace/shapes.cljs b/frontend/src/app/main/data/workspace/shapes.cljs index ee39ddc8d..72012c8d6 100644 --- a/frontend/src/app/main/data/workspace/shapes.cljs +++ b/frontend/src/app/main/data/workspace/shapes.cljs @@ -300,6 +300,7 @@ (assoc :frame-id frame-id) (cts/setup-rect-selrect))] (rx/of (add-shape shape)))))) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Artboard ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/frontend/src/app/main/ui/workspace/shapes/frame/thumbnail_render.cljs b/frontend/src/app/main/ui/workspace/shapes/frame/thumbnail_render.cljs index 5c06eb06b..1715b887a 100644 --- a/frontend/src/app/main/ui/workspace/shapes/frame/thumbnail_render.cljs +++ b/frontend/src/app/main/ui/workspace/shapes/frame/thumbnail_render.cljs @@ -199,6 +199,8 @@ (mf/use-effect (mf/deps disable?) (fn [] + (when (and disable? (not @disable-ref?)) + (rx/push! updates-str :update)) (reset! disable-ref? disable?))) (mf/use-effect diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs index bc804fad9..fb83ff3c3 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs @@ -7,6 +7,7 @@ (ns app.main.ui.workspace.sidebar.options.rows.stroke-row (:require [app.common.data :as d] + [app.common.data.macros :as dm] [app.main.ui.components.dropdown :refer [dropdown]] [app.main.ui.components.numeric-input :refer [numeric-input]] [app.main.ui.hooks :as h] @@ -132,9 +133,10 @@ :on-close (close-caps-select start-caps-state)} [:ul.dropdown.cap-select-dropdown {:style {:top (:top @start-caps-state) :left (:left @start-caps-state)}} - (for [[value label separator] (stroke-cap-names)] + (for [[idx [value label separator]] (d/enumerate (stroke-cap-names))] (let [img (value->img value)] - [:li {:class (dom/classnames :separator separator) + [:li {:key (dm/str "start-cap-" idx) + :class (dom/classnames :separator separator) :on-click #(on-stroke-cap-start-change index value)} (when img [:img {:src (value->img value)}]) label]))]] @@ -151,9 +153,10 @@ :on-close (close-caps-select end-caps-state)} [:ul.dropdown.cap-select-dropdown {:style {:top (:top @end-caps-state) :left (:left @end-caps-state)}} - (for [[value label separator] (stroke-cap-names)] + (for [[idx [value label separator]] (d/enumerate (stroke-cap-names))] (let [img (value->img value)] - [:li {:class (dom/classnames :separator separator) + [:li {:key (dm/str "end-cap-" idx) + :class (dom/classnames :separator separator) :on-click #(on-stroke-cap-end-change index value)} (when img [:img {:src (value->img value)}]) label]))]]])]))