mirror of
https://github.com/cookiengineer/audacity
synced 2025-11-14 17:14:07 +01:00
WaveTrackView now delegates to the proper sub-view...
... by a redefined area subdivision policy in TrackPanel So the SpectrumView, WaveformView, and associated ruler and handle classes find real use, while WaveTrackView is really used only for its height and to supply the delegate, and WaveTrackVRulerControls and WaveTrackVZoomHandle are not used There is also some anticipation of multiple track views
This commit is contained in:
@@ -85,6 +85,19 @@ WaveTrackView::DoDetailedHitTest
|
||||
return { false, results };
|
||||
}
|
||||
|
||||
auto WaveTrackView::GetSubViews( const wxRect &rect ) -> Refinement
|
||||
{
|
||||
auto wt = static_cast<WaveTrack*>( FindTrack().get() );
|
||||
return {
|
||||
{
|
||||
rect.GetTop(),
|
||||
wt->GetDisplay() == WaveTrackViewConstants::Waveform
|
||||
? mWaveformView
|
||||
: mSpectrumView
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
void WaveTrackView::DoSetMinimized( bool minimized )
|
||||
{
|
||||
auto wt = static_cast<WaveTrack*>( FindTrack().get() );
|
||||
|
||||
@@ -50,6 +50,9 @@ private:
|
||||
const std::shared_ptr<WaveTrack> &wt,
|
||||
CommonTrackView &view);
|
||||
|
||||
// TrackView implementation
|
||||
Refinement GetSubViews( const wxRect &rect ) override;
|
||||
|
||||
protected:
|
||||
void DoSetMinimized( bool minimized ) override;
|
||||
|
||||
|
||||
@@ -33,16 +33,6 @@ TrackVRulerControls::~TrackVRulerControls()
|
||||
{
|
||||
}
|
||||
|
||||
TrackVRulerControls &TrackVRulerControls::Get( Track &track )
|
||||
{
|
||||
return *TrackView::Get( track ).GetVRulerControls();
|
||||
}
|
||||
|
||||
const TrackVRulerControls &TrackVRulerControls::Get( const Track &track )
|
||||
{
|
||||
return *TrackView::Get( track ).GetVRulerControls();
|
||||
}
|
||||
|
||||
TrackVRulerControls &TrackVRulerControls::Get( TrackView &trackView )
|
||||
{
|
||||
return *trackView.GetVRulerControls();
|
||||
|
||||
@@ -28,9 +28,6 @@ public:
|
||||
|
||||
virtual ~TrackVRulerControls() = 0;
|
||||
|
||||
static TrackVRulerControls &Get( Track& );
|
||||
static const TrackVRulerControls &Get( const Track& );
|
||||
|
||||
static TrackVRulerControls &Get( TrackView& );
|
||||
static const TrackVRulerControls &Get( const TrackView& );
|
||||
|
||||
|
||||
@@ -106,6 +106,11 @@ bool TrackView::HandleXMLAttribute( const wxChar *attr, const wxChar *value )
|
||||
return false;
|
||||
}
|
||||
|
||||
auto TrackView::GetSubViews( const wxRect &rect ) -> Refinement
|
||||
{
|
||||
return { { rect.GetTop(), shared_from_this() } };
|
||||
}
|
||||
|
||||
void TrackView::DoSetMinimized(bool isMinimized)
|
||||
{
|
||||
mMinimized = isMinimized;
|
||||
|
||||
@@ -72,6 +72,13 @@ public:
|
||||
void WriteXMLAttributes( XMLWriter & ) const override;
|
||||
bool HandleXMLAttribute( const wxChar *attr, const wxChar *value ) override;
|
||||
|
||||
// New virtual function. The default just returns a one-element array
|
||||
// containing this. Overrides might refine the Y axis.
|
||||
using Refinement = std::vector< std::pair<
|
||||
wxCoord, std::shared_ptr< TrackView >
|
||||
> >;
|
||||
virtual Refinement GetSubViews( const wxRect &rect );
|
||||
|
||||
protected:
|
||||
virtual void DoSetMinimized( bool isMinimized );
|
||||
|
||||
|
||||
Reference in New Issue
Block a user