X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fctimebar.C;h=6929cc12104de8f652c1711c2b4969f7cd1277a3;hb=a4387a272874bd4ed9f010684976f336fa3d0190;hp=9d786441daa96a2ecb0c88bc0268b7af34f05a4d;hpb=95683646dce10ad3f6a8c8c9c9225c69f4841ec5;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/ctimebar.C b/cinelerra-5.1/cinelerra/ctimebar.C index 9d786441..6929cc12 100644 --- a/cinelerra-5.1/cinelerra/ctimebar.C +++ b/cinelerra-5.1/cinelerra/ctimebar.C @@ -64,16 +64,18 @@ void CTimeBar::draw_time() double CTimeBar::pixel_to_position(int pixel) { - double start = 0, length = 0; + double start = 0, end = get_edl_length(); EDL *edl = get_edl(); if( edl ) { - start = edl->local_session->preview_start; - if( start >= 0 ) - length = edl->local_session->preview_end - start; + double preview_start = edl->local_session->preview_start; + double preview_end = edl->local_session->preview_end; + if( preview_end >= 0 || preview_start > 0 ) + start = preview_start; + if( preview_end >= 0 && preview_end < end ) + end = preview_end; } - if( length <= 0 ) - length = get_edl_length(); - return start + (double)pixel * length / get_w(); + if( start > end ) start = end; + return start + (double)pixel * (end - start) / get_w(); } @@ -88,13 +90,10 @@ void CTimeBar::update_cursor() void CTimeBar::select_label(double position) { - EDL *edl = mwindow->edl; - - gui->unlock_window(); - mwindow->gui->mbuttons->transport->handle_transport(STOP, 1, 0, 0); - gui->lock_window(); + gui->stop_transport("CTimeBar::select_label"); - position = mwindow->edl->align_to_frame(position, 1); + EDL *edl = mwindow->edl; + position = edl->align_to_frame(position, 1); if( shift_down() ) { if( position > edl->local_session->get_selectionend(1) / 2 +