From 4abaae4f80f9e6f3f446eb30a259274aad322dae Mon Sep 17 00:00:00 2001 From: Eva Marco Date: Thu, 19 Mar 2026 13:41:33 +0100 Subject: [PATCH] :bug: Fix open tooltip on tab change (#8680) --- CHANGES.md | 1 + .../src/app/main/ui/ds/tooltip/tooltip.cljs | 34 +++++++++++++------ 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 86c535adcc..c0d68a08b1 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -16,6 +16,7 @@ - Fix Alt/Option to draw shapes from center point (by @offreal) [Github #8361](https://github.com/penpot/penpot/pull/8361) - Add token name on broken token pill on sidebar [Taiga #13527](https://tree.taiga.io/project/penpot/issue/13527) +- Fix tooltip activated when tab change [Taiga #13627](https://tree.taiga.io/project/penpot/issue/13627) ## 2.14.0 (Unreleased) diff --git a/frontend/src/app/main/ui/ds/tooltip/tooltip.cljs b/frontend/src/app/main/ui/ds/tooltip/tooltip.cljs index 087649ca63..968361f865 100644 --- a/frontend/src/app/main/ui/ds/tooltip/tooltip.cljs +++ b/frontend/src/app/main/ui/ds/tooltip/tooltip.cljs @@ -185,17 +185,18 @@ (mf/use-fn (mf/deps tooltip-id delay) (fn [_] - (let [trigger-el (mf/ref-val trigger-ref)] - (clear-schedule schedule-ref) - (add-schedule schedule-ref (d/nilv delay 300) - (fn [] - (when-let [active @active-tooltip] - (when (not= (:id active) tooltip-id) - (when-let [tooltip-el (dom/get-element (:id active))] - (dom/set-css-property! tooltip-el "display" "none")) - (reset! active-tooltip nil))) - (reset! active-tooltip {:id tooltip-id :trigger trigger-el}) - (reset! visible* true)))))) + (when-not (.-hidden js/document) + (let [trigger-el (mf/ref-val trigger-ref)] + (clear-schedule schedule-ref) + (add-schedule schedule-ref (d/nilv delay 300) + (fn [] + (when-let [active @active-tooltip] + (when (not= (:id active) tooltip-id) + (when-let [tooltip-el (dom/get-element (:id active))] + (dom/set-css-property! tooltip-el "display" "none")) + (reset! active-tooltip nil))) + (reset! active-tooltip {:id tooltip-id :trigger trigger-el}) + (reset! visible* true))))))) on-hide (mf/use-fn @@ -243,6 +244,17 @@ content aria-label)})] + (mf/use-effect + (mf/deps tooltip-id) + (fn [] + (let [handle-visibility-change + (fn [] + (when (.-hidden js/document) + (on-hide)))] + (js/document.addEventListener "visibilitychange" handle-visibility-change) + ;; cleanup + #(js/document.removeEventListener "visibilitychange" handle-visibility-change)))) + (mf/use-effect (mf/deps visible placement offset) (fn []