| 78 | } |
| 79 | |
| 80 | bool SyncLock::IsSyncLockSelected(const Track &track) |
| 81 | { |
| 82 | auto pList = track.GetOwner(); |
| 83 | if (!pList) |
| 84 | return false; |
| 85 | |
| 86 | auto p = pList->GetOwner(); |
| 87 | if (!p || !SyncLockState::Get( *p ).IsSyncLocked()) |
| 88 | return false; |
| 89 | |
| 90 | auto &orig = PendingTracks::Get(*p).SubstituteOriginalTrack(track); |
| 91 | auto trackRange = Group(orig); |
| 92 | |
| 93 | if (trackRange.size() <= 1) { |
| 94 | // Not in a sync-locked group. |
| 95 | // Return true iff selected and of a sync-lockable type. |
| 96 | return (IsSyncLockableNonSeparatorTrack(orig) || |
| 97 | IsSeparatorTrack(orig)) && track.GetSelected(); |
| 98 | } |
| 99 | |
| 100 | // Return true iff any track in the group is selected. |
| 101 | return *(trackRange + &Track::IsSelected).begin(); |
| 102 | } |
| 103 | |
| 104 | bool SyncLock::IsSelectedOrSyncLockSelected(const Track &track) |
| 105 | { |
no test coverage detected