           (recur (inc i) cur-val)
           (recur (inc i) max-val))))))
 
-(defn draw-select-rect! [canvas-width canvas-height canvas-context x mouse-down?]
+(defn draw-select-rect! [canvas-width canvas-height canvas-context mouse-down? mouse-over?]
   (.clearRect canvas-context 0 0 canvas-width canvas-height)
-  (.fillRect canvas-context x 0 100 100)
-  (when mouse-down?
+  (.fillRect canvas-context 0 0 100 100)
+  (cond
+    mouse-down?
+    (do
       (aset canvas-context "strokeStyle" "aliceblue")
       (aset canvas-context "lineWidth" 6)
-      (.strokeRect canvas-context x 2 100 96)))
+      (.strokeRect canvas-context 0 2 100 96))
+    mouse-over?
+    (do
+      (aset canvas-context "strokeStyle" "aliceblue")
+      (aset canvas-context "lineWidth" 2)
+      (.strokeRect canvas-context 0 0 100 100))))
 
 (defn draw-buffer! [width height canvas-context data]
   (let [step (.ceil js/Math (/ (.-length data) width))

    om/IInitState
    (init-state [_] {:canvas nil
                     :canvas-context nil
                     :canvas-width 400
                     :canvas-height 100
                     :mouse-down false
                     :x-offset 0})

    om/IDidMount


    om/IRenderState
    (render-state [_ {:keys [canvas-width canvas-height]}]
      (dom/div #js {:style  #js {:position "relative"}}
        (dom/canvas #js {:width  canvas-width
                         :height canvas-height
                         :ref    "canvas-ref"}
                    "no canvas")
               (om/build wave-selector-view data)))))

(defn buffers-list-view [data owner]
