Merge pull request #8171 from penpot/ladybenko-13152-fix-blur

🐛 Fix blur when clicking on same page
This commit is contained in:
Elena Torró 2026-01-22 17:42:39 +01:00 committed by GitHub
commit 7b86518afa
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 17 additions and 9 deletions

View File

@ -61,7 +61,7 @@
(mf/defc page-item (mf/defc page-item
{::mf/wrap-props false} {::mf/wrap-props false}
[{:keys [page index deletable? selected? editing? hovering?]}] [{:keys [page index deletable? selected? editing? hovering? current-page-id]}]
(let [input-ref (mf/use-ref) (let [input-ref (mf/use-ref)
id (:id page) id (:id page)
delete-fn (mf/use-fn (mf/deps id) #(st/emit! (dw/delete-page id))) delete-fn (mf/use-fn (mf/deps id) #(st/emit! (dw/delete-page id)))
@ -72,8 +72,10 @@
(mf/use-fn (mf/use-fn
(mf/deps id) (mf/deps id)
(fn [] (fn []
;; when using the wasm renderer, apply a blur effect to the viewport canvas ;; For the wasm renderer, apply a blur effect to the viewport canvas
(if (features/active-feature? @st/state "render-wasm/v1") ;; when we navigate to a different page.
(if (and (features/active-feature? @st/state "render-wasm/v1")
(not= id current-page-id))
(do (do
(wasm.api/capture-canvas-pixels) (wasm.api/capture-canvas-pixels)
(wasm.api/apply-canvas-blur) (wasm.api/apply-canvas-blur)
@ -203,12 +205,13 @@
(mf/defc page-item-wrapper (mf/defc page-item-wrapper
{::mf/wrap-props false} {::mf/wrap-props false}
[{:keys [page-id index deletable? selected? editing?]}] [{:keys [page-id index deletable? selected? editing? current-page-id]}]
(let [page-ref (mf/with-memo [page-id] (let [page-ref (mf/with-memo [page-id]
(make-page-ref page-id)) (make-page-ref page-id))
page (mf/deref page-ref)] page (mf/deref page-ref)]
[:& page-item {:page page [:& page-item {:page page
:index index :index index
:current-page-id current-page-id
:deletable? deletable? :deletable? deletable?
:selected? selected? :selected? selected?
:editing? editing?}])) :editing? editing?}]))
@ -231,6 +234,7 @@
:deletable? deletable? :deletable? deletable?
:editing? (= page-id editing-page-id) :editing? (= page-id editing-page-id)
:selected? (= page-id current-page-id) :selected? (= page-id current-page-id)
:current-page-id current-page-id
:key page-id}])]])) :key page-id}])]]))
;; --- Sitemap Toolbox ;; --- Sitemap Toolbox

View File

@ -144,7 +144,7 @@
modifiers (hooks/use-equal-memo modifiers) modifiers (hooks/use-equal-memo modifiers)
shapes (hooks/use-equal-memo shapes)] shapes (hooks/use-equal-memo shapes)]
[:g.outlines [:g.outlines.blurrable
[:& shape-outlines-render {:shapes shapes [:& shape-outlines-render {:shapes shapes
:zoom zoom :zoom zoom
:modifiers modifiers}]])) :modifiers modifiers}]]))

View File

@ -252,7 +252,7 @@
edition (mf/deref refs/selected-edition) edition (mf/deref refs/selected-edition)
grid-edition? (ctl/grid-layout? objects edition)] grid-edition? (ctl/grid-layout? objects edition)]
[:g.frame-titles [:g.frame-titles.blurrable
(for [{:keys [id parent-id] :as shape} shapes] (for [{:keys [id parent-id] :as shape} shapes]
(when (and (when (and
(not= id uuid/zero) (not= id uuid/zero)

View File

@ -424,6 +424,7 @@
:xmlnsXlink "http://www.w3.org/1999/xlink" :xmlnsXlink "http://www.w3.org/1999/xlink"
:preserveAspectRatio "xMidYMid meet" :preserveAspectRatio "xMidYMid meet"
:key (str "viewport" page-id) :key (str "viewport" page-id)
:id "viewport-controls"
:view-box (utils/format-viewbox vbox) :view-box (utils/format-viewbox vbox)
:ref on-viewport-ref :ref on-viewport-ref
:class (dm/str @cursor (when drawing-tool " drawing") " " (stl/css :viewport-controls)) :class (dm/str @cursor (when drawing-tool " drawing") " " (stl/css :viewport-controls))
@ -473,7 +474,7 @@
:zoom zoom}] :zoom zoom}]
(when (ctl/any-layout? outlined-frame) (when (ctl/any-layout? outlined-frame)
[:g.ghost-outline [:g.ghost-outline.blurrable
[:& outline/shape-outlines [:& outline/shape-outlines
{:objects base-objects {:objects base-objects
:selected selected :selected selected

View File

@ -1429,8 +1429,9 @@
(defn apply-canvas-blur (defn apply-canvas-blur
[] []
(when wasm/canvas (when wasm/canvas (dom/set-style! wasm/canvas "filter" "blur(4px)"))
(dom/set-style! wasm/canvas "filter" "blur(4px)"))) (let [controls-to-blur (dom/query-all (dom/get-element "viewport-controls") ".blurrable")]
(run! #(dom/set-style! % "filter" "blur(4px)") controls-to-blur)))
(defn init-wasm-module (defn init-wasm-module

View File

@ -151,6 +151,8 @@ void main() {
(.clear ^js context (.-DEPTH_BUFFER_BIT ^js context)) (.clear ^js context (.-DEPTH_BUFFER_BIT ^js context))
(.clear ^js context (.-STENCIL_BUFFER_BIT ^js context))) (.clear ^js context (.-STENCIL_BUFFER_BIT ^js context)))
(dom/set-style! wasm/canvas "filter" "none") (dom/set-style! wasm/canvas "filter" "none")
(let [controls-to-unblur (dom/query-all (dom/get-element "viewport-controls") ".blurrable")]
(run! #(dom/set-style! % "filter" "none") controls-to-unblur))
(set! wasm/canvas-pixels nil))) (set! wasm/canvas-pixels nil)))
(defn capture-canvas-pixels (defn capture-canvas-pixels