... when grouping by two criteria (publisher and name or type and name).
Use a stable sort for the second sort so that the minor sort (done first) is
sure not to be destoyed.
Maybe this never mattered (depending on the implementation of std::sort and
its threshold for doing small sorts by insertion).
Problem: Palette has the access key P, so any macro with name beginning with P cannot be selected by pressing P, since access keys have precedence over first letters.
Fix: remove access key, which is not needed since Palette is the first item, and so is selected when the sub menu is opened.
... instead, all additions of items are required to specify flags explicitly.
Reliance on a default setting didn't save much in characters of code, and
has led to subtle errors before when rearranging menus.
... Just one CommandManager::AddItem overload, instead of two plus two
overloads of AddCheck. Also remove SetLongName. Use an options structure
instead for all those distinctions.
Also simplify all the repetition of equal flag and mask values. It's only in
four cases where we need to make them different.
Problem: up to about 300ms was intermittently truncated from the end of recording.
The bug was introduced by commit a0256e9.
The fix: in this commit, the line:
the line:
mRecordingSchedule = {}; // free arrays
was added to the lambda in the definition of cleanup at the start of AudioIO::StopStream()
If this line is changed to:
mRecordingSchedule.mCrossfadeData.clear(); // free arrays
then this has been found to fix the bug, and the vector is still cleared.
Clearly, the reinitialization of one or more of the other data members of mRecordingSchedule was causing the bug.
Which of the these reinitializations are the problem, and why is not known, and due to the nature of the problem could well take some time to find out.
Some former 'On' functions have been renamed 'Do' since they didn't directly handle the menu item. Some functions that used 'Context' now use 'Project'.
... This forces a better placement of state variables in the appropriate
classes.
In future perhaps, MenuManager should be splintered into several classes, one
for each of the main toolbar menus.
Flipped some conditions and used if else-if to reduce the indentation in code.
This makes the code more readable. No change in functionality.
Also created UpdateTimePositions() and made some bool functions void.
new variable mMaxFramesOutput used to communicate positional change.