mirror of
https://github.com/penpot/penpot.git
synced 2025-06-02 02:21:44 +02:00
🐛 Fix bugs in comments (#5734)
* 🐛 Fix could not remove or update new comments without closing and reopening the thread * 🐛 Fix scroll over long comments using the mouse wheel
This commit is contained in:
parent
d7477cd448
commit
0bd4a7d0fc
2 changed files with 33 additions and 24 deletions
|
@ -621,6 +621,7 @@
|
|||
|
||||
comment (-> (db/insert! conn :comment params)
|
||||
(decode-row)
|
||||
(assoc :file-id file-id)
|
||||
(add-owner profile))]
|
||||
|
||||
;; Update thread modified-at attribute and assoc the current
|
||||
|
|
|
@ -373,34 +373,42 @@
|
|||
(mf/use-callback
|
||||
(mf/deps zoom)
|
||||
(fn [event]
|
||||
(let [event (.getBrowserEvent ^js event)
|
||||
target (dom/get-target event)
|
||||
mod? (kbd/mod? event)
|
||||
picking-color? (= "pixel-overlay" (.-id target))
|
||||
on-comments-layer? (dom/is-child? (dom/get-element "comments") target)]
|
||||
(let [event (.getBrowserEvent ^js event)
|
||||
|
||||
(when (or (uwvv/inside-viewport? target) picking-color? on-comments-layer?)
|
||||
target (dom/get-target event)
|
||||
mod? (kbd/mod? event)
|
||||
ctrl? (kbd/ctrl? event)
|
||||
|
||||
picking-color? (= "pixel-overlay" (.-id target))
|
||||
comments-layer? (dom/is-child? (dom/get-element "comments") target)
|
||||
|
||||
raw-pt (dom/get-client-position event)
|
||||
pt (uwvv/point->viewport raw-pt)
|
||||
|
||||
norm-event ^js (nw/normalize-wheel event)
|
||||
|
||||
delta-y (.-pixelY norm-event)
|
||||
delta-x (.-pixelX norm-event)
|
||||
delta-zoom (+ delta-y delta-x)
|
||||
|
||||
scale (+ 1 (mth/abs (* scale-per-pixel delta-zoom)))
|
||||
scale (if (pos? delta-zoom) (/ 1 scale) scale)]
|
||||
|
||||
(when (or (uwvv/inside-viewport? target) picking-color?)
|
||||
(dom/prevent-default event)
|
||||
(dom/stop-propagation event)
|
||||
(let [raw-pt (dom/get-client-position event)
|
||||
pt (uwvv/point->viewport raw-pt)
|
||||
norm-event ^js (nw/normalize-wheel event)
|
||||
ctrl? (kbd/ctrl? event)
|
||||
delta-y (.-pixelY norm-event)
|
||||
delta-x (.-pixelX norm-event)]
|
||||
(if (or ctrl? mod?)
|
||||
(st/emit! (dw/set-zoom pt scale))
|
||||
(if (and (not (cfg/check-platform? :macos)) (kbd/shift? event))
|
||||
;; macos sends delta-x automatically, don't need to do it
|
||||
(st/emit! (dw/update-viewport-position {:x #(+ % (/ delta-y zoom))}))
|
||||
(st/emit! (dw/update-viewport-position {:x #(+ % (/ delta-x zoom))
|
||||
:y #(+ % (/ delta-y zoom))})))))
|
||||
|
||||
(if (or ctrl? mod?)
|
||||
(let [delta-zoom (+ delta-y delta-x)
|
||||
scale (+ 1 (mth/abs (* scale-per-pixel delta-zoom)))
|
||||
scale (if (pos? delta-zoom) (/ 1 scale) scale)]
|
||||
(st/emit! (dw/set-zoom pt scale)))
|
||||
|
||||
(if (and (not (cfg/check-platform? :macos))
|
||||
;; macos sends delta-x automatically, don't need to do it
|
||||
(kbd/shift? event))
|
||||
(st/emit! (dw/update-viewport-position {:x #(+ % (/ delta-y zoom))}))
|
||||
(st/emit! (dw/update-viewport-position {:x #(+ % (/ delta-x zoom))
|
||||
:y #(+ % (/ delta-y zoom))}))))))))))
|
||||
(when (and comments-layer? (or ctrl? mod?))
|
||||
(dom/prevent-default event)
|
||||
(dom/stop-propagation event)
|
||||
(st/emit! (dw/set-zoom pt scale)))))))
|
||||
|
||||
(defn on-drag-enter
|
||||
[comp-inst-ref]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue