void TimelineDock::chooseClipAtPosition(int position, int& trackIndex, int& clipIndex) { QScopedPointer<Mlt::Producer> clip; // Start by checking for a hit at the specified track if (trackIndex != -1 && !isTrackLocked(trackIndex)) { clipIndex = clipIndexAtPosition(trackIndex, position); if (clipIndex != -1 && !isBlank(trackIndex, clipIndex)) return; } // Next we try the current track trackIndex = currentTrack(); clipIndex = qMin(clipIndexAtPosition(trackIndex, position), clipCount(trackIndex) - 1); if (!isTrackLocked(trackIndex) && clipIndex != -1 && !isBlank(trackIndex, clipIndex)) { return; } // if there was no hit, look through the other tracks for (trackIndex = 0; trackIndex < m_model.trackList().size(); (trackIndex)++) { if (trackIndex == currentTrack()) continue; if (isTrackLocked(trackIndex)) continue; clipIndex = clipIndexAtPosition(trackIndex, position); if (clipIndex != -1 && !isBlank(trackIndex, clipIndex)) return; } trackIndex = -1; clipIndex = -1; }
void TimelineDock::clearSelectionIfInvalid() { int count = clipCount(currentTrack()); QList<int> newSelection; foreach (int index, selection()) { if (index >= count) continue; newSelection << index; } setSelection(newSelection); }