|
@@ -204,17 +204,23 @@ Sequence::length ( void ) const |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
Sequence_Widget * |
|
|
Sequence_Widget * |
|
|
Sequence::event_widget ( void ) |
|
|
|
|
|
|
|
|
Sequence::widget_at ( nframes_t ts, int Y ) |
|
|
{ |
|
|
{ |
|
|
nframes_t ets = timeline->xoffset + timeline->x_to_ts( Fl::event_x() - x() ); |
|
|
|
|
|
for ( list <Sequence_Widget *>::const_reverse_iterator r = _widgets.rbegin(); r != _widgets.rend(); ++r ) |
|
|
|
|
|
if ( ets > (*r)->start() && ets < (*r)->start() + (*r)->length() |
|
|
|
|
|
&& Fl::event_y() >= (*r)->y() && Fl::event_y() <= (*r)->y() + (*r)->h() ) |
|
|
|
|
|
|
|
|
for ( list <Sequence_Widget *>::const_reverse_iterator r = _widgets.rbegin(); r != _widgets.rend(); ++r ) |
|
|
|
|
|
if ( ts >= (*r)->start() && ts <= (*r)->start() + (*r)->length() |
|
|
|
|
|
&& Y >= (*r)->y() && Y <= (*r)->y() + (*r)->h() ) |
|
|
return (*r); |
|
|
return (*r); |
|
|
|
|
|
|
|
|
return NULL; |
|
|
return NULL; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
Sequence_Widget * |
|
|
|
|
|
Sequence::event_widget ( void ) |
|
|
|
|
|
{ |
|
|
|
|
|
nframes_t ets = timeline->xoffset + timeline->x_to_ts( Fl::event_x() - x() ); |
|
|
|
|
|
return widget_at( ets, Fl::event_y() ); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
void |
|
|
void |
|
|
Sequence::select_range ( int X, int W ) |
|
|
Sequence::select_range ( int X, int W ) |
|
|
{ |
|
|
{ |
|
@@ -355,6 +361,18 @@ Sequence::handle ( int m ) |
|
|
transport->locate( prev( transport->frame ) ); |
|
|
transport->locate( prev( transport->frame ) ); |
|
|
return 1; |
|
|
return 1; |
|
|
} |
|
|
} |
|
|
|
|
|
else if ( Fl::test_shortcut( FL_CTRL + ' ' ) ) |
|
|
|
|
|
{ |
|
|
|
|
|
Sequence_Widget *r = widget_at( transport->frame, y() ); |
|
|
|
|
|
|
|
|
|
|
|
if ( r ) |
|
|
|
|
|
{ |
|
|
|
|
|
if ( r->selected() ) |
|
|
|
|
|
r->deselect(); |
|
|
|
|
|
else |
|
|
|
|
|
r->select(); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
else |
|
|
else |
|
|
{ |
|
|
{ |
|
|
switch ( Fl::event_key() ) |
|
|
switch ( Fl::event_key() ) |
|
|