bool Track::IsSyncLockSelected() const { #ifdef EXPERIMENTAL_SYNC_LOCK AudacityProject *p = GetActiveProject(); if (!p || !p->IsSyncLocked()) return false; auto pList = mList.lock(); if (!pList) return false; auto shTrack = this->SubstituteOriginalTrack(); if (!shTrack) return false; const auto pTrack = shTrack.get(); auto trackRange = TrackList::SyncLockGroup( pTrack ); if (trackRange.size() <= 1) { // Not in a sync-locked group. // Return true iff selected and of a sync-lockable type. return (IsSyncLockableNonLabelTrack( pTrack ) || track_cast<const LabelTrack*>( pTrack )) && GetSelected(); } // Return true iff any track in the group is selected. return *(trackRange + &Track::IsSelected).begin(); #endif return false; }
bool Track::IsSyncLockSelected() const { #ifdef EXPERIMENTAL_SYNC_LOCK AudacityProject *p = GetActiveProject(); if (!p || !p->IsSyncLocked()) return false; SyncLockedTracksIterator git(mList); Track *t = git.StartWith(const_cast<Track*>(this)); if (!t) { // Not in a sync-locked group. return ((this->GetKind() == Track::Wave) || (this->GetKind() == Track::Label)) && GetSelected(); } for (; t; t = git.Next()) { if (t->GetSelected()) return true; } #endif return false; }