fix refresh_frame color_model test
[goodguy/history.git] / cinelerra-5.1 / cinelerra / mwindowmove.C
index b66cf973270bad2cbf9c8a5055ebcc2d54354794..06fb11cc463c4c76d4204b51baac1c002f92ab3a 100644 (file)
@@ -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();