diff --git a/Timeline/Control_Sequence.C b/Timeline/Control_Sequence.C index 1608b65..15baef3 100644 --- a/Timeline/Control_Sequence.C +++ b/Timeline/Control_Sequence.C @@ -91,20 +91,27 @@ Control_Sequence::draw ( void ) fl_push_clip( x(), y(), w(), h() ); - draw_box(); + /* draw the box with the ends cut off. */ + draw_box( box(), x() - Fl::box_dx( box() ), y(), w() + Fl::box_dw( box() ), h(), color() ); + + + const int bx = x(); + const int by = y() + Fl::box_dy( box() ); + const int bw = w(); + const int bh = h() - Fl::box_dh( box() ); int X, Y, W, H; - fl_clip_box( x(), y(), w(), h(), X, Y, W, H ); + fl_clip_box( bx, by, bw, bh, X, Y, W, H ); if ( draw_with_gradient ) { Fl_Color target = fl_color_average( color(), FL_WHITE, 0.50f ); - for ( int gy = 0; gy < h(); gy++ ) + for ( int gy = 0; gy < bh; gy++ ) { - fl_color( fl_color_average( target, selection_color(), gy / (float)h()) ); - fl_line( x(), y() + gy, x() + w(), y() + gy ); + fl_color( fl_color_average( target, selection_color(), gy / (float)bh) ); + fl_line( X, by + gy, X + W, by + gy ); } } @@ -112,10 +119,10 @@ Control_Sequence::draw ( void ) { fl_color( fl_darker( color() ) ); - const int inc = h() / 10; + const int inc = bh / 10; if ( inc ) - for ( int gy = 0; gy < h(); gy += inc ) - fl_line( x(), y() + gy, x() + w(), y() + gy ); + for ( int gy = 0; gy < bh; gy += inc ) + fl_line( X, by + gy, X + W, by + gy ); } @@ -140,13 +147,13 @@ Control_Sequence::draw ( void ) { if ( draw_with_gradient ) { - fl_vertex( x(), y() ); - fl_vertex( x(), ry ); + fl_vertex( bx, by ); + fl_vertex( bx, ry ); } else { - fl_vertex( x(), h() + y() ); - fl_vertex( x(), ry ); + fl_vertex( bx, bh + by ); + fl_vertex( bx, ry ); } } @@ -156,13 +163,13 @@ Control_Sequence::draw ( void ) { if ( draw_with_gradient ) { - fl_vertex( x() + w(), ry ); - fl_vertex( x() + w(), y() ); + fl_vertex( bx + bw, ry ); + fl_vertex( bx + bw, by ); } else { - fl_vertex( x() + w(), ry ); - fl_vertex( x() + w(), h() + y() ); + fl_vertex( bx + bw, ry ); + fl_vertex( bx + bw, bh + by ); } break; } diff --git a/Timeline/Sequence.C b/Timeline/Sequence.C index e1afbd5..323d449 100644 --- a/Timeline/Sequence.C +++ b/Timeline/Sequence.C @@ -83,7 +83,8 @@ Sequence::draw ( void ) fl_push_clip( x(), y(), w(), h() ); - draw_box(); + /* draw the box with the ends cut off. */ + draw_box( box(), x() - Fl::box_dx( box() ), y(), w() + Fl::box_dw( box() ), h(), color() ); int X, Y, W, H; diff --git a/Timeline/Timeline.C b/Timeline/Timeline.C index 71a2eab..9565543 100644 --- a/Timeline/Timeline.C +++ b/Timeline/Timeline.C @@ -418,13 +418,6 @@ Timeline::draw ( void ) int bdx = 0; int bdw = 0; - /* FIXME: hack to avoid clobbering the box corners of tracks. */ - if ( tracks->children() ) - { - bdx = Fl::box_dx( tracks->child( 0 )->box() ); - bdw = Fl::box_dw( tracks->child( 0 )->box() ); - } - X = tracks->x() + bdx + 1; Y = tracks->y(); W = tracks->w() - bdw - 1; @@ -513,7 +506,7 @@ Timeline::draw ( void ) int dy = _old_yposition - _yposition; if ( ! dy ) - fl_scroll( X + Track::width(), rulers->y(), rulers->w() - Fl::box_dw( rulers->child(0)->box() ), rulers->h(), dx, 0, draw_clip, this ); + fl_scroll( X + Track::width(), rulers->y(), rulers->w(), rulers->h(), dx, 0, draw_clip, this ); Y = rulers->y() + rulers->h(); H = h() - rulers->h() - hscroll->h();