From 0bd4a7d0fcf98f71445d0fd8ee75a635f0fb75f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?luis=CE=B4=CE=BC?= <2978951+luisddm@users.noreply.github.com> Date: Fri, 31 Jan 2025 11:57:35 +0100 Subject: [PATCH] :bug: Fix bugs in comments (#5734) * :bug: Fix could not remove or update new comments without closing and reopening the thread * :bug: Fix scroll over long comments using the mouse wheel --- backend/src/app/rpc/commands/comments.clj | 1 + .../main/ui/workspace/viewport/actions.cljs | 56 +++++++++++-------- 2 files changed, 33 insertions(+), 24 deletions(-) diff --git a/backend/src/app/rpc/commands/comments.clj b/backend/src/app/rpc/commands/comments.clj index ed6feaa26..a11677e4a 100644 --- a/backend/src/app/rpc/commands/comments.clj +++ b/backend/src/app/rpc/commands/comments.clj @@ -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 diff --git a/frontend/src/app/main/ui/workspace/viewport/actions.cljs b/frontend/src/app/main/ui/workspace/viewport/actions.cljs index 3b9722aa4..b22a8bda7 100644 --- a/frontend/src/app/main/ui/workspace/viewport/actions.cljs +++ b/frontend/src/app/main/ui/workspace/viewport/actions.cljs @@ -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]