... and Track::GetOwner() is publicized, so that now you can find the
the AudacityProject, if any, that owns a given Track; this will help eliminate
some uses of GetActiveProject
... This changes visible behavior.
If a realtime effect was open (say, AUGraphicEQ on Mac), and there were multiple
projects, then the window was associated with one of the projects.
But the "Apply" button could apply the effect to the active project, even if
that was not the associated one. But the associated project was queried for
the existence of a selection.
Now, EffectUIHost::OnApply consistently examines and changes only the associated
project, even if it is not active.
You have to close the window and reopen it with the other project if you really
want to change the other.
You can't have two realtime effects open at once, even if for different
projects. To overcome that limitation, we would have to make
RealtimeEffectsManager store state per-project, not globally.
... by passing parent as reference, not pointer, and testing in the dialog
factory function.
This is important so that we know the lifetime of an effect dialog, even when
it is non-modal, is bounded by the lifetime of the associated project.
If at any point this needs to be disabled, go into
"Settings -> Actions" for the Github Audacity project and
select the "Disable Actions for this repository" radio button.
Or, edit build.yml and follow the instructions at the top to
disable the action.
Recommits most of f1ee1689c695db13ef4cfc159e9a7d6fd4a23ccd
but without the SDKROOT and MACOSX_DEPLOYMENT_TARGET changes.
We will want to make those changes eventually though and must
do so before full testing begins for next release.
... EffectUI (renamed from EffectRack) includes the experimental rack and other
non-experimental dialog handling. It has a one-way dependency on EffectManager,
which uses Effect.
This is also preliminary to removing other calls to GetActiveProject.
... and you press Preview in Spectrogram preferences.
And complete null checks on GetActiveProject calls in src/prefs.
And in fact, don't even show the useless Preview button when there is no
project.
... because that will be needed for elimination of some GetActiveProject()
calls. Because some overrides need to find the focused track, but that may
mutate the project by setting the focused track when it wasn't yet defined.
This removes dependencies on older SDKs, fixes a signing
issue, reinstates 10.7 as the minimum supported MacOS version,
and cleans out some (legacy) library handling.
It must be signed with a "Developer ID Application" certificate
and not the "Developer ID Installer" certificate.
And make sure to sign the app before copying it to the temporary
DMG folder.