1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-05-09 08:12:40 +02:00

10603 Commits

Author SHA1 Message Date
Paul Licameli
d991295efb Implement classes SpectrumVZoomHandle, WaveformVZoomHandle 2019-07-08 09:46:00 -04:00
Paul Licameli
f7dc21436d Separate functions for vertical zooming of spectrum and waveform 2019-07-08 09:46:00 -04:00
Paul Licameli
fa7de8ce3a Remove always true third argument of WaveTrackVZoomHandle::DoZoom 2019-07-08 09:46:00 -04:00
Paul Licameli
cbdf5f24fe New files to separate spectrum/waveform views and VRulers 2019-07-08 09:45:59 -04:00
Paul Licameli
3dc4216dcc Rewrite bff30b6 delaying the effect...
... otherwise some stack overflows might happen in Refresh of TrackPanel or
AdornedRulerPanel
2019-07-08 09:39:48 -04:00
Steve Daulton
7857769f96 Workaround for kDevelop crash
Thanks to PRL for the fix.
2019-07-08 00:38:19 +01:00
Paul Licameli
8a69be0305 Supply missing #include "Experimental.h" 2019-07-07 15:27:13 -04:00
Paul Licameli
30be658b00 Remove some unnecessary #include directives 2019-07-07 15:16:19 -04:00
Paul Licameli
bff30b6ae9 Eliminate idle event handler of CellularPanel...
... achieving the intent of b7386c2db1a136c4684f1e52e53d2f21262032dd by other
means
2019-07-07 13:48:27 -04:00
Paul Licameli
9b98f4be0c ScrubbingToolBar consumes less idle time 2019-07-07 12:20:59 -04:00
Paul Licameli
e03c9cdee3 Two dependency cycles of two easily broken...
... WaveTrackVRulerControls and WaveTrackVZoomHandle;
NoteTrackVRulerControls and NoteTrackVZoomHandle
2019-07-06 13:47:11 -04:00
Paul Licameli
274331cc26 AdornedRulerPanel eats less idle time after eb4eba6 and 9faa746d 2019-07-05 18:29:32 -04:00
Paul Licameli
ce31e2f35e Selection toolbars use a little less idle time after commit f0ae4c3 2019-07-05 14:01:57 -04:00
Paul Licameli
8c59f66583 ScrubbingToolBar eats less idle time after commit 192530d 2019-07-05 13:30:11 -04:00
David Bailes
dc88fe84d9 TrackPanel: fix when it is set as keyboard handler.
Problem:
Currently KeyboardCapture::Capture(this) is called in TrackPanel::OnTrackFocusChange().
So the keyboard handler is not automatically set when the track panel becomes the focus.
Example of a symptom:
A project contains a label track, and is the focus, and type to create a label is enabled.
Move to focus to another window, and then back to the Audacity window.
Type a character. A label is not created.

Fix:
Move the call KeyboardCapture::Capture(this) to TrackPanel::SetFocusedCell(), so that it gets called when the TrackPanel becomes the focus.
2019-07-05 15:18:16 +01:00
David Bailes
f327fef80b Bug 2146: Keyboard preferences: mouse can select wrong item
My previous fix for this bug, commit 4b437b8, did not work on Mac.
This bug was introduced by my commit b62ed73. This commit was to ensure that when the keyview was the focus, there was always one item selected. This ensures that the focus is indicated visually, and that the Narrator screen reader reads the keyview.

The failed fix, selected an item if necessary when the keyview became the focus.

The current fix reverts b62ed73 and 4b437b8, and ensures that an item is selected each time the items are updated.
2019-07-05 12:16:04 +01:00
Paul Licameli
4a19a3625b Remove WaveTrackVRulerControls::DoZoomPreset...
... it became unused at 3797a5227ac4d26e6139b194554fb3543fa62949
2019-07-04 13:48:33 -04:00
Paul Licameli
e2a2cf3edb Break up the remainder of the once-largest dependency tangle...
... Six files now are in five strongly connected components:

TrackPanel uses
AdornedRulerPanel which uses
ProjectWindow which uses
ProjectAudioManager and Scrubbing (in a small cycle we will leave alone),

and also, ControlToolBar uses ProjectWindow.

This introduces new files for ScrubUI and ProjectStatus and did much cutting
and pasting of code across files.  The separation of ControlToolBar
from ProjectAudioManager is especially important.
2019-07-04 10:06:24 -04:00
Paul Licameli
b888dfec5a Sever dependencies of ProjectWindow & Scrubbing on AdornedRulerPanel 2019-07-04 09:57:59 -04:00
Paul Licameli
a3b434be1c Move the scrub mouse event handler into ScrubUI...
... Making Scrubbing independent of AdornedRulerPanel.cpp
2019-07-04 09:52:34 -04:00
Paul Licameli
8414ebffa5 ScrubbingOverlay declared and defined entirely within ScrubUI.cpp 2019-07-04 09:22:20 -04:00
Paul Licameli
24bd7cf571 New files for ScrubUI 2019-07-04 09:13:59 -04:00
Paul Licameli
8c59b6f1cf This call isn't needed to hide the quick play line at end of scrub...
see also commit e815949535d73e46d048c79f706024ee6669df11
2019-07-04 09:00:09 -04:00
Paul Licameli
9faa746d4d Scrubber holds preference, AdornedRulerPanel updates in idle time...
... removing two uses of AdornedRulerPanel in Scrubbing
2019-07-04 08:59:57 -04:00
Paul Licameli
3c858dd343 Remove unnecessary button update of ruler from Scrubbing...
... this is a remnant of the abandoned experiment that put other buttons in
the ruler besides the pinned play head

See commit 6a3613e8e97da5164da881a179f1b64ac098d472
2019-07-04 08:58:36 -04:00
Paul Licameli
eb4eba6325 AdornedRulerPanel updates its play region in idle time...
... Eliminating TP_DisplaySelection and making ProjectWindow independent of
AdornedRulerPanel
2019-07-03 23:38:33 -04:00
Paul Licameli
1c1aca521d AdornedRulerPanel updates itself in response to theme change event 2019-07-03 23:11:10 -04:00
Paul Licameli
c742199d47 AdornedRulerPanel does not depend on TrackPanel...
... but it does assume that GetProjectPanel returns a CellularPanel
2019-07-03 23:08:49 -04:00
Paul Licameli
500ccb60b3 Free ControlToolBar from cycles. That's all the toolbars now! 2019-07-03 21:38:06 -04:00
Paul Licameli
acfd2b7010 TrackFocus is a new attached object...
... removing the need to use TrackPanel to get and set the focused track

ProjectAudioManager loses its direct dependency on TrackPanel
2019-07-03 19:10:21 -04:00
Paul Licameli
02075d5b43 Remove some fetches of TrackPanel 2019-07-03 18:42:33 -04:00
Paul Licameli
53c96cced6 Refactor ControlToolBar and ProjectAudioManager...
... The first, being only a user interface for the second, which has no
direct dependency back on it.

Several other places now use ProjectAudioManager directly, not using
ControlToolBar.

Also eliminate the namespace TransportActions from ProjectAudioManager. Either
make new member functions, or inline them because they are short, or move them
to more appropriate files.
2019-07-03 17:22:04 -04:00
Paul Licameli
b6cd9a2b36 DoPlayStopSelect into ProjectAudioManager; remove button push-down...
... which was redundant with what happens in the yield to idle events in
ProjectAudioManager::Stop.

This removes direct dependency of ProjectAudioManager on ControlToolBar.

And remove another #include we don't need
2019-07-03 17:21:55 -04:00
Paul Licameli
ca8740b510 StopIfPaused is now a member function of ProjectAudioManager 2019-07-03 17:00:08 -04:00
Paul Licameli
2c840a75c5 Remove short functions from namespace TransportActions 2019-07-03 16:52:19 -04:00
Paul Licameli
c8c76cf294 Cut and paste functions into ProjectAudioManager.cpp 2019-07-03 16:52:19 -04:00
Paul Licameli
13c2e4de0f Move members from ControlToolBar into class ProjectAudioManager...
... and ControlToolBar is included in fewer places
2019-07-03 16:52:16 -04:00
Paul Licameli
977b46cda2 Move CanStopAudioStream into ProjectAudioManager 2019-07-03 16:34:47 -04:00
Paul Licameli
a470ba00b0 ProjectAudioManager does not depend directly on AdornedRulerPanel 2019-07-03 16:34:46 -04:00
Paul Licameli
3af2063fa3 Remove some direct dependencies on TrackPanel 2019-07-03 14:55:10 -04:00
Paul Licameli
1e4812f470 GetProjectPanel analogous to GetProjectFrame breaks dependencies...
... in places that need the TrackPanel but only to invoke common wxWindow
methods on it.

This eliminates direct use of TrackPanel by Scrubbing and ProjectWindow
2019-07-03 13:53:07 -04:00
Paul Licameli
7597080418 Move the project window initialization into ProjectManager 2019-07-03 13:50:57 -04:00
Paul Licameli
d0c4677ab1 Move most of ProjectWindow initialization into nonmember function 2019-07-03 13:34:44 -04:00
Paul Licameli
52ff705b0d ScrollIntoView out of TrackPanel, into ProjectWindow 2019-07-03 13:32:32 -04:00
Paul Licameli
b0d03d09a2 Redo management of widths of fields in project status bar...
... new attached object, demoted to low levels of the dependency graph, to
loosen some remaining difficult dependencies;

also update it for "Playing at speed" and for changes of language
2019-07-02 21:03:10 -04:00
Paul Licameli
312911645e Update status bar field widths in case of language change 2019-07-02 21:02:13 -04:00
Paul Licameli
68999934e0 ProjectAudioManager doesn't use ProjectWindow, which doesn't use...
ControlToolBar, after we make a system to register functions that calculate
necessary minimum widths for status bar fields.

Also let Scrubbing.cpp register its own strings.

Also be sure to size the status field sufficiently for "Playing at Speed".
2019-07-02 21:01:54 -04:00
Paul Licameli
9f61b67965 Manage some more status bar changes with ProjectStatus 2019-07-02 21:01:34 -04:00
Paul Licameli
e2362bc25a Move project status string management to new attached object class 2019-07-02 21:01:34 -04:00
Paul Licameli
efa66f5350 New files for ProjectStatus 2019-07-02 21:01:34 -04:00