Timeline: Allow recording in punch mode when playhead is in the middle of a punch cursor.
This commit is contained in:
parent
7770610d32
commit
e6313394cd
|
@ -60,14 +60,29 @@ Timeline::record ( void )
|
|||
{
|
||||
DMESSAGE( "Finding next punch region following frame %lu...", (unsigned long)frame);
|
||||
|
||||
const Sequence_Widget *w = punch_cursor_track->next( frame );
|
||||
const Sequence_Widget *p = punch_cursor_track->prev( frame );
|
||||
const Sequence_Widget *n = punch_cursor_track->next( frame );
|
||||
|
||||
if ( w && w->start() >= frame )
|
||||
if (p || n )
|
||||
{
|
||||
frame = w->start();
|
||||
_punch_out_frame = w->start() + w->length();
|
||||
if ( p && frame > p->start() && frame < p->start() + p->length() )
|
||||
{
|
||||
/* recording started in the middle of a punch
|
||||
* cursor... Just start recording and punch out at the
|
||||
* end of it */
|
||||
_punch_out_frame = p->start() + p->length();
|
||||
}
|
||||
else if ( n && n->start() >= frame )
|
||||
{
|
||||
/* recording started outside of a punch cursor, set
|
||||
* punch in frame to beginning of next cursor */
|
||||
frame = n->start();
|
||||
_punch_out_frame = n->start() + n->length();
|
||||
}
|
||||
|
||||
DMESSAGE( "Punch enabled... Will punch in at frame %lu.", (unsigned long)frame );
|
||||
DMESSAGE( "Punch enabled... Range %lu:%lu",
|
||||
(unsigned long)frame,
|
||||
(unsigned long)_punch_out_frame);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue