0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-03-13 16:21:57 -05:00

More work on scroll/position of workspace fixing.

This commit is contained in:
Andrey Antukh 2016-02-15 23:28:44 +02:00
parent 6235e9c86e
commit a49e0c2f84
4 changed files with 37 additions and 17 deletions

View file

@ -48,6 +48,14 @@
left (.-scrollLeft target)]
(rx/push! wb/scroll-b (gpt/point left top))))
(defn- on-key-down
[event]
(js/console.log event))
(defn- on-key-up
[event]
(js/console.log event))
(defn- workspace-render
[own projectid]
(let [{:keys [flags] :as workspace} (rum/react wb/workspace-l)
@ -63,7 +71,10 @@
(when left-sidebar?
(left-sidebar))
[:section.workspace-content {:class classes :on-scroll on-scroll}
[:section.workspace-content {:class classes
:on-scroll on-scroll
:on-key-up on-key-up
:on-key-down on-key-down}
;; Pages management lightbox
;; (pagesmngr)
@ -109,8 +120,8 @@
;; that horrible hack.
(let [el1 (mx/get-ref-dom own "viewport-container")
el2 (mx/get-ref-dom own "workspace-canvas")]
(set! (.-scrollLeft el1) 600)
(set! (.-scrollLeft el2) 600)
(set! (.-scrollLeft el1) wb/document-start-scroll-x)
(set! (.-scrollLeft el2) wb/document-start-scroll-x)
own))
(defn- workspace-transfer-state

View file

@ -57,6 +57,7 @@
(defonce scroll-s
(as-> scroll-b $
(rx/merge $ (rx/of (gpt/point)))
(rx/pr-log "scroll: " $)
(rx/dedupe $)))
(defonce scroll-a
@ -121,8 +122,10 @@
;; Constants
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(def viewport-width 4069)
(def viewport-height 2048)
(def ^:const viewport-width 4069)
(def ^:const viewport-height 2048)
(def document-start-x 630)
(def document-start-y 30)
(def ^:const document-start-x 600)
(def ^:const document-start-y 30)
(def ^:const document-start-scroll-x 550)

View file

@ -110,22 +110,28 @@
(defn- canvas-did-mount
[own]
(letfn [(on-mousemove [event page offset-pt]
(letfn [(on-mousemove [event page]
(let [wpt (gpt/point (.-clientX event) (.-clientY event))
cpt (gpt/subtract wpt offset-pt)
canvas (mx/get-ref-dom own (str "canvas" (:id page)))
brect (.getBoundingClientRect canvas)
brect (gpt/point (.-left brect) (.-top brect))
brect (gpt/add brect @wb/scroll-a)
cpt (gpt/subtract wpt brect)
event {:id (:id page)
:ctrl (kbd/ctrl? event)
:shift (kbd/shift? event)
:window-coords wpt
:canvas-coords cpt}]
(println "brect:" brect)
(swap! wb/bounding-rect assoc (:id page) brect)
(rx/push! wb/mouse-b event)))]
;; TODO: update properly the bounding rect.
(let [[page] (:rum/props own)
canvas (mx/get-ref-dom own (str "canvas" (:id page)))
brect (.getBoundingClientRect canvas)
brect (gpt/point (.-left brect) (.-top brect))
key (events/listen js/document EventType.MOUSEMOVE
#(on-mousemove % page brect))]
(swap! wb/bounding-rect assoc (:id page) brect)
#(on-mousemove % page))]
(assoc own ::eventkey key))))
(defn- canvas-will-unmount

View file

@ -13,7 +13,7 @@
;; Keyboard Shortcuts Handlers
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defonce ^:static +shortcuts+
(defonce ^:const +shortcuts+
{:ctrl+g #(rs/emit! (dw/toggle-flag :grid))
:ctrl+shift+f #(rs/emit! (dw/toggle-flag :drawtools))
:ctrl+shift+i #(rs/emit! (dw/toggle-flag :icons))
@ -31,10 +31,10 @@
;; Keyboard Shortcuts Watcher
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defonce ^:static ^:private +bus+
(defonce ^:const ^:private +bus+
(rx/bus))
(defonce ^:static +stream+
(defonce ^:const +stream+
(rx/to-observable +bus+))
(defn- init-handler