mirror of
https://github.com/cookiengineer/audacity
synced 2025-08-02 17:09:26 +02:00
TrackPanel still draws Gain and Pan, but no longer handles clicks on them...
... also implemented ESC key for those drags
This commit is contained in:
parent
5ee73f944d
commit
a569476e79
@ -1229,6 +1229,7 @@
|
|||||||
5E73964A1DAFD91D00BA0A4D /* CutlineHandle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E7396481DAFD91D00BA0A4D /* CutlineHandle.cpp */; };
|
5E73964A1DAFD91D00BA0A4D /* CutlineHandle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E7396481DAFD91D00BA0A4D /* CutlineHandle.cpp */; };
|
||||||
5E73964D1DAFD95B00BA0A4D /* ButtonHandle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E73964B1DAFD95B00BA0A4D /* ButtonHandle.cpp */; };
|
5E73964D1DAFD95B00BA0A4D /* ButtonHandle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E73964B1DAFD95B00BA0A4D /* ButtonHandle.cpp */; };
|
||||||
5E7396501DAFD98400BA0A4D /* SliderHandle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E73964E1DAFD98400BA0A4D /* SliderHandle.cpp */; };
|
5E7396501DAFD98400BA0A4D /* SliderHandle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E73964E1DAFD98400BA0A4D /* SliderHandle.cpp */; };
|
||||||
|
5E7396561DAFDA0000BA0A4D /* WaveTrackSliderHandles.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E7396541DAFDA0000BA0A4D /* WaveTrackSliderHandles.cpp */; };
|
||||||
5E74D2E31CC4429700D88B0B /* EditCursorOverlay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E74D2DD1CC4429700D88B0B /* EditCursorOverlay.cpp */; };
|
5E74D2E31CC4429700D88B0B /* EditCursorOverlay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E74D2DD1CC4429700D88B0B /* EditCursorOverlay.cpp */; };
|
||||||
5E74D2E41CC4429700D88B0B /* PlayIndicatorOverlay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E74D2DF1CC4429700D88B0B /* PlayIndicatorOverlay.cpp */; };
|
5E74D2E41CC4429700D88B0B /* PlayIndicatorOverlay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E74D2DF1CC4429700D88B0B /* PlayIndicatorOverlay.cpp */; };
|
||||||
5E74D2E51CC4429700D88B0B /* Scrubbing.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E74D2E11CC4429700D88B0B /* Scrubbing.cpp */; };
|
5E74D2E51CC4429700D88B0B /* Scrubbing.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E74D2E11CC4429700D88B0B /* Scrubbing.cpp */; };
|
||||||
@ -3058,6 +3059,8 @@
|
|||||||
5E73964C1DAFD95B00BA0A4D /* ButtonHandle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ButtonHandle.h; sourceTree = "<group>"; };
|
5E73964C1DAFD95B00BA0A4D /* ButtonHandle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ButtonHandle.h; sourceTree = "<group>"; };
|
||||||
5E73964E1DAFD98400BA0A4D /* SliderHandle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SliderHandle.cpp; sourceTree = "<group>"; };
|
5E73964E1DAFD98400BA0A4D /* SliderHandle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SliderHandle.cpp; sourceTree = "<group>"; };
|
||||||
5E73964F1DAFD98400BA0A4D /* SliderHandle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SliderHandle.h; sourceTree = "<group>"; };
|
5E73964F1DAFD98400BA0A4D /* SliderHandle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SliderHandle.h; sourceTree = "<group>"; };
|
||||||
|
5E7396541DAFDA0000BA0A4D /* WaveTrackSliderHandles.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WaveTrackSliderHandles.cpp; sourceTree = "<group>"; };
|
||||||
|
5E7396551DAFDA0000BA0A4D /* WaveTrackSliderHandles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WaveTrackSliderHandles.h; sourceTree = "<group>"; };
|
||||||
5E74D2D91CC4427B00D88B0B /* TrackPanelCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TrackPanelCell.h; sourceTree = "<group>"; };
|
5E74D2D91CC4427B00D88B0B /* TrackPanelCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TrackPanelCell.h; sourceTree = "<group>"; };
|
||||||
5E74D2DA1CC4427B00D88B0B /* TrackPanelCellIterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TrackPanelCellIterator.h; sourceTree = "<group>"; };
|
5E74D2DA1CC4427B00D88B0B /* TrackPanelCellIterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TrackPanelCellIterator.h; sourceTree = "<group>"; };
|
||||||
5E74D2DD1CC4429700D88B0B /* EditCursorOverlay.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EditCursorOverlay.cpp; sourceTree = "<group>"; };
|
5E74D2DD1CC4429700D88B0B /* EditCursorOverlay.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EditCursorOverlay.cpp; sourceTree = "<group>"; };
|
||||||
@ -5826,11 +5829,13 @@
|
|||||||
5E7396481DAFD91D00BA0A4D /* CutlineHandle.cpp */,
|
5E7396481DAFD91D00BA0A4D /* CutlineHandle.cpp */,
|
||||||
5E000A1F1EC7B5D500E8FD93 /* SampleHandle.cpp */,
|
5E000A1F1EC7B5D500E8FD93 /* SampleHandle.cpp */,
|
||||||
5EA018231EC7B226001F2996 /* WaveTrackControls.cpp */,
|
5EA018231EC7B226001F2996 /* WaveTrackControls.cpp */,
|
||||||
|
5E7396541DAFDA0000BA0A4D /* WaveTrackSliderHandles.cpp */,
|
||||||
5EA018251EC7B226001F2996 /* WaveTrackUI.cpp */,
|
5EA018251EC7B226001F2996 /* WaveTrackUI.cpp */,
|
||||||
5EA018261EC7B226001F2996 /* WaveTrackVRulerControls.cpp */,
|
5EA018261EC7B226001F2996 /* WaveTrackVRulerControls.cpp */,
|
||||||
5E7396491DAFD91D00BA0A4D /* CutlineHandle.h */,
|
5E7396491DAFD91D00BA0A4D /* CutlineHandle.h */,
|
||||||
5E000A201EC7B5D500E8FD93 /* SampleHandle.h */,
|
5E000A201EC7B5D500E8FD93 /* SampleHandle.h */,
|
||||||
5EA018241EC7B226001F2996 /* WaveTrackControls.h */,
|
5EA018241EC7B226001F2996 /* WaveTrackControls.h */,
|
||||||
|
5E7396551DAFDA0000BA0A4D /* WaveTrackSliderHandles.h */,
|
||||||
5EA018271EC7B226001F2996 /* WaveTrackVRulerControls.h */,
|
5EA018271EC7B226001F2996 /* WaveTrackVRulerControls.h */,
|
||||||
);
|
);
|
||||||
path = ui;
|
path = ui;
|
||||||
@ -7749,6 +7754,7 @@
|
|||||||
28501EAA0CEED0670029ABAA /* LoadVamp.cpp in Sources */,
|
28501EAA0CEED0670029ABAA /* LoadVamp.cpp in Sources */,
|
||||||
5ED1D0AD1CDE55BD00471E3C /* Overlay.cpp in Sources */,
|
5ED1D0AD1CDE55BD00471E3C /* Overlay.cpp in Sources */,
|
||||||
28501EAB0CEED0680029ABAA /* VampEffect.cpp in Sources */,
|
28501EAB0CEED0680029ABAA /* VampEffect.cpp in Sources */,
|
||||||
|
5E7396561DAFDA0000BA0A4D /* WaveTrackSliderHandles.cpp in Sources */,
|
||||||
288052C20DEA73F500671EA4 /* NonGuiThread.cpp in Sources */,
|
288052C20DEA73F500671EA4 /* NonGuiThread.cpp in Sources */,
|
||||||
28530C4C0DF2105200555C94 /* HtmlWindow.cpp in Sources */,
|
28530C4C0DF2105200555C94 /* HtmlWindow.cpp in Sources */,
|
||||||
28530C4D0DF2105200555C94 /* ProgressDialog.cpp in Sources */,
|
28530C4D0DF2105200555C94 /* ProgressDialog.cpp in Sources */,
|
||||||
|
@ -567,6 +567,8 @@ audacity_SOURCES = \
|
|||||||
tracks/playabletrack/wavetrack/ui/SampleHandle.h \
|
tracks/playabletrack/wavetrack/ui/SampleHandle.h \
|
||||||
tracks/playabletrack/wavetrack/ui/WaveTrackControls.cpp \
|
tracks/playabletrack/wavetrack/ui/WaveTrackControls.cpp \
|
||||||
tracks/playabletrack/wavetrack/ui/WaveTrackControls.h \
|
tracks/playabletrack/wavetrack/ui/WaveTrackControls.h \
|
||||||
|
tracks/playabletrack/wavetrack/ui/WaveTrackSliderHandles.cpp \
|
||||||
|
tracks/playabletrack/wavetrack/ui/WaveTrackSliderHandles.h \
|
||||||
tracks/playabletrack/wavetrack/ui/WaveTrackVRulerControls.cpp \
|
tracks/playabletrack/wavetrack/ui/WaveTrackVRulerControls.cpp \
|
||||||
tracks/playabletrack/wavetrack/ui/WaveTrackVRulerControls.h \
|
tracks/playabletrack/wavetrack/ui/WaveTrackVRulerControls.h \
|
||||||
tracks/playabletrack/wavetrack/ui/WaveTrackUI.cpp \
|
tracks/playabletrack/wavetrack/ui/WaveTrackUI.cpp \
|
||||||
|
@ -1147,8 +1147,6 @@ void TrackPanel::HandleInterruptedDrag()
|
|||||||
IsClosing,
|
IsClosing,
|
||||||
IsAdjustingLabel,
|
IsAdjustingLabel,
|
||||||
IsRearranging,
|
IsRearranging,
|
||||||
IsGainSliding,
|
|
||||||
IsPanSliding,
|
|
||||||
IsStretching,
|
IsStretching,
|
||||||
IsVelocitySliding
|
IsVelocitySliding
|
||||||
*/
|
*/
|
||||||
@ -3576,77 +3574,6 @@ void TrackPanel::HandleMinimizing(wxMouseEvent & event)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackPanel::HandleSliders(wxMouseEvent &event, bool pan)
|
|
||||||
{
|
|
||||||
LWSlider *slider;
|
|
||||||
#ifdef EXPERIMENTAL_OUTPUT_DISPLAY
|
|
||||||
bool panZero = false;
|
|
||||||
#endif
|
|
||||||
wxASSERT(mCapturedTrack->GetKind() == Track::Wave);
|
|
||||||
|
|
||||||
// On the Mac, we'll lose track capture if the slider dialog
|
|
||||||
// is displayed, but it doesn't hurt to do this for all plats.
|
|
||||||
WaveTrack *capturedTrack = (WaveTrack *) mCapturedTrack;
|
|
||||||
|
|
||||||
auto rect = FindTrackRect( capturedTrack, true );
|
|
||||||
if (pan) {
|
|
||||||
wxRect sliderRect;
|
|
||||||
TrackInfo::GetPanRect(rect.GetTopLeft(), sliderRect);
|
|
||||||
slider = mTrackInfo.PanSlider(sliderRect, capturedTrack, true, this);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
wxRect sliderRect;
|
|
||||||
TrackInfo::GetGainRect(rect.GetTopLeft(), sliderRect);
|
|
||||||
slider = mTrackInfo.GainSlider(sliderRect, capturedTrack, true, this);
|
|
||||||
}
|
|
||||||
|
|
||||||
slider->OnMouseEvent(event);
|
|
||||||
|
|
||||||
//If we have a double-click, do this...
|
|
||||||
if (event.LeftDClick())
|
|
||||||
mMouseCapture = IsUncaptured;
|
|
||||||
|
|
||||||
float newValue = slider->Get();
|
|
||||||
MixerBoard* pMixerBoard = this->GetMixerBoard(); // Update mixer board, too.
|
|
||||||
|
|
||||||
// Assume linked track is wave or null
|
|
||||||
const auto link = static_cast<WaveTrack *>(capturedTrack->GetLink());
|
|
||||||
|
|
||||||
if (pan) {
|
|
||||||
#ifdef EXPERIMENTAL_OUTPUT_DISPLAY
|
|
||||||
panZero = capturedTrack->SetPan(newValue);
|
|
||||||
#else
|
|
||||||
capturedTrack->SetPan(newValue);
|
|
||||||
#endif
|
|
||||||
if (link)
|
|
||||||
link->SetPan(newValue);
|
|
||||||
|
|
||||||
#ifdef EXPERIMENTAL_OUTPUT_DISPLAY
|
|
||||||
if(panZero) MakeParentRedrawScrollbars();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (pMixerBoard)
|
|
||||||
pMixerBoard->UpdatePan(capturedTrack);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
capturedTrack->SetGain(newValue);
|
|
||||||
if (link)
|
|
||||||
link->SetGain(newValue);
|
|
||||||
|
|
||||||
if (pMixerBoard)
|
|
||||||
pMixerBoard->UpdateGain(capturedTrack);
|
|
||||||
}
|
|
||||||
|
|
||||||
RefreshTrack(capturedTrack);
|
|
||||||
|
|
||||||
if (event.ButtonUp()) {
|
|
||||||
MakeParentPushState(pan ? _("Moved pan slider") : _("Moved gain slider"),
|
|
||||||
pan ? _("Pan") : _("Gain"),
|
|
||||||
UndoPush::CONSOLIDATE);
|
|
||||||
SetCapturedTrack( NULL );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef EXPERIMENTAL_MIDI_OUT
|
#ifdef EXPERIMENTAL_MIDI_OUT
|
||||||
void TrackPanel::HandleVelocitySlider(wxMouseEvent &event)
|
void TrackPanel::HandleVelocitySlider(wxMouseEvent &event)
|
||||||
{
|
{
|
||||||
@ -3950,14 +3877,6 @@ void TrackPanel::HandleLabelClick(wxMouseEvent & event)
|
|||||||
if (isleft && MinimizeFunc(t, rect, event.m_x, event.m_y))
|
if (isleft && MinimizeFunc(t, rect, event.m_x, event.m_y))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (isleft && t->GetKind() == Track::Wave)
|
|
||||||
{
|
|
||||||
if (GainFunc(t, rect, event, event.m_x, event.m_y))
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (PanFunc(t, rect, event, event.m_x, event.m_y))
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
#ifdef USE_MIDI
|
#ifdef USE_MIDI
|
||||||
// DM: If it's a NoteTrack, it has special controls
|
// DM: If it's a NoteTrack, it has special controls
|
||||||
else if (t->GetKind() == Track::Note)
|
else if (t->GetKind() == Track::Note)
|
||||||
@ -4076,40 +3995,6 @@ void TrackPanel::CalculateRearrangingThresholds(wxMouseEvent & event)
|
|||||||
mMoveDownThreshold = INT_MAX;
|
mMoveDownThreshold = INT_MAX;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TrackPanel::GainFunc(Track * t, wxRect rect, wxMouseEvent &event,
|
|
||||||
int x, int y)
|
|
||||||
{
|
|
||||||
wxRect sliderRect;
|
|
||||||
mTrackInfo.GetGainRect(rect.GetTopLeft(), sliderRect);
|
|
||||||
if ( TrackInfo::HideTopItem( rect, sliderRect, kTrackInfoSliderAllowance ) )
|
|
||||||
return false;
|
|
||||||
if (!sliderRect.Contains(x, y))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
SetCapturedTrack( t, IsGainSliding);
|
|
||||||
mCapturedRect = rect;
|
|
||||||
HandleSliders(event, false);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool TrackPanel::PanFunc(Track * t, wxRect rect, wxMouseEvent &event,
|
|
||||||
int x, int y)
|
|
||||||
{
|
|
||||||
wxRect sliderRect;
|
|
||||||
mTrackInfo.GetPanRect(rect.GetTopLeft(), sliderRect);
|
|
||||||
if ( TrackInfo::HideTopItem( rect, sliderRect, kTrackInfoSliderAllowance ) )
|
|
||||||
return false;
|
|
||||||
if (!sliderRect.Contains(x, y))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
SetCapturedTrack( t, IsPanSliding);
|
|
||||||
mCapturedRect = rect;
|
|
||||||
HandleSliders(event, true);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef EXPERIMENTAL_MIDI_OUT
|
#ifdef EXPERIMENTAL_MIDI_OUT
|
||||||
bool TrackPanel::VelocityFunc(Track * t, wxRect rect, wxMouseEvent &event,
|
bool TrackPanel::VelocityFunc(Track * t, wxRect rect, wxMouseEvent &event,
|
||||||
int x, int y)
|
int x, int y)
|
||||||
@ -4969,13 +4854,6 @@ try
|
|||||||
|
|
||||||
if (event.Leaving())
|
if (event.Leaving())
|
||||||
{
|
{
|
||||||
|
|
||||||
// PRL: was this test really needed? It interfered with my refactoring
|
|
||||||
// that tried to eliminate those enum values.
|
|
||||||
// I think it was never true, that mouse capture was pan or gain sliding,
|
|
||||||
// but no mouse button was down.
|
|
||||||
// if (mMouseCapture != IsPanSliding && mMouseCapture != IsGainSliding)
|
|
||||||
|
|
||||||
auto buttons =
|
auto buttons =
|
||||||
// Bug 1325: button state in Leaving events is unreliable on Mac.
|
// Bug 1325: button state in Leaving events is unreliable on Mac.
|
||||||
// Poll the global state instead.
|
// Poll the global state instead.
|
||||||
@ -5058,12 +4936,6 @@ try
|
|||||||
case IsRearranging:
|
case IsRearranging:
|
||||||
HandleRearrange(event);
|
HandleRearrange(event);
|
||||||
break;
|
break;
|
||||||
case IsGainSliding:
|
|
||||||
HandleSliders(event, false);
|
|
||||||
break;
|
|
||||||
case IsPanSliding:
|
|
||||||
HandleSliders(event, true);
|
|
||||||
break;
|
|
||||||
#ifdef EXPERIMENTAL_MIDI_OUT
|
#ifdef EXPERIMENTAL_MIDI_OUT
|
||||||
case IsVelocitySliding:
|
case IsVelocitySliding:
|
||||||
HandleVelocitySlider(event);
|
HandleVelocitySlider(event);
|
||||||
|
@ -494,7 +494,6 @@ protected:
|
|||||||
virtual void HandleClosing(wxMouseEvent & event);
|
virtual void HandleClosing(wxMouseEvent & event);
|
||||||
virtual void HandlePopping(wxMouseEvent & event);
|
virtual void HandlePopping(wxMouseEvent & event);
|
||||||
virtual void HandleMinimizing(wxMouseEvent & event);
|
virtual void HandleMinimizing(wxMouseEvent & event);
|
||||||
virtual void HandleSliders(wxMouseEvent &event, bool pan);
|
|
||||||
#ifdef EXPERIMENTAL_MIDI_OUT
|
#ifdef EXPERIMENTAL_MIDI_OUT
|
||||||
virtual void HandleVelocitySlider(wxMouseEvent &event);
|
virtual void HandleVelocitySlider(wxMouseEvent &event);
|
||||||
#endif
|
#endif
|
||||||
@ -507,10 +506,6 @@ protected:
|
|||||||
virtual bool PopupFunc(Track * t, wxRect rect, int x, int y);
|
virtual bool PopupFunc(Track * t, wxRect rect, int x, int y);
|
||||||
|
|
||||||
virtual bool MinimizeFunc(Track *t, wxRect rect, int x, int f);
|
virtual bool MinimizeFunc(Track *t, wxRect rect, int x, int f);
|
||||||
virtual bool GainFunc(Track * t, wxRect rect, wxMouseEvent &event,
|
|
||||||
int x, int y);
|
|
||||||
virtual bool PanFunc(Track * t, wxRect rect, wxMouseEvent &event,
|
|
||||||
int x, int y);
|
|
||||||
#ifdef EXPERIMENTAL_MIDI_OUT
|
#ifdef EXPERIMENTAL_MIDI_OUT
|
||||||
virtual bool VelocityFunc(Track * t, wxRect rect, wxMouseEvent &event,
|
virtual bool VelocityFunc(Track * t, wxRect rect, wxMouseEvent &event,
|
||||||
int x, int y);
|
int x, int y);
|
||||||
@ -806,8 +801,6 @@ public:
|
|||||||
IsRearranging,
|
IsRearranging,
|
||||||
IsMuting,
|
IsMuting,
|
||||||
IsSoloing,
|
IsSoloing,
|
||||||
IsGainSliding,
|
|
||||||
IsPanSliding,
|
|
||||||
IsMinimizing,
|
IsMinimizing,
|
||||||
IsPopping,
|
IsPopping,
|
||||||
#ifdef EXPERIMENTAL_MIDI_OUT
|
#ifdef EXPERIMENTAL_MIDI_OUT
|
||||||
|
@ -11,6 +11,7 @@ Paul Licameli split from TrackPanel.cpp
|
|||||||
#include "../../../../Audacity.h"
|
#include "../../../../Audacity.h"
|
||||||
#include "WaveTrackControls.h"
|
#include "WaveTrackControls.h"
|
||||||
#include "../../ui/PlayableTrackButtonHandles.h"
|
#include "../../ui/PlayableTrackButtonHandles.h"
|
||||||
|
#include "WaveTrackSliderHandles.h"
|
||||||
|
|
||||||
#include "../../../../HitTestResult.h"
|
#include "../../../../HitTestResult.h"
|
||||||
#include "../../../../Track.h"
|
#include "../../../../Track.h"
|
||||||
@ -51,6 +52,14 @@ HitTestResult WaveTrackControls::HitTest
|
|||||||
(result = SoloButtonHandle::HitTest
|
(result = SoloButtonHandle::HitTest
|
||||||
(event, rect, pProject, track)).handle)
|
(event, rect, pProject, track)).handle)
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
|
if (NULL != (result =
|
||||||
|
GainSliderHandle::HitTest(event, rect, pProject, mpTrack)).handle)
|
||||||
|
return result;
|
||||||
|
|
||||||
|
if (NULL != (result =
|
||||||
|
PanSliderHandle::HitTest(event, rect, pProject, mpTrack)).handle)
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
190
src/tracks/playabletrack/wavetrack/ui/WaveTrackSliderHandles.cpp
Normal file
190
src/tracks/playabletrack/wavetrack/ui/WaveTrackSliderHandles.cpp
Normal file
@ -0,0 +1,190 @@
|
|||||||
|
#include "WaveTrackSliderHandles.h"
|
||||||
|
|
||||||
|
/**********************************************************************
|
||||||
|
|
||||||
|
Audacity: A Digital Audio Editor
|
||||||
|
|
||||||
|
WaveTrackSliderHandles.cpp
|
||||||
|
|
||||||
|
Paul Licameli split from TrackPanel.cpp
|
||||||
|
|
||||||
|
**********************************************************************/
|
||||||
|
|
||||||
|
#include "../../../../Audacity.h"
|
||||||
|
#include "WaveTrackSliderHandles.h"
|
||||||
|
|
||||||
|
#include "../../../../HitTestResult.h"
|
||||||
|
#include "../../../../MixerBoard.h"
|
||||||
|
#include "../../../../Project.h"
|
||||||
|
#include "../../../../RefreshCode.h"
|
||||||
|
#include "../../../../TrackPanel.h"
|
||||||
|
#include "../../../../UndoManager.h"
|
||||||
|
#include "../../../../WaveTrack.h"
|
||||||
|
|
||||||
|
GainSliderHandle::GainSliderHandle()
|
||||||
|
: SliderHandle()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
GainSliderHandle::~GainSliderHandle()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
GainSliderHandle &GainSliderHandle::Instance()
|
||||||
|
{
|
||||||
|
static GainSliderHandle instance;
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
WaveTrack *GainSliderHandle::GetTrack()
|
||||||
|
{
|
||||||
|
return static_cast<WaveTrack*>(mpTrack);
|
||||||
|
}
|
||||||
|
|
||||||
|
float GainSliderHandle::GetValue()
|
||||||
|
{
|
||||||
|
return static_cast<WaveTrack*>(mpTrack)->GetGain();
|
||||||
|
}
|
||||||
|
|
||||||
|
UIHandle::Result GainSliderHandle::SetValue
|
||||||
|
(AudacityProject *pProject, float newValue)
|
||||||
|
{
|
||||||
|
GetTrack()->SetGain(newValue);
|
||||||
|
|
||||||
|
// Assume linked track is wave or null
|
||||||
|
const auto link = static_cast<WaveTrack*>(mpTrack->GetLink());
|
||||||
|
if (link)
|
||||||
|
link->SetGain(newValue);
|
||||||
|
|
||||||
|
MixerBoard *const pMixerBoard = pProject->GetMixerBoard();
|
||||||
|
if (pMixerBoard)
|
||||||
|
pMixerBoard->UpdateGain(GetTrack());
|
||||||
|
|
||||||
|
return RefreshCode::RefreshNone;
|
||||||
|
}
|
||||||
|
|
||||||
|
UIHandle::Result GainSliderHandle::CommitChanges
|
||||||
|
(const wxMouseEvent &, AudacityProject *pProject)
|
||||||
|
{
|
||||||
|
pProject->PushState(_("Moved gain slider"), _("Gain"), UndoPush::CONSOLIDATE);
|
||||||
|
return RefreshCode::RefreshCell;
|
||||||
|
}
|
||||||
|
|
||||||
|
HitTestResult GainSliderHandle::HitTest
|
||||||
|
(const wxMouseEvent &event, const wxRect &rect,
|
||||||
|
const AudacityProject *pProject, Track *pTrack)
|
||||||
|
{
|
||||||
|
if (!event.Button(wxMOUSE_BTN_LEFT))
|
||||||
|
return {};
|
||||||
|
|
||||||
|
wxRect sliderRect;
|
||||||
|
TrackInfo::GetGainRect(rect.GetTopLeft(), sliderRect);
|
||||||
|
if ( TrackInfo::HideTopItem( rect, sliderRect, kTrackInfoSliderAllowance ) )
|
||||||
|
return {};
|
||||||
|
if (sliderRect.Contains(event.m_x, event.m_y)) {
|
||||||
|
WaveTrack *const wavetrack = static_cast<WaveTrack*>(pTrack);
|
||||||
|
wxRect sliderRect;
|
||||||
|
TrackInfo::GetGainRect(rect.GetTopLeft(), sliderRect);
|
||||||
|
auto slider = TrackInfo::GainSlider
|
||||||
|
(sliderRect, wavetrack, true,
|
||||||
|
const_cast<TrackPanel*>(pProject->GetTrackPanel()));
|
||||||
|
Instance().mpSlider = slider;
|
||||||
|
Instance().mpTrack = wavetrack;
|
||||||
|
return {
|
||||||
|
HitPreview(),
|
||||||
|
&Instance()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
PanSliderHandle::PanSliderHandle()
|
||||||
|
: SliderHandle()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
PanSliderHandle::~PanSliderHandle()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
PanSliderHandle &PanSliderHandle::Instance()
|
||||||
|
{
|
||||||
|
static PanSliderHandle instance;
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
WaveTrack *PanSliderHandle::GetTrack()
|
||||||
|
{
|
||||||
|
return static_cast<WaveTrack*>(mpTrack);
|
||||||
|
}
|
||||||
|
|
||||||
|
float PanSliderHandle::GetValue()
|
||||||
|
{
|
||||||
|
return GetTrack()->GetPan();
|
||||||
|
}
|
||||||
|
|
||||||
|
UIHandle::Result PanSliderHandle::SetValue(AudacityProject *pProject, float newValue)
|
||||||
|
{
|
||||||
|
#ifdef EXPERIMENTAL_OUTPUT_DISPLAY
|
||||||
|
bool panZero = false;
|
||||||
|
panZero = static_cast<WaveTrack*>(mpTrack)->SetPan(newValue);
|
||||||
|
#else
|
||||||
|
mpTrack->SetPan(newValue);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Assume linked track is wave or null
|
||||||
|
const auto link = static_cast<WaveTrack*>(mpTrack->GetLink());
|
||||||
|
if (link)
|
||||||
|
link->SetPan(newValue);
|
||||||
|
|
||||||
|
MixerBoard *const pMixerBoard = pProject->GetMixerBoard();
|
||||||
|
if (pMixerBoard)
|
||||||
|
pMixerBoard->UpdatePan(GetTrack());
|
||||||
|
|
||||||
|
using namespace RefreshCode;
|
||||||
|
Result result = RefreshNone;
|
||||||
|
|
||||||
|
#ifdef EXPERIMENTAL_OUTPUT_DISPLAY
|
||||||
|
if(panZero)
|
||||||
|
result |= FixScrollbars;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
UIHandle::Result PanSliderHandle::CommitChanges
|
||||||
|
(const wxMouseEvent &, AudacityProject *pProject)
|
||||||
|
{
|
||||||
|
pProject->PushState(_("Moved pan slider"), _("Pan"), UndoPush::CONSOLIDATE);
|
||||||
|
return RefreshCode::RefreshCell;
|
||||||
|
}
|
||||||
|
|
||||||
|
HitTestResult PanSliderHandle::HitTest
|
||||||
|
(const wxMouseEvent &event, const wxRect &rect,
|
||||||
|
const AudacityProject *pProject, Track *pTrack)
|
||||||
|
{
|
||||||
|
if (!event.Button(wxMOUSE_BTN_LEFT))
|
||||||
|
return {};
|
||||||
|
|
||||||
|
wxRect sliderRect;
|
||||||
|
TrackInfo::GetPanRect(rect.GetTopLeft(), sliderRect);
|
||||||
|
if ( TrackInfo::HideTopItem( rect, sliderRect, kTrackInfoSliderAllowance ) )
|
||||||
|
return {};
|
||||||
|
if (sliderRect.Contains(event.m_x, event.m_y)) {
|
||||||
|
WaveTrack *const wavetrack = static_cast<WaveTrack*>(pTrack);
|
||||||
|
auto slider = TrackInfo::PanSlider
|
||||||
|
(sliderRect, wavetrack, true,
|
||||||
|
const_cast<TrackPanel*>(pProject->GetTrackPanel()));
|
||||||
|
Instance().mpSlider = slider;
|
||||||
|
Instance().mpTrack = wavetrack;
|
||||||
|
return {
|
||||||
|
HitPreview(),
|
||||||
|
&Instance()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return {};
|
||||||
|
}
|
@ -0,0 +1,73 @@
|
|||||||
|
/**********************************************************************
|
||||||
|
|
||||||
|
Audacity: A Digital Audio Editor
|
||||||
|
|
||||||
|
WavelTrackSliderHandles.h
|
||||||
|
|
||||||
|
Paul Licameli split from TrackPanel.cpp
|
||||||
|
|
||||||
|
**********************************************************************/
|
||||||
|
|
||||||
|
#ifndef __AUDACITY_WAVE_TRACK_SLIDER_HANDLES__
|
||||||
|
#define __AUDACITY_WAVE_TRACK_SLIDER_HANDLES__
|
||||||
|
|
||||||
|
#include "../../../ui/SliderHandle.h"
|
||||||
|
|
||||||
|
class WaveTrack;
|
||||||
|
|
||||||
|
struct HitTestResult;
|
||||||
|
|
||||||
|
class GainSliderHandle final : public SliderHandle
|
||||||
|
{
|
||||||
|
GainSliderHandle(const GainSliderHandle&) = delete;
|
||||||
|
GainSliderHandle &operator=(const GainSliderHandle&) = delete;
|
||||||
|
|
||||||
|
GainSliderHandle();
|
||||||
|
virtual ~GainSliderHandle();
|
||||||
|
static GainSliderHandle& Instance();
|
||||||
|
|
||||||
|
WaveTrack *GetTrack();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
float GetValue() override;
|
||||||
|
Result SetValue
|
||||||
|
(AudacityProject *pProject, float newValue) override;
|
||||||
|
Result CommitChanges
|
||||||
|
(const wxMouseEvent &event, AudacityProject *pProject) override;
|
||||||
|
|
||||||
|
bool StopsOnKeystroke () override { return true; }
|
||||||
|
|
||||||
|
public:
|
||||||
|
static HitTestResult HitTest
|
||||||
|
(const wxMouseEvent &event, const wxRect &rect,
|
||||||
|
const AudacityProject *pProject, Track *pTrack);
|
||||||
|
};
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class PanSliderHandle final : public SliderHandle
|
||||||
|
{
|
||||||
|
PanSliderHandle(const PanSliderHandle&) = delete;
|
||||||
|
PanSliderHandle &operator=(const PanSliderHandle&) = delete;
|
||||||
|
|
||||||
|
PanSliderHandle();
|
||||||
|
virtual ~PanSliderHandle();
|
||||||
|
static PanSliderHandle& Instance();
|
||||||
|
|
||||||
|
WaveTrack *GetTrack();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
float GetValue() override;
|
||||||
|
Result SetValue(AudacityProject *pProject, float newValue) override;
|
||||||
|
Result CommitChanges
|
||||||
|
(const wxMouseEvent &event, AudacityProject *pProject) override;
|
||||||
|
|
||||||
|
bool StopsOnKeystroke () override { return true; }
|
||||||
|
|
||||||
|
public:
|
||||||
|
static HitTestResult HitTest
|
||||||
|
(const wxMouseEvent &event, const wxRect &rect,
|
||||||
|
const AudacityProject *pProject, Track *pTrack);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
@ -234,6 +234,7 @@
|
|||||||
<ClCompile Include="..\..\..\src\tracks\playabletrack\wavetrack\ui\CutlineHandle.cpp" />
|
<ClCompile Include="..\..\..\src\tracks\playabletrack\wavetrack\ui\CutlineHandle.cpp" />
|
||||||
<ClCompile Include="..\..\..\src\tracks\playabletrack\wavetrack\ui\SampleHandle.cpp" />
|
<ClCompile Include="..\..\..\src\tracks\playabletrack\wavetrack\ui\SampleHandle.cpp" />
|
||||||
<ClCompile Include="..\..\..\src\tracks\playabletrack\wavetrack\ui\WaveTrackControls.cpp" />
|
<ClCompile Include="..\..\..\src\tracks\playabletrack\wavetrack\ui\WaveTrackControls.cpp" />
|
||||||
|
<ClCompile Include="..\..\..\src\tracks\playabletrack\wavetrack\ui\WaveTrackSliderHandles.cpp" />
|
||||||
<ClCompile Include="..\..\..\src\tracks\playabletrack\wavetrack\ui\WaveTrackUI.cpp" />
|
<ClCompile Include="..\..\..\src\tracks\playabletrack\wavetrack\ui\WaveTrackUI.cpp" />
|
||||||
<ClCompile Include="..\..\..\src\tracks\playabletrack\wavetrack\ui\WaveTrackVRulerControls.cpp" />
|
<ClCompile Include="..\..\..\src\tracks\playabletrack\wavetrack\ui\WaveTrackVRulerControls.cpp" />
|
||||||
<ClCompile Include="..\..\..\src\tracks\timetrack\ui\TimeTrackControls.cpp" />
|
<ClCompile Include="..\..\..\src\tracks\timetrack\ui\TimeTrackControls.cpp" />
|
||||||
@ -501,6 +502,7 @@
|
|||||||
<ClInclude Include="..\..\..\src\tracks\playabletrack\wavetrack\ui\CutlineHandle.h" />
|
<ClInclude Include="..\..\..\src\tracks\playabletrack\wavetrack\ui\CutlineHandle.h" />
|
||||||
<ClInclude Include="..\..\..\src\tracks\playabletrack\wavetrack\ui\SampleHandle.h" />
|
<ClInclude Include="..\..\..\src\tracks\playabletrack\wavetrack\ui\SampleHandle.h" />
|
||||||
<ClInclude Include="..\..\..\src\tracks\playabletrack\wavetrack\ui\WaveTrackControls.h" />
|
<ClInclude Include="..\..\..\src\tracks\playabletrack\wavetrack\ui\WaveTrackControls.h" />
|
||||||
|
<ClInclude Include="..\..\..\src\tracks\playabletrack\wavetrack\ui\WaveTrackSliderHandles.h" />
|
||||||
<ClInclude Include="..\..\..\src\tracks\playabletrack\wavetrack\ui\WaveTrackVRulerControls.h" />
|
<ClInclude Include="..\..\..\src\tracks\playabletrack\wavetrack\ui\WaveTrackVRulerControls.h" />
|
||||||
<ClInclude Include="..\..\..\src\tracks\ui\CommonTrackPanelCell.h" />
|
<ClInclude Include="..\..\..\src\tracks\ui\CommonTrackPanelCell.h" />
|
||||||
<ClInclude Include="..\..\..\src\tracks\labeltrack\ui\LabelTrackControls.h" />
|
<ClInclude Include="..\..\..\src\tracks\labeltrack\ui\LabelTrackControls.h" />
|
||||||
|
@ -1016,6 +1016,9 @@
|
|||||||
<ClCompile Include="..\..\..\src\tracks\playabletrack\ui\PlayableTrackButtonHandles.cpp">
|
<ClCompile Include="..\..\..\src\tracks\playabletrack\ui\PlayableTrackButtonHandles.cpp">
|
||||||
<Filter>src\tracks\playabletrack\ui</Filter>
|
<Filter>src\tracks\playabletrack\ui</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\src\tracks\playabletrack\wavetrack\ui\WaveTrackSliderHandles.cpp">
|
||||||
|
<Filter>src\tracks\playabletrack\wavetrack\ui</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="..\..\..\src\AboutDialog.h">
|
<ClInclude Include="..\..\..\src\AboutDialog.h">
|
||||||
@ -2023,6 +2026,9 @@
|
|||||||
<ClInclude Include="..\..\..\src\tracks\playabletrack\ui\PlayableTrackButtonHandles.h">
|
<ClInclude Include="..\..\..\src\tracks\playabletrack\ui\PlayableTrackButtonHandles.h">
|
||||||
<Filter>src\tracks\playabletrack\ui</Filter>
|
<Filter>src\tracks\playabletrack\ui</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\src\tracks\playabletrack\wavetrack\ui\WaveTrackSliderHandles.h">
|
||||||
|
<Filter>src\tracks\playabletrack\wavetrack\ui</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Image Include="..\..\audacity.ico">
|
<Image Include="..\..\audacity.ico">
|
||||||
|
Loading…
x
Reference in New Issue
Block a user