- Units::fix_double(&position);
- double new_position = INFINITY;
-
- double max_rate = edl->get_frame_rate();
- int sample_rate = edl->get_sample_rate();
- if( sample_rate > max_rate ) max_rate = sample_rate;
- double min_movement = max_rate > 0 ? 1. / max_rate : 1e-6;
-
-// 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( fabs(edit_end-position) < min_movement ) continue;
- 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() ) {