🐛 Fix problem with moving+selection not working properly

This commit is contained in:
alonso.torres 2024-06-07 13:51:12 +02:00
parent d29215a282
commit 2c21a049e1
3 changed files with 19 additions and 10 deletions

View file

@ -23,6 +23,7 @@
- Fix expand libraries when search results are present [Taiga #7876](https://tree.taiga.io/project/penpot/issue/7876) - Fix expand libraries when search results are present [Taiga #7876](https://tree.taiga.io/project/penpot/issue/7876)
- Fix color palette default library [Taiga #8029](https://tree.taiga.io/project/penpot/issue/8029) - Fix color palette default library [Taiga #8029](https://tree.taiga.io/project/penpot/issue/8029)
- Component Library is lost after exporting/importing in .zip format [Github #4672](https://github.com/penpot/penpot/issues/4672) - Component Library is lost after exporting/importing in .zip format [Github #4672](https://github.com/penpot/penpot/issues/4672)
- Fix problem with moving+selection not working properly [Taiga #7943](https://tree.taiga.io/project/penpot/issue/7943)
## 2.0.3 ## 2.0.3

View file

@ -431,7 +431,7 @@
(watch [_ state stream] (watch [_ state stream]
(let [initial (deref ms/mouse-position) (let [initial (deref ms/mouse-position)
stopper (mse/drag-stopper stream) stopper (mse/drag-stopper stream {:interrupt? false})
zoom (get-in state [:workspace-local :zoom] 1) zoom (get-in state [:workspace-local :zoom] 1)
;; We toggle the selection so we don't have to wait for the event ;; We toggle the selection so we don't have to wait for the event

View file

@ -72,12 +72,20 @@
(defn drag-stopper (defn drag-stopper
"Creates a stream to stop drag events. Takes into account the mouse and also "Creates a stream to stop drag events. Takes into account the mouse and also
if the window loses focus or the esc key is pressed." if the window loses focus or the esc key is pressed."
[stream] ([stream]
(rx/merge (drag-stopper stream nil))
(->> stream ([stream {:keys [blur? up-mouse? interrupt?] :or {blur? true up-mouse? true interrupt? true}}]
(rx/filter blur-event?)) (rx/merge
(->> stream (if blur?
(rx/filter mouse-event?) (->> stream
(rx/filter mouse-up-event?)) (rx/filter blur-event?))
(->> stream (rx/empty))
(rx/filter #(= % :interrupt))))) (if up-mouse?
(->> stream
(rx/filter mouse-event?)
(rx/filter mouse-up-event?))
(rx/empty))
(if interrupt?
(->> stream
(rx/filter #(= % :interrupt)))
(rx/empty)))))