1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-07-13 15:17:42 +02:00

519 Commits

Author SHA1 Message Date
Paul Licameli
cfeb7bced1 Zoom to fit after any import (labels, audio, or midi) 2017-07-19 22:10:22 -04:00
Paul Licameli
8bf3791edf TrackList constructed only by factory function, to avoid more trouble 2017-07-14 21:55:32 -04:00
Paul Licameli
4ec6baf059 Cursor handling always relies on current mouse state, not remembered 2017-07-12 13:03:13 -04:00
Paul Licameli
16645f6b95 Back-pointer from Track to TrackList is weak (fixes crashes) 2017-07-10 11:48:11 -04:00
Paul Licameli
3a8280c562 Distinguish TrackPanelMouseState from TrackPanelMouseEvent...
... Let cell hit tests, and handle preview, know states only, not transitions.

Cell hit tests are passed a mouse state that does not always match the current,
but anticipates the button click to come; usually left, but if the Control
[sic] key on Mac is down, then right.

Thus, pressing and releasing Mac Control in multi-tool switches in and out of
the magnifier cursor.
2017-07-09 06:38:55 -04:00
David Bailes
4de3264d60 Remove Track: improvement for screen readers.
After a focused track is removed by pressing shift+c, the new focus is often not correctly read by screen readers, especially nvda.
The fixes:
1. In AudacityProject::RemoveTrack, set the new focus after the track has been deleted, rather than before. (If it is set before, then the childId can be wrong after the track is deleted.

2. In TrackPanelAx::SetFocus, send an object focus event if there are no tracks. This is so the focus is correctly set when there are no tracks after a track has been deleted.

3. In TrackPanelAx::GetFocus, given the change in 2. , only call SetFocus if the focus has changed, to avoid sending unnecessary focus events. (Screen readers are normally tolerant of this, but Window Eyes became a bit too talkative.)
2017-07-04 14:41:00 +01:00
Gale Andrews
7c4aa4cfa0 Colon before recording space value, per Wording 2017-07-01 02:33:05 +01:00
David Bailes
69ab49c3a4 Fix for Audacity crashing when running Jaws on Windows 10 1703
Problem: On Windows 10 1703, with the Jaws screen reader running, additional paint messages are sent to Audacity compared with when Jaws is not running. My assumption is this is probably a Jaws bug. In particular, when a project is closed, ToolDock::OnPaint, and AdornedRulerPanel::OnPaint are called.

Fix: changes ensure that these OnPaint functions can be called without causing a crash.
2017-06-28 10:42:13 +01:00
Paul Licameli
2806b509e2 Fix crashes in repainting, and update first visible track correctly 2017-06-26 15:20:35 -04:00
Paul Licameli
4ac40d12c0 Use weak_ptr in track selection state 2017-06-25 13:35:16 -04:00
Paul Licameli
750fc34fac Clarify what the TrackList events are for...
Also fixes this bug:

Vertical rulers did not narrow as needed after deletion of the lowest track.
2017-06-25 03:00:28 -04:00
James Crook
86901a00a1 Fix MixerBoard Theming
Fixed so that updates to theme are applied immediately.  Previously theming only worked properly after a restart with the new theme.  Paul found that you could create a Chimera MixerBoard with a track in each of the four different themes.

I chose to completely recreate the MixerBoard on a prefs update, rather than the more fiddly detail of retheming each component of it.
2017-06-22 11:53:49 +01:00
Paul Licameli
770b3b52ef TrackPanel no longer implements the selection tool or MIDI stretch...
This one's big!

Also restores the effect of ctrl-click on label track.

Also adds ESC key handling for the Stretch.
2017-06-15 08:54:59 -04:00
Paul Licameli
8ef5f696d8 Define BackgoundCell, move some things into it 2017-06-15 08:21:41 -04:00
Paul Licameli
6b5c5a0335 More simplifications by use of SelectionStateChanger 2017-06-11 11:21:36 -04:00
Paul Licameli
d834bcdbd1 Move some command handlers for selection and focus out of TrackPanel 2017-06-11 11:03:28 -04:00
James Crook
7341bff9e0 Disallow AutoSelect on dangerous commands.
Commands flagged with NoAutoSelect will not auto select, even if the user has asked for it.  This is used for Cut and 3 different kinds of delete.  We later might extend it to fades and repair.
2017-06-09 22:36:05 +01:00
James Crook
adc7312954 Auto-Select off by default.
I've implemented three states for what to do if no selection:
0 - Grey out (no longer used)
1 - Auto-select
2 - Give the warning message and try again.
2017-06-09 19:40:28 +01:00
Paul Licameli
a33ec61ddf Move code for toggling spectral selection (Q key) out of TrackPanel 2017-06-08 12:48:28 -04:00
Paul Licameli
5395f253bf Reviewed use of Track::GetY; don't use in NoteTrack; fix off-by-1's 2017-06-04 00:15:29 -04:00
James Crook
eaec68a014 Bug 1642 - (Windows) Adding a shortcut or toggling Extra Menus causes ENTER on dropdown to open new project 2017-05-15 23:25:54 +01:00
James Crook
2f10c1ce25 Bug 1532 - Toolbars fail to arrange correctly when maximizing or restoring main window size 2017-05-14 16:08:02 +01:00
James Crook
35fe313f30 Smarter SelectAllIfNone
Now if there is a time selection and no tracks selected, then just select all the tracks, preserving the time selection.
This helps in the case a user has made a time selection, e.g. with selection toolbar, and then clicked on track panel, losing the selection of tracks but preserving the time selection.

I also shortened some repeated cut-and-pasted code.
2017-05-11 22:36:55 +01:00
James Crook
57b200884e Bug 1639 - Left and Right arrow keys don't work in docked toolbars, if bound to some action.
This fix works by detecting whether the focus window is the TrackPanel, in which case all keys are handled normally.  If it isn't the TrackPanel, then the problematic keys do not get sent to our own CommandHandler and proceed on to wxWidgets.

A problem that then follows is that the menu accelerators (which normally don't get a look in) may then convert the event to a menu event and stop it going any further.So it does not get to the focus window.

The fix/workaround for that is to NOT provide accelerators for up, down, left and right arrow in the menus.  I'd much rather be able to turn off those accelerators completely, yet still show them to users as hints.
2017-05-01 19:04:49 +01:00
Paul Licameli
94d8c2cff7 fix the previous 2017-04-24 13:13:14 -04:00
Paul Licameli
967e1fcf02 More exception safety for selection states of tracks 2017-04-24 13:08:31 -04:00
James Crook
fefc856901 Update slider in tracks on theme change. 2017-04-05 20:16:12 +01:00
James Crook
028ed19d90 Sync with DarkAudacity 2017-04-02 23:07:13 +01:00
Paul Licameli
e1473dfe76 void return, not boolean success, from some Track virtual functions...
... The return codes were mostly ignored anyway, and exceptions will be thrown
instead.

It seems there was also confusion whether the return values of Track::Paste
and Track::SyncLockAdjust were to indicate success or indicate whether there
was any change.  No matter now.
2017-03-31 18:26:52 -04:00
Paul Licameli
6c4cf46c06 Move mute and solo state into PlayableTrack 2017-03-29 13:45:08 -04:00
Paul Licameli
b2ab9b5087 Simplify MixerBoard.cpp using the PlayableTrack type 2017-03-29 13:42:51 -04:00
windinthew
e2a7282690 Fix wording issues reported on Wiki
No ellipses in title bar of file open/import dialogs
Auto Recovery Discard dialogs say only recoverable projects are discarded
Capitalised button in Dependency dialogue per MS guidelines.
2017-03-27 05:36:10 +01:00
Paul Licameli
1552ff188f When opening a file into a new project, delete the project on failure 2017-03-21 14:11:28 -04:00
Paul Licameli
7159966eb4 Comment that cache-filling should be no-fail (we don't use it anyway) 2017-03-21 14:11:26 -04:00
Paul Licameli
54c1b0c955 Exception safety in: opening and saving of projects 2017-03-21 14:11:25 -04:00
Paul Licameli
4d4cd91d91 Hoist, and delay, the saving of import tag while opening the file...
... so that AudacityProject::AudacityProject no longer has a path in the
static call graph that reaches block file write operations that might throw.

So it is easier to prove that other functions, calling that, don't throw.

Also delay the possibly thowing save of the import until after certain other
steps in the file opening procedure.
2017-03-21 14:11:25 -04:00
Paul Licameli
0bb6a3d971 Exception safety in: importing functions...
... Side effects on preferences may persist even after errors.
2017-03-21 14:11:23 -04:00
Paul Licameli
48459404a5 Exception safety in: general exporting routines 2017-03-21 14:11:22 -04:00
Paul Licameli
68c726918b If exception in cut/copy, leave clipboard clear (no partial results) 2017-03-21 14:11:19 -04:00
Paul Licameli
82dd7545c9 Reviewed uses of release(); prefer Destroy_ptr to hold window objects 2017-03-21 14:11:18 -04:00
James Crook
5c1f4d24b5 Menu rearrangement merged from DarkAudacity 2017-03-19 16:43:51 +00:00
Paul Licameli
3bb04245c5 Strong exception safety in all uses of XMLFileWriter...
... Strong, meaning that the file at the specified path is created or modified
only if all write operations complete without exceptions, barring one very
unlikely possibility that a final file rename fails, but even in that case the
output is successfully written to some path.

This commit does not add throws, but changes the type thrown to a subclass of
AudacityException, so that GuardedCall will cause the user to see an error
dialog in all cases.

Duplicated logic for making temporary files and backups is now all in one
place, the class XMLWriter.

There may be more new GuardedCalls than necessary -- the catch-all for the
event loop, AudacityApp::OnExceptionInMainLoop, might be trusted instead in
some cases --  but they are sufficient.
2017-03-18 11:45:33 -04:00
Paul Licameli
b81cdee7e3 Comment where xml writing functions may throw 2017-03-18 11:45:05 -04:00
Paul Licameli
f508493561 more guarded calls 2017-03-17 17:53:02 -04:00
Paul Licameli
6525bb18cf Translate exceptions to error codes in callback functions...
... That is what the library protocols allow, and libraries may be written
in C and might corrupt their state if C++ exceptions pass through them.
2017-03-17 17:53:01 -04:00
Paul Licameli
1a3212611b ODComputeSummaryTask is safe for exceptions; makes no progress then 2017-03-17 17:52:55 -04:00
Paul Licameli
692a033968 Remove naked new[] in: various 2017-03-17 17:52:47 -04:00
Paul Licameli
38236a807c More new -> NEW, delete -> DELETE in comments 2017-03-17 17:52:41 -04:00
Paul Licameli
25619fb46e Don't create placeholder clips in Duplicate command ...
... when there is no clip at the right edge of the selection.
2017-03-17 17:52:39 -04:00
Paul Licameli
5fdd9fe05a Remove TrackList::GetLink 2017-03-17 17:52:29 -04:00