+// x does not reliably draw a really big rectangle
+void TrackCanvas::draw_selected(int x, int y, int w, int h)
+{
+ int x1 = bmax(x, 0), x2 = bmin(x+w, get_w());
+ if( x1 > x2 ) return;
+ int y1 = bmax(y, 0), y2 = bmin(y+h, get_h());
+ if( y1 > y2 ) return;
+ if( x >= 0 && x < get_w() ) draw_line(x,y1, x,y2);
+ if( x+w >= 0 && x+w < get_w() ) draw_line(x+w,y1, x+w,y2);
+ if( y >= 0 && y < get_h() ) draw_line(x1,y, x2,y);
+ if( y+h >= 0 && y+h < get_h() ) draw_line(x1,y+h, x2,y+h);
+}
+