mirror of
https://github.com/cookiengineer/audacity
synced 2025-08-10 17:11:17 +02:00
Affordance cell reference removed from TrackView
Subclasses should provide instances instead (cherry picked from audacity commit bc8c6d4ccc6ffffa1fb1b30f3a9a5fe578f74ec1) Signed-off-by: akleja <storspov@gmail.com>
This commit is contained in:
parent
f969701756
commit
62fe78b0ef
@ -76,9 +76,13 @@ std::shared_ptr<TrackVRulerControls> NoteTrackView::DoGetVRulerControls()
|
|||||||
#define TIME_TO_X(t) (zoomInfo.TimeToPosition((t), rect.x))
|
#define TIME_TO_X(t) (zoomInfo.TimeToPosition((t), rect.x))
|
||||||
#define X_TO_TIME(xx) (zoomInfo.PositionToTime((xx), rect.x))
|
#define X_TO_TIME(xx) (zoomInfo.PositionToTime((xx), rect.x))
|
||||||
|
|
||||||
std::shared_ptr<CommonTrackCell> NoteTrackView::DoGetAffordanceControls()
|
std::shared_ptr<CommonTrackCell> NoteTrackView::GetAffordanceControls()
|
||||||
{
|
{
|
||||||
return std::make_shared<NoteTrackAffordanceControls>(DoFindTrack());
|
if (mpAffordanceCellControl == nullptr)
|
||||||
|
{
|
||||||
|
mpAffordanceCellControl = std::make_shared<NoteTrackAffordanceControls>(DoFindTrack());
|
||||||
|
}
|
||||||
|
return mpAffordanceCellControl;
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
@ -25,7 +25,7 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
std::shared_ptr<TrackVRulerControls> DoGetVRulerControls() override;
|
std::shared_ptr<TrackVRulerControls> DoGetVRulerControls() override;
|
||||||
std::shared_ptr<CommonTrackCell> DoGetAffordanceControls() override;
|
std::shared_ptr<CommonTrackCell> GetAffordanceControls() override;
|
||||||
|
|
||||||
std::vector<UIHandlePtr> DetailedHitTest
|
std::vector<UIHandlePtr> DetailedHitTest
|
||||||
(const TrackPanelMouseState &state,
|
(const TrackPanelMouseState &state,
|
||||||
@ -36,5 +36,7 @@ private:
|
|||||||
void Draw(
|
void Draw(
|
||||||
TrackPanelDrawingContext &context,
|
TrackPanelDrawingContext &context,
|
||||||
const wxRect &rect, unsigned iPass ) override;
|
const wxRect &rect, unsigned iPass ) override;
|
||||||
|
|
||||||
|
std::shared_ptr<CommonTrackCell> mpAffordanceCellControl;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
@ -1085,9 +1085,9 @@ WaveTrackView::GetAllSubViews()
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<CommonTrackCell> WaveTrackView::DoGetAffordanceControls()
|
std::shared_ptr<CommonTrackCell> WaveTrackView::GetAffordanceControls()
|
||||||
{
|
{
|
||||||
return std::make_shared<WaveTrackAffordanceControls>(FindTrack());
|
return DoGetAffordance(FindTrack());
|
||||||
}
|
}
|
||||||
|
|
||||||
void WaveTrackView::DoSetMinimized( bool minimized )
|
void WaveTrackView::DoSetMinimized( bool minimized )
|
||||||
@ -1101,6 +1101,13 @@ void WaveTrackView::DoSetMinimized( bool minimized )
|
|||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<CommonTrackCell> WaveTrackView::DoGetAffordance(const std::shared_ptr<Track>& track)
|
||||||
|
{
|
||||||
|
if (mpAffordanceCellControl == nullptr)
|
||||||
|
mpAffordanceCellControl = std::make_shared<WaveTrackAffordanceControls>(track);
|
||||||
|
return mpAffordanceCellControl;
|
||||||
|
}
|
||||||
|
|
||||||
using DoGetWaveTrackView = DoGetView::Override< WaveTrack >;
|
using DoGetWaveTrackView = DoGetView::Override< WaveTrack >;
|
||||||
template<> template<> auto DoGetWaveTrackView::Implementation() -> Function {
|
template<> template<> auto DoGetWaveTrackView::Implementation() -> Function {
|
||||||
return [](WaveTrack &track) {
|
return [](WaveTrack &track) {
|
||||||
|
@ -158,7 +158,7 @@ private:
|
|||||||
Refinement GetSubViews(const wxRect& rect) override;
|
Refinement GetSubViews(const wxRect& rect) override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
std::shared_ptr<CommonTrackCell> DoGetAffordanceControls() override;
|
std::shared_ptr<CommonTrackCell> GetAffordanceControls() override;
|
||||||
|
|
||||||
void DoSetMinimized( bool minimized ) override;
|
void DoSetMinimized( bool minimized ) override;
|
||||||
|
|
||||||
@ -169,6 +169,11 @@ protected:
|
|||||||
mutable wxCoord mLastHeight{};
|
mutable wxCoord mLastHeight{};
|
||||||
|
|
||||||
bool mMultiView{ false };
|
bool mMultiView{ false };
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::shared_ptr<CommonTrackCell> DoGetAffordance(const std::shared_ptr<Track>& track);
|
||||||
|
|
||||||
|
std::shared_ptr<CommonTrackCell> mpAffordanceCellControl;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Helper for drawing routines
|
// Helper for drawing routines
|
||||||
|
@ -141,13 +141,6 @@ std::shared_ptr<const TrackVRulerControls> TrackView::GetVRulerControls() const
|
|||||||
return const_cast< TrackView* >( this )->GetVRulerControls();
|
return const_cast< TrackView* >( this )->GetVRulerControls();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<CommonTrackCell> TrackView::GetAffordanceControls()
|
|
||||||
{
|
|
||||||
if (!mpAffordanceCellControl)
|
|
||||||
mpAffordanceCellControl = DoGetAffordanceControls();
|
|
||||||
return mpAffordanceCellControl;
|
|
||||||
}
|
|
||||||
|
|
||||||
void TrackView::DoSetY(int y)
|
void TrackView::DoSetY(int y)
|
||||||
{
|
{
|
||||||
mY = y;
|
mY = y;
|
||||||
@ -172,7 +165,7 @@ void TrackView::DoSetHeight(int h)
|
|||||||
mHeight = h;
|
mHeight = h;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<CommonTrackCell> TrackView::DoGetAffordanceControls()
|
std::shared_ptr<CommonTrackCell> TrackView::GetAffordanceControls()
|
||||||
{
|
{
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
@ -85,9 +85,9 @@ public:
|
|||||||
std::shared_ptr<TrackVRulerControls> GetVRulerControls();
|
std::shared_ptr<TrackVRulerControls> GetVRulerControls();
|
||||||
std::shared_ptr<const TrackVRulerControls> GetVRulerControls() const;
|
std::shared_ptr<const TrackVRulerControls> GetVRulerControls() const;
|
||||||
|
|
||||||
// by default returns nullptr, meaning that track has no drag controls area
|
// Returns cell that would be used at affordance area, by default returns nullptr,
|
||||||
std::shared_ptr<CommonTrackCell> GetAffordanceControls();
|
// meaning that track has no such area.
|
||||||
|
virtual std::shared_ptr<CommonTrackCell> GetAffordanceControls();
|
||||||
|
|
||||||
void WriteXMLAttributes( XMLWriter & ) const override;
|
void WriteXMLAttributes( XMLWriter & ) const override;
|
||||||
bool HandleXMLAttribute( const wxChar *attr, const wxChar *value ) override;
|
bool HandleXMLAttribute( const wxChar *attr, const wxChar *value ) override;
|
||||||
@ -116,11 +116,8 @@ protected:
|
|||||||
// Private factory to make appropriate object; class TrackView handles
|
// Private factory to make appropriate object; class TrackView handles
|
||||||
// memory management thereafter
|
// memory management thereafter
|
||||||
virtual std::shared_ptr<TrackVRulerControls> DoGetVRulerControls() = 0;
|
virtual std::shared_ptr<TrackVRulerControls> DoGetVRulerControls() = 0;
|
||||||
// May return nullptr (which is default) if track does not need affordance area
|
|
||||||
virtual std::shared_ptr<CommonTrackCell> DoGetAffordanceControls();
|
|
||||||
|
|
||||||
std::shared_ptr<TrackVRulerControls> mpVRulerControls;
|
std::shared_ptr<TrackVRulerControls> mpVRulerControls;
|
||||||
std::shared_ptr<CommonTrackCell> mpAffordanceCellControl;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool mMinimized{ false };
|
bool mMinimized{ false };
|
||||||
|
Loading…
x
Reference in New Issue
Block a user