Add MIDI inputs to UI, with focused pattern deck to route input
[SugarCubes.git] / _UIFramework.pde
index ba5a8c8e2b8ac1cd1a10b6887fb5b24fdd2befd6..aff72fe46a891d93df317c8478ab3976e6598d5d 100644 (file)
@@ -602,11 +602,28 @@ public class UIParameterSlider extends UIParameterControl {
   }
   
   private boolean editing = false;
+  private long lastClick = 0;
+  private float doubleClickMode = 0;
+  private float doubleClickX = 0;
   protected void onMousePressed(float mx, float my) {
+    long now = millis();
     float handleLeft = 4 + parameter.getValuef() * (w-8-handleWidth);
     if (mx >= handleLeft && mx < handleLeft + handleWidth) {
       editing = true;
+    } else {
+      if ((now - lastClick) < 300 && abs(mx - doubleClickX) < 3) {
+        parameter.setValue(doubleClickMode);  
+      }
+      doubleClickX = mx;
+      if (mx < w*.25) {
+        doubleClickMode = 0;
+      } else if (mx > w*.75) {
+        doubleClickMode = 1;
+      } else {
+        doubleClickMode = 0.5;
+      }
     }
+    lastClick = now;
   }
   
   protected void onMouseReleased(float mx, float my) {
@@ -734,8 +751,8 @@ public class UIScrollList extends UIObject {
   
   public void setScrollOffset(int offset) {
     scrollOffset = constrain(offset, 0, items.size() - numVisibleItems);
-    scrollYStart = (int) (scrollOffset * h / items.size());
-    scrollYHeight = (int) (numVisibleItems * h / (float) items.size());
+    scrollYStart = round(scrollOffset * h / items.size());
+    scrollYHeight = round(numVisibleItems * h / items.size());
     redraw();
   }