... it's either the source of the connection that is being destroyed, or other
object (such as an ancestor window) transitively owning it and so causing it to
be destroyed too;
or, the sink is being destroyed, and that sink is a wxEvtHandler (which is
always so for Disconnect, though not for Unbind in case Bind was passed a
member function of a non-wxEvtHandler).
wxWidgets takes care of erasing the connection in such cases.
This removes most calls to Disconnect and Unbind. Many destructors shrank to
nothing.
Notably, in case of popup menu handling, the call to Disconnect is not removable
because the object being destroyed is neither the source nor the sink.
Problem was that on mac enable/disable clears the colour back to black.
The easiest workaround was to create a new class auStaticText that does all that we
need for wxStaticText.
This commit adds note tracks into the mixerboard. It's done as a separate
slider this time instead of via subclasses (as PRL requested), so which
should be easier to use.
This also changes some of the gaurds to EXPERIMENTAL_MIDI_OUT from
USE_MIDI, as it's meaningless to have the note track code in mixerboard
when it cannot do anything (depends on methods that exist behind
EXPERIMENTAL_MIDI_OUT).
... Should have no effect on generated code, except perhaps some slight faster
virtual function calls. Mostly useful as documentation of design intent.
Tried to mark every one of our classes that inherits from another, or is a
base for others, or has abstract virtual functions, and a few others besides.
// I suggest that when this is no longer experimental, rather than all these #ifdef's,
// this be done by factoring, i.e., add two subclasses to MixerTrackCluster,
// MixerNoteTrackCluster and MixerWaveTrackCluster, such that all the common
// code is in the parent, and these #ifdef's are only around
// MixerNoteTrackCluster rather than sprinkled throughout MixerTrackCluster.
This bug was introduced in commit 10680 and caused in MixerTrackCluster::UpdatePan(), by using USE_MIDI (which is on in releases) instead of EXPERIMENTAL_MIDI_OUT (which is off). It checked whether a NoteTrack pointer was NULL, and if not, hid the Pan slider (not used in NoteTrack clusters). But an invalid pointer is non-null, so was causing the Pan slider to always be hidden.