+ Container::touch_press(drag_start_x, drag_start_y, finger);
+ if(touch_focus)
+ set_selected_item(touch_focus);
+ Container::touch_motion(x, y, finger);
+ Container::touch_release(x, y, finger);
+ }
+ dragging = false;
+ }
+}
+
+void List::touch_motion(int, int y, unsigned finger)
+{
+ if(finger==0 && !items.empty() && dragging)
+ {
+ int dy = y-drag_start_y;
+ if(dy>0 && first<max_scroll)
+ {
+ int item_h = items[first]->get_geometry().h;
+ if(dy>item_h)
+ {
+ drag_start_y += item_h;
+ slider.set_value(max_scroll-(first+1));
+ }
+ }
+ else if(dy<0 && first>0)
+ {
+ int item_h = items[first-1]->get_geometry().h;
+ if(-dy>item_h)
+ {
+ drag_start_y -= item_h;
+ slider.set_value(max_scroll-(first-1));
+ }