Mercurial > hg > indyvon
changeset 9:160e9ec945a2
Fix dispatching of mouse motion events.
author | Mikhail Kryshen <mikhail@kryshen.net> |
---|---|
date | Sun, 13 Jun 2010 02:49:09 +0400 |
parents | c53ec3052ae7 |
children | 9af27ccccfac |
files | src/indyvon/core.clj |
diffstat | 1 files changed, 27 insertions(+), 13 deletions(-) [+] |
line diff
1.1 --- a/src/indyvon/core.clj Sat Jun 12 06:06:41 2010 +0400 1.2 +++ b/src/indyvon/core.clj Sun Jun 13 02:49:09 2010 +0400 1.3 @@ -78,10 +78,6 @@ 1.4 (hovered? [this layer]) 1.5 (picked? [this layer])) 1.6 1.7 -(defn- assoc-conj [vmap key val] 1.8 - "Add val to the sequence associated with key in vmap." 1.9 - (assoc vmap key (conj (get vmap key) val))) 1.10 - 1.11 (defn- registered-parent 1.12 "Returns first context parent registered for event processing." 1.13 [context-tree context] 1.14 @@ -93,8 +89,9 @@ 1.15 1.16 (defn- register-context 1.17 [context-tree context] 1.18 - (assoc-conj 1.19 - context-tree (registered-parent context-tree context) context)) 1.20 + (let [parent (registered-parent context-tree context)] 1.21 + (assoc context-tree parent (conj (context-tree parent) context) 1.22 + context nil))) 1.23 1.24 (defn- inside? 1.25 ([x y context] 1.26 @@ -228,15 +225,23 @@ 1.27 (reify-layer 1.28 (render! [this context g] 1.29 (register (:dispatcher context) context) 1.30 + (.setColor g Color/WHITE) 1.31 + (.fillRect g 0 0 (:width context) (:height context))) 1.32 + (size [this context] [50 30]))) 1.33 + (def layer2 1.34 + (reify-layer 1.35 + (render! [this context g] 1.36 + (register (:dispatcher context) context) 1.37 (.setColor g Color/BLUE) 1.38 - (.fillRect g 0 0 50 30)) 1.39 - (size [this context] [50 30]))) 1.40 + (.fillRect g 0 0 (:width context) (:height context)) 1.41 + (render-layer! context layer1 g 10 5)) 1.42 + (size [this context] [70 65]))) 1.43 (def layer 1.44 (reify-layer 1.45 (render! [this context g] 1.46 - (register (:dispatcher context) context) 1.47 + ;;(register (:dispatcher context) context) 1.48 (.drawLine g 0 0 (:width context) (:height context)) 1.49 - (render-layer! context layer1 g 15 20)) 1.50 + (render-layer! context layer2 g 15 20)) 1.51 (size [this context] [100 100]))) 1.52 (doto frame 1.53 (.addWindowListener 1.54 @@ -248,12 +253,21 @@ 1.55 1.56 (defmethod handle-layer-event [layer1 MouseEvent/MOUSE_ENTERED] 1.57 [layer context event] 1.58 - (println "ENTERED")) 1.59 + (println "1 ENTERED")) 1.60 (defmethod handle-layer-event [layer1 MouseEvent/MOUSE_EXITED] 1.61 [layer context event] 1.62 - (println "EXITED")) 1.63 + (println "1 EXITED")) 1.64 (defmethod handle-layer-event [layer1 MouseEvent/MOUSE_MOVED] 1.65 [layer context event] 1.66 - (println "MOVED")) 1.67 + (println "1 MOVED")) 1.68 + (defmethod handle-layer-event [layer2 MouseEvent/MOUSE_ENTERED] 1.69 + [layer context event] 1.70 + (println "2 ENTERED")) 1.71 + (defmethod handle-layer-event [layer2 MouseEvent/MOUSE_EXITED] 1.72 + [layer context event] 1.73 + (println "2 EXITED")) 1.74 + (defmethod handle-layer-event [layer2 MouseEvent/MOUSE_MOVED] 1.75 + [layer context event] 1.76 + (println "2 MOVED")) 1.77 ) 1.78 ) 1.79 \ No newline at end of file