Browse Source

Make selection move together.

tags/non-daw-v1.1.0
Jonathan Moore Liles 17 years ago
parent
commit
ee577bc06b
3 changed files with 41 additions and 19 deletions
  1. +14
    -13
      Region.C
  2. +2
    -1
      Track_Widget.C
  3. +25
    -5
      Track_Widget.H

+ 14
- 13
Region.C View File

@@ -235,7 +235,7 @@ Region::handle ( int m )
break; break;
case 3: case 3:
trim( trimming = RIGHT, X ); trim( trimming = RIGHT, X );
_log.hold();
_log.hold();
break; break;
case 2: case 2:
{ {
@@ -360,21 +360,22 @@ Region::handle ( int m )
} }
} }


if ( Y > y() + h() )
if ( ! selected() )
{ {
if ( _track->next() )
if ( Y > _track->next()->y() )
_track->next()->add( this );
}
else
if ( Y < y() )
if ( Y > y() + h() )
{ {
if ( _track->prev() )
if ( Y < _track->prev()->y() + _track->prev()->h() )
_track->prev()->add( this );
if ( _track->next() )
if ( Y > _track->next()->y() )
_track->next()->add( this );
} }

// _track->damage( FL_DAMAGE_EXPOSE, x(), y(), w(), h() );
else
if ( Y < y() )
{
if ( _track->prev() )
if ( Y < _track->prev()->y() + _track->prev()->h() )
_track->prev()->add( this );
}
}


ret = Track_Widget::handle( m ); ret = Track_Widget::handle( m );
return ret | 1; return ret | 1;


+ 2
- 1
Track_Widget.C View File

@@ -134,7 +134,8 @@ Track_Widget::handle ( int m )
{ {
int nx = (ox + X) - _track->x(); int nx = (ox + X) - _track->x();


_offset = timeline->x_to_ts( nx ) + timeline->xoffset;
// _offset = timeline->x_to_ts( nx ) + timeline->xoffset;
offset( timeline->x_to_ts( nx ) + timeline->xoffset );


_track->snap( this ); _track->snap( this );
} }


+ 25
- 5
Track_Widget.H View File

@@ -85,13 +85,33 @@ public:
delete _selection.front(); delete _selection.front();
} }


static void
move_selected ( long d )
void
offset ( nframes_t where )
{ {
for ( list <Track_Widget *>::iterator i = _selection.begin(); i != _selection.end(); i++ )
i->_offset += d;

if ( ! selected() )
{
redraw();
_offset = where;
}
else
{
long d = where - _offset;

for ( list <Track_Widget *>::iterator i = _selection.begin(); i != _selection.end(); i++ )
{
(*i)->redraw();

if ( d < 0 )
(*i)->_offset -= 0 - d;
else
(*i)->_offset += d;

}
}
} }



Fl_Group * parent ( void ) const { return _track; } Fl_Group * parent ( void ) const { return _track; }


int scroll_x ( void ) const { return timeline->ts_to_x( timeline->xoffset ); } int scroll_x ( void ) const { return timeline->ts_to_x( timeline->xoffset ); }
@@ -124,7 +144,7 @@ public:
void track ( Track *t ) { _track = t; } void track ( Track *t ) { _track = t; }


nframes_t offset ( void ) const { return _offset; } nframes_t offset ( void ) const { return _offset; }
void offset ( nframes_t o ) { _offset = o; }
// void offset ( nframes_t o ) { _offset = o; }


void end ( nframes_t v ) { _end = v; } void end ( nframes_t v ) { _end = v; }
nframes_t end ( void ) const { return _end; } nframes_t end ( void ) const { return _end; }


Loading…
Cancel
Save