From aa7e70141c2aaa10d5c045e0e5601c65919cbc95 Mon Sep 17 00:00:00 2001 From: "alonso.torres" Date: Mon, 15 Jan 2024 12:55:17 +0100 Subject: [PATCH] :bug: Fix problem with snap to distances --- frontend/src/app/main/snap.cljs | 13 +++++++------ .../main/ui/workspace/viewport/snap_distances.cljs | 7 ++++--- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/frontend/src/app/main/snap.cljs b/frontend/src/app/main/snap.cljs index 3cd6b7dc6..5b164429d 100644 --- a/frontend/src/app/main/snap.cljs +++ b/frontend/src/app/main/snap.cljs @@ -210,8 +210,9 @@ (defn search-snap-distance [selrect coord shapes-lt shapes-gt zoom] (->> (rx/combine-latest shapes-lt shapes-gt) - (rx/map (fn [[shapes-lt shapes-gt]] - (calculate-snap coord selrect shapes-lt shapes-gt zoom))))) + (rx/map + (fn [[shapes-lt shapes-gt]] + (calculate-snap coord selrect shapes-lt shapes-gt zoom))))) (defn select-shapes-area [page-id frame-id selected objects area] @@ -233,12 +234,12 @@ (rx/merge-map (fn [[frame selrect]] (let [vbox (deref refs/vbox) + frame-id (->> shapes first :frame-id) + frame-sr (when-not (cfh/root? frame) (dm/get-prop frame :selrect)) + bounds (d/nilv (grc/clip-rect frame-sr vbox) vbox) selected (into #{} (map :id shapes)) - areas (->> (gsh/get-areas - (or (grc/clip-rect (dm/get-prop frame :selrect) vbox) - vbox) - selrect) + areas (->> (gsh/get-areas bounds selrect) (d/mapm #(select-shapes-area page-id frame-id selected objects %2))) snap-x (search-snap-distance selrect :x (:left areas) (:right areas) zoom) snap-y (search-snap-distance selrect :y (:top areas) (:bottom areas) zoom)] diff --git a/frontend/src/app/main/ui/workspace/viewport/snap_distances.cljs b/frontend/src/app/main/ui/workspace/viewport/snap_distances.cljs index 8b0b477cf..4d8941fc6 100644 --- a/frontend/src/app/main/ui/workspace/viewport/snap_distances.cljs +++ b/frontend/src/app/main/ui/workspace/viewport/snap_distances.cljs @@ -8,6 +8,7 @@ (:require [app.common.data :as d] [app.common.data.macros :as dm] + [app.common.files.helpers :as cph] [app.common.geom.rect :as grc] [app.common.geom.shapes :as gsh] [app.common.math :as mth] @@ -212,9 +213,9 @@ gt-side (if (= coord :x) :right :bottom) vbox (deref refs/vbox) - areas (gsh/get-areas - (or (grc/clip-rect (dm/get-prop frame :selrect) vbox) vbox) - selrect) + frame-sr (when-not (cph/root? frame) (dm/get-prop frame :selrect)) + bounds (d/nilv (grc/clip-rect frame-sr vbox) vbox) + areas (gsh/get-areas bounds selrect) query-side (fn [side]