Try to clean up region dragging.

This commit is contained in:
Jonathan Moore Liles 2008-05-02 00:52:50 -05:00
parent 0f402d0851
commit c8bb330e8e
4 changed files with 16 additions and 13 deletions

View File

@ -420,7 +420,7 @@ Region::handle ( int m )
if ( ! _drag )
{
begin_drag( Drag( x() - X, y() - Y ) );
begin_drag( Drag( x() - X, y() - Y, x_to_offset( X ) ) );
_log.hold();
}

View File

@ -180,30 +180,30 @@ Sequence_Widget::handle ( int m )
return 1;
case FL_DRAG:
case FL_DND_DRAG:
{
if ( ! _drag )
{
begin_drag ( Drag( x() - X, y() - Y ) );
begin_drag ( Drag( x() - X, y() - Y, x_to_offset( X ) ) );
_log.hold();
}
fl_cursor( FL_CURSOR_MOVE );
const int ox = _drag->x;
redraw();
if ( timeline->ts_to_x( timeline->xoffset ) + ox + X > _track->x() )
{
int nx = (ox + X) - _track->x();
const nframes_t of = timeline->x_to_offset( X );
// _r->offset = timeline->x_to_ts( nx ) + timeline->xoffset;
offset( timeline->x_to_ts( nx ) + timeline->xoffset );
if ( of >= _drag->offset )
{
_r->offset = of - _drag->offset;
if ( Sequence_Widget::_current == this )
_track->snap( this );
}
else
_r->offset = 0;
}
if ( X >= _track->x() + _track->w() ||
X <= _track->x() )

View File

@ -35,9 +35,9 @@ struct Drag
int y;
int state;
Sequence_Widget *original;
nframes_t offset;
Drag( int X, int Y ) : x( X ), y( Y ) { state = 0; }
Drag( int X, int Y, nframes_t offset=0 ) : x( X ), y( Y ), offset( offset ) { state = 0; }
};
struct Range

View File

@ -562,6 +562,9 @@ Timeline::resize ( int X, int Y, int W, int H )
void
Timeline::draw ( void )
{
if ( ! visible_r() )
return;
int X, Y, W, H;
int bdx = 0;