X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;ds=sidebyside;f=cinelerra-5.1%2Fcinelerra%2Fmwindowmove.C;h=06fb11cc463c4c76d4204b51baac1c002f92ab3a;hb=2451d3174f3b64d3ce4e311b125813cf2881eca4;hp=b66cf973270bad2cbf9c8a5055ebcc2d54354794;hpb=30bdb85eb33a8ee7ba675038a86c6be59c43d7bd;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/mwindowmove.C b/cinelerra-5.1/cinelerra/mwindowmove.C index b66cf973..06fb11cc 100644 --- a/cinelerra-5.1/cinelerra/mwindowmove.C +++ b/cinelerra-5.1/cinelerra/mwindowmove.C @@ -190,6 +190,12 @@ void MWindow::fit_autos(int doall) max = floor(max*200)/100; } break; + case AUTOGROUPTYPE_SPEED: + if (range < 0.001) { + min = floor(min*5)/100; + max = floor(max*300)/100; + } + break; case AUTOGROUPTYPE_X: case AUTOGROUPTYPE_Y: if (range < 5) { @@ -233,6 +239,7 @@ void MWindow::change_currentautorange(int autogrouptype, int increment, int chan val += 1; break; case AUTOGROUPTYPE_ZOOM: + case AUTOGROUPTYPE_SPEED: if (val == 0) val = 0.001; else @@ -254,6 +261,7 @@ void MWindow::change_currentautorange(int autogrouptype, int increment, int chan val -= 1; break; case AUTOGROUPTYPE_ZOOM: + case AUTOGROUPTYPE_SPEED: if (val > 0) val = val/2; break; case AUTOGROUPTYPE_X: @@ -587,13 +595,10 @@ int MWindow::next_label(int shift_down) TimelinePane *pane = gui->get_focused_pane(); if(edl->local_session->get_selectionend(1) >= (double)edl->local_session->view_start[pane->number] * - edl->local_session->zoom_sample / - edl->session->sample_rate + + edl->local_session->zoom_sample / edl->session->sample_rate + pane->canvas->time_visible() || edl->local_session->get_selectionend(1) < (double)edl->local_session->view_start[pane->number] * - edl->local_session->zoom_sample / - edl->session->sample_rate) - { + edl->local_session->zoom_sample / edl->session->sample_rate) { samplemovement((int64_t)(edl->local_session->get_selectionend(1) * edl->session->sample_rate / edl->local_session->zoom_sample - @@ -642,14 +647,10 @@ int MWindow::prev_label(int shift_down) update_plugin_guis(); TimelinePane *pane = gui->get_focused_pane(); if(edl->local_session->get_selectionstart(1) >= edl->local_session->view_start[pane->number] * - edl->local_session->zoom_sample / - edl->session->sample_rate + - pane->canvas->time_visible() - || + edl->local_session->zoom_sample / edl->session->sample_rate + + pane->canvas->time_visible() || edl->local_session->get_selectionstart(1) < edl->local_session->view_start[pane->number] * - edl->local_session->zoom_sample / - edl->session->sample_rate) - { + edl->local_session->zoom_sample / edl->session->sample_rate ) { samplemovement((int64_t)(edl->local_session->get_selectionstart(1) * edl->session->sample_rate / edl->local_session->zoom_sample - @@ -678,33 +679,11 @@ int MWindow::prev_label(int shift_down) } - - - - int MWindow::next_edit_handle(int shift_down) { double position = edl->local_session->get_selectionend(1); - Units::fix_double(&position); - double new_position = INFINITY; -// Test for edit handles after cursor position - for (Track *track = edl->tracks->first; track; track = track->next) - { - if (track->record) - { - for (Edit *edit = track->edits->first; edit; edit = edit->next) - { - double edit_end = track->from_units(edit->startproject + edit->length); - Units::fix_double(&edit_end); - if (edit_end > position && edit_end < new_position) - new_position = edit_end; - } - } - } - - if(new_position != INFINITY) - { - + double new_position = edl->next_edit(position); + if( new_position < edl->tracks->total_length() ) { edl->local_session->set_selectionend(new_position); //printf("MWindow::next_edit_handle %d\n", shift_down); if(!shift_down) @@ -751,26 +730,9 @@ int MWindow::next_edit_handle(int shift_down) int MWindow::prev_edit_handle(int shift_down) { double position = edl->local_session->get_selectionstart(1); - double new_position = -1; - Units::fix_double(&position); -// Test for edit handles before cursor position - for (Track *track = edl->tracks->first; track; track = track->next) - { - if (track->record) - { - for (Edit *edit = track->edits->first; edit; edit = edit->next) - { - double edit_end = track->from_units(edit->startproject); - Units::fix_double(&edit_end); - if (edit_end < position && edit_end > new_position) - new_position = edit_end; - } - } - } - - if(new_position != -1) - { + double new_position = edl->prev_edit(position); + if(new_position != -1) { edl->local_session->set_selectionstart(new_position); //printf("MWindow::next_edit_handle %d\n", shift_down); if(!shift_down) @@ -876,6 +838,7 @@ void MWindow::split_x() gui->mainmenu->update_toggles(0); gui->update_pane_dividers(); gui->update_cursor(); + gui->draw_samplemovement(); // required to get new widgets to appear gui->show_window(); @@ -899,6 +862,7 @@ void MWindow::split_y() gui->mainmenu->update_toggles(0); gui->update_pane_dividers(); gui->update_cursor(); + gui->draw_trackmovement(); // required to get new widgets to appear gui->show_window(); gui->resource_thread->start_draw();