MCPcopy Create free account
hub / github.com/audacity/audacity / DoTrackSolo

Method DoTrackSolo

src/TrackUtilities.cpp:101–141  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

99}
100
101void TrackUtilities::DoTrackSolo(
102 AudacityProject &project, Track &track, bool exclusive)
103{
104 auto &tracks = TrackList::Get( project );
105
106 const auto pt = dynamic_cast<PlayableTrack *>(&track);
107 if (!pt)
108 return;
109 bool bWasSolo = pt->GetSolo();
110
111 bool simple = (TracksBehaviorsSolo.ReadEnum() == SoloBehaviorSimple);
112 bool bSoloMultiple = !simple ^ exclusive;
113
114 // Standard and Simple solo have opposite defaults:
115 // Standard - Behaves as individual buttons, shift=radio buttons
116 // Simple - Behaves as radio buttons, shift=individual
117 // In addition, Simple solo will mute/unmute tracks
118 // when in standard radio button mode.
119 if (bSoloMultiple)
120 pt->SetSolo(!bWasSolo);
121 else {
122 // Normal click solo this track only, mute everything else.
123 // OR unmute and unsolo everything.
124 for (auto playable : tracks.Any<PlayableTrack>()) {
125 bool chosen = (&track == playable);
126 if (chosen) {
127 playable->SetSolo(!bWasSolo);
128 if (simple)
129 playable->SetMute(false);
130 }
131 else {
132 playable->SetSolo(false);
133 if (simple)
134 playable->SetMute(!bWasSolo);
135 }
136 }
137 }
138 ProjectHistory::Get( project ).ModifyState(true);
139
140 TrackFocus::Get( project ).UpdateAccessibility();
141}
142
143void TrackUtilities::DoRemoveTrack(AudacityProject &project, Track &toRemove)
144{

Callers

nothing calls this directly

Calls 7

GetFunction · 0.85
ReadEnumMethod · 0.80
SetSoloMethod · 0.80
SetMuteMethod · 0.80
GetSoloMethod · 0.45
ModifyStateMethod · 0.45
UpdateAccessibilityMethod · 0.45

Tested by

no test coverage detected