This commit is contained in:
Aitor Moreno
2025-09-25 09:35:57 +02:00
parent 09e9340ba6
commit 8671cf3841
3 changed files with 20 additions and 9 deletions

View File

@@ -633,7 +633,7 @@
[modif-tree & {:keys [ignore-constraints ignore-snap-pixel snap-ignore-axis undo-group] [modif-tree & {:keys [ignore-constraints ignore-snap-pixel snap-ignore-axis undo-group]
:or {ignore-constraints false ignore-snap-pixel false snap-ignore-axis nil undo-group nil} :or {ignore-constraints false ignore-snap-pixel false snap-ignore-axis nil undo-group nil}
:as params}] :as params}]
(ptk/reify ::apply-wasm-modifiesr (ptk/reify ::apply-wasm-modifiers
ptk/WatchEvent ptk/WatchEvent
(watch [_ state _] (watch [_ state _]
(let [objects (dsh/lookup-page-objects state) (let [objects (dsh/lookup-page-objects state)

View File

@@ -146,12 +146,19 @@
(defn start-resize (defn start-resize
"Enter mouse resize mode, until mouse button is released." "Enter mouse resize mode, until mouse button is released."
[handler ids shape] [handler ids shape]
(letfn [(resize [shape initial layout [point lock? center? point-snap]] (letfn [(resize [shape initial layout [point lock? center? ignore-constraints? point-snap]]
(let [selrect (dm/get-prop shape :selrect) (let [selrect (dm/get-prop shape :selrect)
width (dm/get-prop selrect :width) width (dm/get-prop selrect :width)
height (dm/get-prop selrect :height) height (dm/get-prop selrect :height)
rotation (dm/get-prop shape :rotation) rotation (dm/get-prop shape :rotation)
shape-type (:type shape)
is-frame? (= :frame shape-type)
ignore-constraints? (and ^boolean ignore-constraints?
^boolean is-frame?)
_ (prn "ignore-constraints?" ignore-constraints?)
shape-center (gsh/shape->center shape) shape-center (gsh/shape->center shape)
shape-transform (:transform shape) shape-transform (:transform shape)
shape-transform-inverse (:transform-inverse shape) shape-transform-inverse (:transform-inverse shape)
@@ -259,12 +266,13 @@
;; Unifies the instantaneous proportion lock modifier ;; Unifies the instantaneous proportion lock modifier
;; activated by Shift key and the shapes own proportion ;; activated by Shift key and the shapes own proportion
;; lock flag that can be activated on element options. ;; lock flag that can be activated on element options.
(normalize-proportion-lock [[point shift? alt?]] (normalize-proportion-lock [[point shift? alt? mod?]]
(let [proportion-lock? (:proportion-lock shape)] (let [proportion-lock? (:proportion-lock shape)]
[point [point
(or ^boolean proportion-lock? (or ^boolean proportion-lock?
^boolean shift?) ^boolean shift?)
alt?]))] alt?
mod?]))]
(reify (reify
ptk/UpdateEvent ptk/UpdateEvent
(update [_ state] (update [_ state]
@@ -286,7 +294,7 @@
resize-events-stream resize-events-stream
(->> ms/mouse-position (->> ms/mouse-position
(rx/filter some?) (rx/filter some?)
(rx/with-latest-from ms/mouse-position-shift ms/mouse-position-alt) (rx/with-latest-from ms/mouse-position-shift ms/mouse-position-alt ms/mouse-position-mod)
(rx/map normalize-proportion-lock) (rx/map normalize-proportion-lock)
(rx/switch-map (rx/switch-map
(fn [[point _ _ :as current]] (fn [[point _ _ :as current]]
@@ -316,7 +324,8 @@
(rx/map (rx/map
#(dwm/apply-wasm-modifiers #(dwm/apply-wasm-modifiers
(dwm/create-modif-tree ids %) (dwm/create-modif-tree ids %)
:ignore-constraints (contains? layout :scale-text))))) :ignore-constraints (or (contains? layout :scale-text)
false)))))
(->> resize-events-stream (->> resize-events-stream
(rx/mapcat (rx/mapcat
@@ -1055,11 +1064,11 @@
(if (features/active-feature? state "render-wasm/v1") (if (features/active-feature? state "render-wasm/v1")
(rx/of (dwm/apply-wasm-modifiers modif-tree (rx/of (dwm/apply-wasm-modifiers modif-tree
{:ignore-constraints false {:ignore-constraints true
:ignore-snap-pixel true})) :ignore-snap-pixel true}))
(rx/of (dwm/apply-modifiers {:modifiers modif-tree (rx/of (dwm/apply-modifiers {:modifiers modif-tree
:ignore-constraints false :ignore-constraints true
:ignore-snap-pixel true}))))))) :ignore-snap-pixel true})))))))
(defn- cleanup-invalid-moving-shapes [ids objects frame-id] (defn- cleanup-invalid-moving-shapes [ids objects frame-id]

View File

@@ -508,7 +508,9 @@
(dom/stop-propagation event) (dom/stop-propagation event)
(let [target (dom/get-current-target event) (let [target (dom/get-current-target event)
position (-> (dom/get-data target "position") position (-> (dom/get-data target "position")
(keyword))] (keyword))
ignore-constraints? (.-ctrlKey event)]
(prn "single-handlers* ignore-constraints?" ignore-constraints? "shape-type" shape-type)
(cond (cond
;; If text and in auto-width and the resize is horizontal, switch to auto-height and mark direction ;; If text and in auto-width and the resize is horizontal, switch to auto-height and mark direction
(and (= shape-type :text) (and (= shape-type :text)