mirror of
https://github.com/cookiengineer/audacity
synced 2026-04-26 07:53:42 +02:00
Bug 1392: don't draw indicator over track control during quick play
This commit is contained in:
@@ -142,12 +142,20 @@ void PlayIndicatorOverlay::OnTimer(wxCommandEvent &event)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto trackPanel = mProject->GetTrackPanel();
|
||||||
|
|
||||||
if (!mProject->IsAudioActive()) {
|
if (!mProject->IsAudioActive()) {
|
||||||
|
mNewIndicatorX = -1;
|
||||||
const auto &scrubber = mProject->GetScrubber();
|
const auto &scrubber = mProject->GetScrubber();
|
||||||
if (scrubber.HasStartedScrubbing())
|
if (scrubber.HasStartedScrubbing()) {
|
||||||
mNewIndicatorX = scrubber.GetScrubStartPosition();
|
auto position = scrubber.GetScrubStartPosition();
|
||||||
else
|
int width;
|
||||||
mNewIndicatorX = -1;
|
trackPanel->GetTracksUsableArea(&width, nullptr);
|
||||||
|
const auto offset = trackPanel->GetLeftOffset();
|
||||||
|
if(position >= trackPanel->GetLeftOffset() &&
|
||||||
|
position < offset + width)
|
||||||
|
mNewIndicatorX = position;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ViewInfo &viewInfo = mProject->GetViewInfo();
|
ViewInfo &viewInfo = mProject->GetViewInfo();
|
||||||
@@ -155,7 +163,7 @@ void PlayIndicatorOverlay::OnTimer(wxCommandEvent &event)
|
|||||||
// Calculate the horizontal position of the indicator
|
// Calculate the horizontal position of the indicator
|
||||||
const double playPos = viewInfo.mRecentStreamTime;
|
const double playPos = viewInfo.mRecentStreamTime;
|
||||||
|
|
||||||
const bool onScreen = playPos >= 0.0 &&
|
bool onScreen = playPos >= 0.0 &&
|
||||||
between_incexc(viewInfo.h,
|
between_incexc(viewInfo.h,
|
||||||
playPos,
|
playPos,
|
||||||
mProject->GetScreenEndTime());
|
mProject->GetScreenEndTime());
|
||||||
@@ -176,6 +184,11 @@ void PlayIndicatorOverlay::OnTimer(wxCommandEvent &event)
|
|||||||
!gAudioIO->IsPaused())
|
!gAudioIO->IsPaused())
|
||||||
{
|
{
|
||||||
mProject->TP_ScrollWindow(playPos);
|
mProject->TP_ScrollWindow(playPos);
|
||||||
|
// Might yet be off screen, check it
|
||||||
|
onScreen = playPos >= 0.0 &&
|
||||||
|
between_incexc(viewInfo.h,
|
||||||
|
playPos,
|
||||||
|
mProject->GetScreenEndTime());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Always update scrollbars even if not scrolling the window. This is
|
// Always update scrollbars even if not scrolling the window. This is
|
||||||
@@ -183,7 +196,10 @@ void PlayIndicatorOverlay::OnTimer(wxCommandEvent &event)
|
|||||||
// length of the project and therefore the appearance of the scrollbar.
|
// length of the project and therefore the appearance of the scrollbar.
|
||||||
mProject->TP_RedrawScrollbars();
|
mProject->TP_RedrawScrollbars();
|
||||||
|
|
||||||
mNewIndicatorX = viewInfo.TimeToPosition(playPos, mProject->GetTrackPanel()->GetLeftOffset());
|
if (onScreen)
|
||||||
|
mNewIndicatorX = viewInfo.TimeToPosition(playPos, trackPanel->GetLeftOffset());
|
||||||
|
else
|
||||||
|
mNewIndicatorX = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mPartner)
|
if(mPartner)
|
||||||
|
|||||||
Reference in New Issue
Block a user