🐛 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:
luisδμ 2025-01-31 11:57:35 +01:00 committed by GitHub
parent d7477cd448
commit 0bd4a7d0fc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 33 additions and 24 deletions

View file

@ -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

View file

@ -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]