1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-10-15 07:01:18 +02:00
Commit Graph

61 Commits

Author SHA1 Message Date
Alexander Tsoy
7a91b6c5e9 Fix compilation without USE_MIDI 2019-08-28 00:17:39 +03:00
David Bailes
ee46155d82 Bug 2176 - Crash when attempting to time shift multiple tracks
Steps to reproduce:
1. create a new project in Audacity
2. add several tracks.
3. turn on Sync-Lock (Tracks, Sync-Lock Tracks checked)
4. Click on the Time Shift Tool.
5. Attempt to move tracks to the right (for example), clicking in the bottom track
6. It crashes.

In the function: void TimeShiftHandle::CreateListOfCapturedClips(), the problem was the first occurrence of the line:
auto &trackClip = state.capturedClipArray[i];
The subsequent call to AddClipsToCaptured(), can reallocate the array and so invalidate the reference.

Fix: Don't use a reference. (TrackClip is not a large object.)
2019-07-27 13:16:15 +01:00
Paul Licameli
dc216d669b Move drawing code for snap guidelines 2019-06-26 23:39:42 -04:00
Paul Licameli
e581fa60d9 Move responsibilities from Track to TrackView classes...
... And Track no longer inherits TrackPanelCell, so be careful to rewrite
some dynamic_casts too to check instead for TrackView.  Those casts won't fail
to recompile if not rewritten.
2019-06-18 16:01:06 -04:00
Paul Licameli
2f18c624f8 ToolsToolBar.cpp is free from cycles...
... Use ProjectSettings instead to communicate just an integer to the rest of
the program.
2019-06-13 10:13:09 -04:00
Paul Licameli
e969315c90 Free TrackControls and TrackSelectHandle from cycles, to high levels 2019-06-10 21:56:46 -04:00
Paul Licameli
f03684db4f New class ProjectHistory split from ProjectManager for undo, etc...
... And yet fewer inclusions of Projectmanager.h, though it's still not yet
free of cycles
2019-06-09 12:10:48 -04:00
Paul Licameli
fee5582826 New files for ProjectManager 2019-06-03 01:21:12 -04:00
Paul Licameli
4274d44ab7 New attached structure ProjectManager handles project lifetime...
... that is, a factory function, open, close, import, undo/redo/rollback.

Also the callbacks from AudioIO, which need to invoke undo history push when
recording stops.

It is meant as a high-level class using several of the other things attached
to the project, while AudacityProject will be a low level class acting mostly
as just the container of the attached structures.
2019-06-03 01:18:12 -04:00
Paul Licameli
e5cf2165d1 New files for ProjectAudioIO 2019-06-03 01:18:08 -04:00
Paul Licameli
1f4202c878 New attached structure ProjectAudioIO handles tokens and meters 2019-06-03 01:15:47 -04:00
Paul Licameli
05efeeb5bd New files for ProjectSettings 2019-06-03 01:13:13 -04:00
Paul Licameli
dd10e00a2d New attached structure ProjectSettings stores rate, snap-to, et al. 2019-06-02 14:42:00 -04:00
Paul Licameli
3416b5bad6 Toolbars accessed by static Get() functions, not through AudacityProject 2019-05-24 16:08:29 -04:00
Paul Licameli
b5a57682b6 static ViewInfo::Get() and ZoomInfo::Get()...
... not member functions of AudacityProject
2019-05-23 12:58:47 -04:00
Paul Licameli
14ab93a01f static TrackList::Get()...
... not member function of AudacityProject
2019-05-23 12:58:47 -04:00
Paul Licameli
bb634614e6 static overloads of Track::SharedPointer when null check is needed...
... Some optimizing compilers don't let us get away with null check on this
in a nonstatic member function.
2019-03-23 13:23:46 -04:00
Paul Licameli
f45300f032 This is only comments, in files where USE_ macros are tested...
... following the comment convention used in the preceding commit.
2019-03-22 12:38:30 -04:00
Paul Licameli
b4ce681867 WaveTrack.h does not include WaveClip.h 2019-03-18 01:44:42 -04:00
Paul Licameli
173a300427 Include nothing before Audacity.h, as comments say we should...
... and remove some duplicated inclusions
2019-03-17 21:41:39 -04:00
Paul Licameli
6f89c48873 Reimplement Track::Pointer using std::enable_shared_from_this...
... now the Track need not be owned yet by a TrackList
2019-03-16 13:11:32 -04:00
James Crook
657159d542 Fix C4189 and C4100 Warnings
C4189 is 'Local variable initialised but not used'
C4100 is 'Unreferenced parameter'

Fixed some other warnings, e.g. about empty if, too.
2018-10-10 19:46:24 +01:00
Paul Licameli
b5a7b67cb7 Fix some crashes in time-shift 2018-10-04 12:02:51 -04:00
Paul Licameli
669054b4f4 Remove many uses of GetLink in TrackPanel 2018-10-01 13:42:24 -04:00
Paul Licameli
23a85893a1 Rewrite some iterations over tracks and channels in TrackPanel 2018-10-01 11:24:25 -04:00
Paul Licameli
b6a6b8e73e Rewrite iterations over sync-lock groups 2018-10-01 11:09:20 -04:00
Paul Licameli
fd10ed26cd Use TypeSwitch and track_cast in TrackPanel 2018-10-01 10:58:33 -04:00
Paul Licameli
89748cbe3c Remove "skiplinked" argument of old track iterators 2018-10-01 10:35:46 -04:00
Paul Licameli
4998a5cea5 Rearrange some logic in TimeShiftHandle::Click 2018-09-29 14:13:30 -04:00
Paul Licameli
68eb24545b More factoring of TimeShiftHandle::Drag 2018-09-29 14:12:54 -04:00
Paul Licameli
d812513979 More factoring of TimeShiftHandle::Drag 2018-09-29 14:11:50 -04:00
Paul Licameli
fc5f7331d1 More factoring of TimeShiftHandle::Drag 2018-09-29 14:08:40 -04:00
Paul Licameli
aa3c3a8d5a More factoring of TimeShiftHandle::Drag 2018-09-29 14:07:23 -04:00
Paul Licameli
37b3968dd6 Some factoring of TimeShiftHandle::Drag 2018-09-29 14:06:00 -04:00
Paul Licameli
b79f5d9291 Simplification and better comments relating to time-shift...
... fewer switches on USE_MIDI.  In fact capturedClipArray is nonempty
whenever capturedClip is not null.
2018-09-29 13:55:34 -04:00
Paul Licameli
4a55b0d0cc Remove unused functions 2018-09-29 13:55:34 -04:00
Paul Licameli
920970c7c0 Enable snapping to other tracks, time-shifting with Shift key down...
...It seems that was inadvertently disabled when note tracks were first added.

Also remove unnecessary #ifdef branch.
2018-09-29 13:26:04 -04:00
Paul Licameli
328aa58966 Bug1933: commit 2c28af05e8 needs null checks 2018-08-12 15:44:08 -04:00
Matt Whitlock
e1f0e974d0 Fix --without-midi build
See downstream bug: https://bugs.gentoo.org/637110
2018-02-21 12:19:19 +01:00
Paul Licameli
0ec42f3dd2 Fix some English grammar biases...
... Avoid small out-of-context words and phrases in translation catalog that
are then substituted into larger translated phrases with blanks.

(What if my language has declensions?  How do I know the right form to use
for the phrases?)

Instead, give the translators larger in-context phrases to work with, even if
that requires replications of phrases with small variations.
2018-01-02 22:15:33 -05:00
Paul Licameli
e0970ad1e8 Remove unnecesary Format, Printf, casts to wxString 2018-01-01 21:53:51 -05:00
Paul Licameli
7fd78183d2 Remove needless uses of wxString::c_str() in wxString::Format...
... and similar wx "variadics," which all treat wxString smartly enough that
you don't need this.

Don't need c_str either to convert wxString to const wxChar * because
wxString has a conversion operator that does the same.
2018-01-01 20:34:33 -05:00
James Crook
f463eda36c Clean up some dead code and MSVC warnings.
- Dead code from experiments in SelectionBar removed.
- Many warnings about unused parameters fixed with WXUNUSED()
- Many warnings about signed / unsigned comparisons cleaned up.
- Several 'local variable declared but not used' warnings fixed.
2017-12-08 15:20:39 +00:00
James Crook
1b4999d0d3 Bug 1290 - "Split New" clips cannot be dragged back into the track they came from.
Earlier fix was broken and allowed clips to overlap.  Updated code:
- Checks that the modified slide amount is legal, against ALL clips, not just against later clips in the array.
- Computes tolerance correctly.
- Typically uses tolerance just once.
- Moves selection with clip
- Only restarts sliding with a 'clean slate' IF there was room on the original track.

Previously the code could reject a move to a new track, and then mistakenly allow just the horizontal part of the move on the original track(s), even with a clip blocking the way.
2017-08-23 18:15:00 +01:00
James Crook
e984211cce Bug 1290 - "Split New" clips cannot be dragged back into the track they came from.
Fixed by giving some tolerance in how the dragged clip(s) are placed.
The tolerance is 1px, so it depends on the zoom.  Therefore if zoomed in your positioning is more precise.
2017-08-19 22:46:33 +01:00
James Crook
4d43d2273b Bug 1516 - Clips: Can't drag vertically if starting position of clip overlaps clip in target track 2017-08-19 17:53:50 +01:00
Paul Licameli
ed4300fed1 Move status bar message texts out of class ToolsToolBar 2017-07-17 11:39:32 -04:00
Paul Licameli
b7ae012ece A single UIHandle can define multiple rotation states 2017-07-13 12:11:25 -04:00
Paul Licameli
67282cbb61 SnapManager::Snap returns its results in a struct 2017-07-13 12:11:13 -04:00
Paul Licameli
050824f467 Remove some unnecessary #includes 2017-07-12 14:15:16 -04:00