... as we did last relase for import; making several header files unnecessary.
This breaks up a strongly connected component of 9, which was the largest
remaining. Now the largest remaining is 5.
... instead of keeping an exhaustive list of them with hardcoded preference
paths. And some duplication of string literals for those paths is eliminated.
One small piece of improvements of preference path handling.
Problem:
Currently calling Track::EnsureVisible() also sets the track as focus.
In Audacity 2.3.3 the timing of the code to set the focus was changed. Rather than a direct call, an event is queued, and then the focus is set. This has changed the timing of the focus event which is sent with respect to other focus and name change events. In particular in the case of toggling the selectness of the focused track, this moved the focus event to be after the name change event.
These changes only had an effect on NVDA - Jaws and Narrator were unaffected.
The introduction of this bug has highlighted an existing problem.
1. There are a small number of existing cases where a track needs to be visible, but where it is already the focus, and so setting the focus is unnecessary. For example, pressing Enter to toggle whether a track is selected.
2. Some of the Audacity code which calls EnsureVisible() is written with the assumption that EnsureVisible() doesn't set the focus, and so there are unnecessary focus events. Whilst other code which calls EnsureVisible() assumes that it also sets the focus. Confusion.
The Fix:
Remove the setting of focus from within Track::EnsureVisible(), and so remove the unnecessary focus events.
Calls to set the focus were added before calls to EnsureVisible where the code was relying on EnsureVisible to set the focus. In TrackPanel::ProcessUIHandleResult, and TrackPanel::OnMouseEvent, I wasn't sure if the focus needed to be set, so called it anyway to ensure that the behaviour did not change.
So I would like to remove the setting of focus from within Track::EnsureVisible(), and add explicit calls to set the focus where necessary.
I think this would make the code clearer, remove unnecessary calls to set the focus, and make it easier to keep NVDA happy.
It gets included in some pull requests, so keep it short, and refer to the wiki.
The wiki page needs to be less off putting too, but that's for another day.
The Calf plugin suite exposes Event ports which is currently not supported or defined in `liblilv`, so instead of flat rejecting the filter, test the port name for `Events` and allow them to load.
To get a split view: move the mouse near the top or bottom of a wave track view
until the cursor changes to "north-south", then drag and release.
When a separation of views exists, the separation line can be dragged again.
You can drag until one of the sub-views shrinks to nothing. There is a certain
snapping (now 5 pixels) to make this easier and prevent very small views shorter
than that.
Notes:
- ESC key before mouse release cancels the drag, as expected.
- Either wave or spectrum view can be on top, depending on how you drag.
- Please note, and test, that the vertical ruler also divides in two portions,
and that all mouse drag actions (including spectral selection) in the track
view or the ruler are available, and only those proper for the sub-view.
- If you have a stereo track, then the wave and spectrum views keep the same
height proportions in the two channels.
- If you want to drag the channel separator instead, unfortunately there is no
difference yet between the preview cursors. North-south seems the most sensible
cursor for both of these drags, among pre-defined cursors.
- The drop-down menu of the track control panel may now have two checkmarks, for
spectrum and for either Waveform or Waveform dB. Selecting any of those items
causes that view type to become the sole view.
- In my opinion, the behavior above is not satisfactory. I think the more
consistent user interface would have only Waveform and Spectrum items as a
non-exclusive radio button choice in the menu, while the choice between linear
and dB waveform view should be part of the right-mouse popup menu in the
vertical ruler, analogous to the choice among scales for spectrum view.
- The 'VIEW property of *TRACK* in Nyquist is now a list rather than an atom
when there is a split view. None of the existing .ny plug-ins that ship with
Audacity need to be changed, because they only ever test whether the property
is nil, indicating that an effect preview is being computed.
This avoids catastrophic rounding errors which can even lead to filter
instability in some cases. This is a real problem in the coming IIR envelope
detector.
This is based on my old loudness effect prototype which was included
in the Normalize effect.
Create all source files and add them to all build systems.
Currently, the effect only consists of a GUI mockup.
Create Octave+mod-script-pipe based dummy unit-test as well.