Skip to content

Commit 06fa3a1

Browse files
committed
minor snap fixes
1 parent 4f1ac10 commit 06fa3a1

File tree

5 files changed

+91
-4
lines changed

5 files changed

+91
-4
lines changed

.clj-kondo/metosin/malli-types-cljs/config.edn

+77
Original file line numberDiff line numberDiff line change
@@ -12160,6 +12160,83 @@
1216012160
:worker {:op :keys,
1216112161
:req {:tasks :map}},
1216212162
:pen-mode :boolean}}}}},
12163+
selected-with-descendant-ids {:arities {1 {:args [{:op :keys,
12164+
:opt {:system-fonts :vector,
12165+
:copied-bounds :seqable,
12166+
:active-document :any,
12167+
:adjusted-pointer-offset :seqable,
12168+
:re-pressed.core/keydown :map,
12169+
:pivot-point :seqable,
12170+
:copied-elements :seqable,
12171+
:kd-tree :any,
12172+
:pointer-offset :seqable,
12173+
:nearest-neighbors :sequential,
12174+
:event-time :number,
12175+
:drag :boolean,
12176+
:version :string,
12177+
:nearest-neighbor {:op :keys,
12178+
:req {:point :seqable,
12179+
:base-point :seqable,
12180+
:dist-squared :number}},
12181+
:dom-rect {:op :keys,
12182+
:req {:x :number,
12183+
:y :number,
12184+
:width :number,
12185+
:height :number,
12186+
:top :number,
12187+
:right :number,
12188+
:bottom :number,
12189+
:left :number}},
12190+
:nearest-neighbor-offset :seqable,
12191+
:clicked-element :any,
12192+
:primary-tool :any},
12193+
:req {:double-click-delta :any,
12194+
:dialogs :vector,
12195+
:repl-mode :keyword,
12196+
:snap {:op :keys,
12197+
:req {:active :boolean,
12198+
:threshold :number,
12199+
:options :set}},
12200+
:grid :boolean,
12201+
:tool :any,
12202+
:ruler {:op :keys,
12203+
:req {:visible :boolean,
12204+
:locked :boolean,
12205+
:size :number}},
12206+
:cursor :string,
12207+
:pointer-pos :seqable,
12208+
:state :keyword,
12209+
:window {:op :keys,
12210+
:req {:maximized :boolean,
12211+
:minimized :boolean,
12212+
:fullscreen :boolean,
12213+
:focused :boolean}},
12214+
:theme {:op :keys,
12215+
:opt {:native-mode :keyword},
12216+
:req {:mode :keyword}},
12217+
:lang :any,
12218+
:document-tabs :vector,
12219+
:documents :map,
12220+
:notifications :seqable,
12221+
:recent :vector,
12222+
:zoom-sensitivity :any,
12223+
:debug-info :boolean,
12224+
:adjusted-pointer-pos :seqable,
12225+
:timeline {:op :keys,
12226+
:req {:time :number,
12227+
:speed :number,
12228+
:replay? :boolean,
12229+
:grid-snap? :boolean,
12230+
:guide-snap? :boolean,
12231+
:paused? :boolean}},
12232+
:backdrop :boolean,
12233+
:drag-threshold :number,
12234+
:fx :vector,
12235+
:panels :map,
12236+
:worker {:op :keys,
12237+
:req {:tasks :map}},
12238+
:pen-mode :boolean}}],
12239+
:ret :set}}},
1216312240
top-ancestor-ids {:arities {1 {:args [{:op :keys,
1216412241
:opt {:system-fonts :vector,
1216512242
:copied-bounds :seqable,

src/renderer/document/handlers.cljs

+1-1
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@
107107
(assoc :title (new-title db)))]
108108
(-> db
109109
(assoc-in [:documents id] document)
110-
(assoc :active-document id)
110+
(set-active id)
111111
(update :document-tabs #(vec/add % (inc active-index) id)))))
112112

113113
(m/=> set-hovered-ids [:-> App [:set uuid?] App])

src/renderer/element/handlers.cljs

+5
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,11 @@
206206
[db]
207207
(set/difference (selected-ids db) (descendant-ids db)))
208208

209+
(m/=> selected-with-descendant-ids [:-> App [:set uuid?]])
210+
(defn selected-with-descendant-ids
211+
[db]
212+
(set/union (selected-ids db) (descendant-ids db)))
213+
209214
(m/=> top-selected-ancestors [:-> App [:sequential Element]])
210215
(defn top-selected-ancestors
211216
[db]

src/renderer/snap/events.cljs

+3-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@
2626
:after (fn [context]
2727
(let [db (rf/get-effect context :db)]
2828
(cond-> context
29-
(not= (element.h/selected-ids db) (rf/get-coeffect context :selected-ids))
29+
(and (:active-document db)
30+
(not= (element.h/selected-ids db)
31+
(rf/get-coeffect context :selected-ids)))
3032
(rf/assoc-effect :db (h/update-tree db)))))))
3133

3234
(rf/reg-global-interceptor auto-update-tree)

src/renderer/tool/impl/base/transform.cljs

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
(ns renderer.tool.impl.base.transform
22
(:require
33
[clojure.core.matrix :as mat]
4+
[clojure.set :as set]
45
[malli.core :as m]
56
[renderer.app.db :refer [App]]
67
[renderer.app.effects :as-alias app.fx]
@@ -333,6 +334,8 @@
333334

334335
(defmethod hierarchy/snapping-points :transform
335336
[db]
336-
(let [elements (vals (element.h/entities db))
337-
non-selected-visible (filter #(and (not (:selected %)) (:visible %)) elements)]
337+
(let [non-selected-ids (set/difference (set (keys (element.h/entities db)))
338+
(element.h/selected-with-descendant-ids db))
339+
non-selected (select-keys (element.h/entities db) (vec non-selected-ids))
340+
non-selected-visible (filter :visible (vals non-selected))]
338341
(element.h/snapping-points db non-selected-visible)))

0 commit comments

Comments
 (0)