diff --git a/CHANGES.md b/CHANGES.md index 074da059ba..cf3ae5456e 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -17,6 +17,7 @@ - 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) - Fix title on shared button [Taiga #13730](https://tree.taiga.io/project/penpot/issue/13730) +- Fix hover on layers [Taiga #13799](https://tree.taiga.io/project/penpot/issue/13799) ## 2.14.1 diff --git a/frontend/src/app/main/ui/workspace/sidebar/layer_item.cljs b/frontend/src/app/main/ui/workspace/sidebar/layer_item.cljs index 4c88be68d5..b17698d659 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/layer_item.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/layer_item.cljs @@ -32,6 +32,7 @@ [app.util.shape-icon :as usi] [app.util.timers :as ts] [beicon.v2.core :as rx] + [clojure.set :as set] [okulary.core :as l] [rumext.v2 :as mf])) @@ -45,7 +46,12 @@ (when (compare-and-set! sidebar-hover-pending? false true) (ts/raf (fn [] - (let [{:keys [enter leave]} (swap! sidebar-hover-queue (constantly {:enter #{} :leave #{}}))] + (let [{:keys [enter leave]} @sidebar-hover-queue + + enter (set/difference enter leave) + leave (set/difference leave enter)] + + (reset! sidebar-hover-queue {:enter #{} :leave #{}}) (reset! sidebar-hover-pending? false) (when (seq leave) (apply st/emit! (map dw/dehighlight-shape leave))) @@ -320,20 +326,22 @@ (mf/use-fn (mf/deps id) (fn [_] - (swap! sidebar-hover-queue (fn [{:keys [enter leave] :as q}] - (-> q - (assoc :enter (conj enter id)) - (assoc :leave (disj leave id))))) + (swap! sidebar-hover-queue + (fn [q] + (-> q + (update :enter (fnil conj #{}) id) + (update :leave (fnil disj #{}) id)))) (schedule-sidebar-hover-flush))) on-pointer-leave (mf/use-fn (mf/deps id) (fn [_] - (swap! sidebar-hover-queue (fn [{:keys [enter leave] :as q}] - (-> q - (assoc :enter (disj enter id)) - (assoc :leave (conj leave id))))) + (swap! sidebar-hover-queue + (fn [q] + (-> q + (update :enter (fnil disj #{}) id) + (update :leave (fnil conj #{}) id)))) (schedule-sidebar-hover-flush))) on-context-menu