mirror of
https://github.com/cookiengineer/audacity
synced 2025-06-17 16:40:07 +02:00
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.
…
Audacity is an easy-to-use, multi-track audio editor and recorder for Windows, Mac OS X, GNU/Linux and other operating systems. Developed by a group of volunteers as open source.
- Recording from any real, or virtual audio device that is available to the host system.
- Export / Import a wide range of audio formats, extendible with FFmpeg.
- High quality using 32-bit float audio processing.
- Plug-ins Support for multiple audio plug-in formats, including VST, LV2, AU.
- Macros for chaining commands and batch processing.
- Scripting in Python, Perl, or any language that supports named pipes.
- Nyquist Very powerful built-in scripting language that may also be used to create plug-ins.
- Editing multi-track editing with sample accuracy and arbitrary sample rates.
- Accessibility for VI users.
- Analysis and visualization tools to analyze audio, or other signal data.
Getting Started
For end users, the latest Windows and macOS release version of Audacity is available from the Audacity website. Help with using Audacity is available from the Audacity Forum. Information for developers is available from the Audacity Wiki.
Description
Languages
C++
56.3%
C
34.4%
Common Lisp
4.3%
CMake
1.6%
Python
1%
Other
2.2%