From 335478270b56d50a2ef208409dc3a39b59b5aae1 Mon Sep 17 00:00:00 2001 From: Vitaly Sverchinsky Date: Tue, 20 Jul 2021 00:41:34 +0300 Subject: [PATCH] EmptyPanelRect selection fix --- src/TrackPanel.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/TrackPanel.cpp b/src/TrackPanel.cpp index 077981274..4761c735a 100644 --- a/src/TrackPanel.cpp +++ b/src/TrackPanel.cpp @@ -1273,10 +1273,12 @@ struct VRulersAndChannels final : TrackPanelGroup { //Simply fills area using specified brush and outlines borders class EmptyPanelRect final : public CommonTrackPanelCell { + //Required to keep selection behaviour similar to others + std::shared_ptr mTrack; int mFillBrushName; public: - explicit EmptyPanelRect(int fillBrushName) - : mFillBrushName(fillBrushName) + explicit EmptyPanelRect(const std::shared_ptr& track, int fillBrushName) + : mTrack(track), mFillBrushName(fillBrushName) { } @@ -1296,7 +1298,7 @@ public: std::shared_ptr DoFindTrack() override { - return {}; + return mTrack; } std::vector HitTest(const TrackPanelMouseState& state, const AudacityProject* pProject) @@ -1342,8 +1344,11 @@ struct ChannelGroup final : TrackPanelGroup { auto &view = TrackView::Get( *channel ); if (auto affordance = view.GetAffordanceControls()) { + auto panelRect = std::make_shared( + channel->shared_from_this(), + channel->GetSelected() ? clrTrackInfoSelected : clrTrackInfo); Refinement hgroup { - std::make_pair(rect.GetLeft() + 1, std::make_shared(channel->GetSelected() ? clrTrackInfoSelected : clrTrackInfo)), + std::make_pair(rect.GetLeft() + 1, panelRect), std::make_pair(mLeftOffset, affordance) }; refinement.emplace_back(yy, std::make_shared(hgroup));