From e2adccb4613f0d492b046bba13237a40ed42ff5e Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Mon, 6 Jan 2020 12:41:25 -0500 Subject: [PATCH] Don't use GetActiveProject drawing pan, gain, velocity sliders --- .../notetrack/ui/NoteTrackControls.cpp | 15 +++++++--- .../wavetrack/ui/WaveTrackControls.cpp | 29 +++++++++++++------ 2 files changed, 31 insertions(+), 13 deletions(-) diff --git a/src/tracks/playabletrack/notetrack/ui/NoteTrackControls.cpp b/src/tracks/playabletrack/notetrack/ui/NoteTrackControls.cpp index 86dd2d565..22003abb6 100644 --- a/src/tracks/playabletrack/notetrack/ui/NoteTrackControls.cpp +++ b/src/tracks/playabletrack/notetrack/ui/NoteTrackControls.cpp @@ -20,6 +20,8 @@ Paul Licameli split from TrackPanel.cpp #include "NoteTrackSliderHandles.h" #include "../../../../HitTestResult.h" +#include "../../../../TrackArtist.h" +#include "../../../../TrackPanel.h" #include "../../../../TrackPanelMouseEvent.h" #include "../../../../NoteTrack.h" #include "../../../../widgets/PopupMenuTable.h" @@ -174,12 +176,13 @@ void SliderDrawFunction ( LWSlider *(*Selector) (const wxRect &sliderRect, const NoteTrack *t, bool captured, wxWindow*), wxDC *dc, const wxRect &rect, const Track *pTrack, + wxWindow *pParent, bool captured, bool highlight ) { wxRect sliderRect = rect; TrackInfo::GetSliderHorizontalBounds( rect.GetTopLeft(), sliderRect ); auto nt = static_cast( pTrack ); - Selector( sliderRect, nt, captured, nullptr )->OnPaint(*dc, highlight); + Selector( sliderRect, nt, captured, pParent )->OnPaint(*dc, highlight); } void VelocitySliderDrawFunction @@ -190,8 +193,13 @@ void VelocitySliderDrawFunction auto target = dynamic_cast( context.target.get() ); bool hit = target && target->GetTrack().get() == pTrack; bool captured = hit && target->IsClicked(); + + const auto artist = TrackArtist::Get( context ); + auto pParent = FindProjectFrame( artist->parent->GetProject() ); + SliderDrawFunction( - &NoteTrackControls::VelocitySlider, dc, rect, pTrack, captured, hit); + &NoteTrackControls::VelocitySlider, dc, rect, pTrack, + pParent, captured, hit); } void MidiControlsDrawFunction @@ -279,8 +287,7 @@ LWSlider * NoteTrackControls::VelocitySlider gVelocityCaptured->Set(velocity); auto slider = (captured ? gVelocityCaptured : gVelocity).get(); - slider->SetParent( pParent ? pParent : - FindProjectFrame( ::GetActiveProject() ) ); + slider->SetParent( pParent ); return slider; } #endif diff --git a/src/tracks/playabletrack/wavetrack/ui/WaveTrackControls.cpp b/src/tracks/playabletrack/wavetrack/ui/WaveTrackControls.cpp index 7c5befad7..ff76f4326 100644 --- a/src/tracks/playabletrack/wavetrack/ui/WaveTrackControls.cpp +++ b/src/tracks/playabletrack/wavetrack/ui/WaveTrackControls.cpp @@ -25,6 +25,8 @@ Paul Licameli split from TrackPanel.cpp #include "../../../../ProjectHistory.h" #include "../../../../RefreshCode.h" #include "../../../../ShuttleGui.h" +#include "../../../../TrackArtist.h" +#include "../../../../TrackPanel.h" #include "../../../../TrackPanelAx.h" #include "../../../../TrackPanelMouseEvent.h" #include "../../../../WaveTrack.h" @@ -1098,12 +1100,13 @@ void SliderDrawFunction ( LWSlider *(*Selector) (const wxRect &sliderRect, const WaveTrack *t, bool captured, wxWindow*), wxDC *dc, const wxRect &rect, const Track *pTrack, + wxWindow *pParent, bool captured, bool highlight ) { wxRect sliderRect = rect; TrackInfo::GetSliderHorizontalBounds( rect.GetTopLeft(), sliderRect ); auto wt = static_cast( pTrack ); - Selector( sliderRect, wt, captured, nullptr )->OnPaint(*dc, highlight); + Selector( sliderRect, wt, captured, pParent )->OnPaint(*dc, highlight); } void PanSliderDrawFunction @@ -1114,8 +1117,13 @@ void PanSliderDrawFunction auto dc = &context.dc; bool hit = target && target->GetTrack().get() == pTrack; bool captured = hit && target->IsClicked(); - SliderDrawFunction - ( &WaveTrackControls::PanSlider, dc, rect, pTrack, captured, hit); + + const auto artist = TrackArtist::Get( context ); + auto pParent = FindProjectFrame( artist->parent->GetProject() ); + + SliderDrawFunction( + &WaveTrackControls::PanSlider, dc, rect, pTrack, + pParent, captured, hit); } void GainSliderDrawFunction @@ -1128,8 +1136,13 @@ void GainSliderDrawFunction if( hit ) hit=hit; bool captured = hit && target->IsClicked(); - SliderDrawFunction - ( &WaveTrackControls::GainSlider, dc, rect, pTrack, captured, hit); + + const auto artist = TrackArtist::Get( context ); + auto pParent = FindProjectFrame( artist->parent->GetProject() ); + + SliderDrawFunction( + &WaveTrackControls::GainSlider, dc, rect, pTrack, + pParent, captured, hit); } void StatusDrawFunction @@ -1269,8 +1282,7 @@ LWSlider * WaveTrackControls::GainSlider gGainCaptured->Set(gain); auto slider = (captured ? gGainCaptured : gGain).get(); - slider->SetParent( pParent ? pParent : - FindProjectFrame( ::GetActiveProject() ) ); + slider->SetParent( pParent ); return slider; } @@ -1326,8 +1338,7 @@ LWSlider * WaveTrackControls::PanSlider gPanCaptured->Set(pan); auto slider = (captured ? gPanCaptured : gPan).get(); - slider->SetParent( pParent ? pParent : - FindProjectFrame( ::GetActiveProject() ) ); + slider->SetParent( pParent ); return slider; }