Timeline: Don't do FL_DAMAGE_SCROLL unless the viewport has actually moved...

This commit is contained in:
Jonathan Moore Liles 2012-04-01 18:28:02 -07:00
parent 9667f98995
commit 9896970ed0
1 changed files with 15 additions and 8 deletions

View File

@ -988,16 +988,19 @@ Timeline::draw ( void )
else else
fl_scroll( X, Y, W, H, dx, dy, draw_clip, this ); fl_scroll( X, Y, W, H, dx, dy, draw_clip, this );
} }
if ( damage() & FL_DAMAGE_CHILD ) if ( damage() & FL_DAMAGE_CHILD )
{ {
fl_push_clip( rulers->x(), rulers->y(), rulers->w(), rulers->h() ); fl_push_clip( rulers->x(), rulers->y(), rulers->w(), rulers->h() );
update_child( *rulers ); update_child( *rulers );
fl_pop_clip(); fl_pop_clip();
fl_push_clip( tracks->x(), rulers->y() + rulers->h(), tracks->w(), h() - rulers->h() - hscroll->h() ); if ( ! ( damage() & FL_DAMAGE_SCROLL ) )
update_child( *tracks ); {
fl_pop_clip(); fl_push_clip( tracks->x(), rulers->y() + rulers->h(), tracks->w(), h() - rulers->h() - hscroll->h() );
update_child( *tracks );
fl_pop_clip();
}
update_child( *hscroll ); update_child( *hscroll );
update_child( *vscroll ); update_child( *vscroll );
@ -1009,8 +1012,6 @@ done:
_old_xposition = xoffset; _old_xposition = xoffset;
_old_yposition = _yposition; _old_yposition = _yposition;
} }
/** draw a single cursor line at /frame/ with color /color/ using symbol routine /symbol/ for the cap */ /** draw a single cursor line at /frame/ with color /color/ using symbol routine /symbol/ for the cap */
@ -1419,7 +1420,10 @@ Timeline::xposition ( int X )
{ {
xoffset = x_to_ts( X ); xoffset = x_to_ts( X );
damage( FL_DAMAGE_SCROLL ); int dx = ts_to_x( _old_xposition ) - ts_to_x( xoffset );
if ( dx )
damage( FL_DAMAGE_SCROLL );
} }
/** set vertical scroll position to absolute pixel coordinate /Y/ */ /** set vertical scroll position to absolute pixel coordinate /Y/ */
@ -1428,7 +1432,10 @@ Timeline::yposition ( int Y )
{ {
_yposition = Y; _yposition = Y;
damage( FL_DAMAGE_SCROLL ); int dy = _old_yposition - _yposition;
if ( dy )
damage( FL_DAMAGE_SCROLL );
} }
/** zoom in by one zoom step */ /** zoom in by one zoom step */