mirror of
https://github.com/cookiengineer/audacity
synced 2025-09-17 16:50:26 +02:00
AdornedRulerPanel updates the play region in selection event handler
This commit is contained in:
parent
33f3d4b82d
commit
ed33fdebc9
@ -945,6 +945,9 @@ AdornedRulerPanel::AdornedRulerPanel(AudacityProject* project,
|
||||
this->CallAfter( &AdornedRulerPanel::UpdatePrefs );
|
||||
|
||||
wxTheApp->Bind(EVT_THEME_CHANGE, &AdornedRulerPanel::OnThemeChange, this);
|
||||
|
||||
mViewInfo->selectedRegion.Bind(EVT_SELECTED_REGION_CHANGE,
|
||||
&AdornedRulerPanel::OnSelectionChange, this);
|
||||
}
|
||||
|
||||
AdornedRulerPanel::~AdornedRulerPanel()
|
||||
@ -1129,25 +1132,19 @@ void AdornedRulerPanel::DoIdle()
|
||||
auto &project = *mProject;
|
||||
auto &viewInfo = ViewInfo::Get( project );
|
||||
const auto &selectedRegion = viewInfo.selectedRegion;
|
||||
auto &playRegion = ViewInfo::Get( project ).playRegion;
|
||||
|
||||
bool dirtySelectedRegion = mDirtySelectedRegion
|
||||
|| ( mLastDrawnSelectedRegion != selectedRegion );
|
||||
|
||||
auto gAudioIO = AudioIOBase::Get();
|
||||
if (!gAudioIO->IsBusy() && !playRegion.Locked() && dirtySelectedRegion)
|
||||
SetPlayRegion( selectedRegion.t0(), selectedRegion.t1() );
|
||||
else {
|
||||
changed = changed
|
||||
|| dirtySelectedRegion
|
||||
|| mLastDrawnH != viewInfo.h
|
||||
|| mLastDrawnZoom != viewInfo.GetZoom()
|
||||
;
|
||||
if (changed)
|
||||
// Cause ruler redraw anyway, because we may be zooming or scrolling,
|
||||
// showing or hiding the scrub bar, etc.
|
||||
Refresh();
|
||||
}
|
||||
changed = changed
|
||||
|| dirtySelectedRegion
|
||||
|| mLastDrawnH != viewInfo.h
|
||||
|| mLastDrawnZoom != viewInfo.GetZoom()
|
||||
;
|
||||
if (changed)
|
||||
// Cause ruler redraw anyway, because we may be zooming or scrolling,
|
||||
// showing or hiding the scrub bar, etc.
|
||||
Refresh();
|
||||
|
||||
mDirtySelectedRegion = false;
|
||||
}
|
||||
@ -1231,6 +1228,21 @@ void AdornedRulerPanel::OnThemeChange(wxCommandEvent& evt)
|
||||
ReCreateButtons();
|
||||
}
|
||||
|
||||
void AdornedRulerPanel::OnSelectionChange(SelectedRegionEvent& evt)
|
||||
{
|
||||
evt.Skip();
|
||||
|
||||
auto gAudioIO = AudioIOBase::Get();
|
||||
if ( !gAudioIO->IsBusy() &&
|
||||
!ViewInfo::Get( *mProject ).playRegion.Locked()
|
||||
) {
|
||||
if (!evt.pRegion)
|
||||
return;
|
||||
auto &selectedRegion = *evt.pRegion;
|
||||
SetPlayRegion( selectedRegion.t0(), selectedRegion.t1() );
|
||||
}
|
||||
}
|
||||
|
||||
bool AdornedRulerPanel::UpdateRects()
|
||||
{
|
||||
auto inner = mOuter;
|
||||
|
@ -17,6 +17,7 @@
|
||||
#include "ViewInfo.h" // for PlayRegion
|
||||
|
||||
class AudacityProject;
|
||||
class SelectedRegionEvent;
|
||||
class SnapManager;
|
||||
class TrackList;
|
||||
|
||||
@ -85,6 +86,7 @@ private:
|
||||
void OnPaint(wxPaintEvent &evt);
|
||||
void OnSize(wxSizeEvent &evt);
|
||||
void OnThemeChange(wxCommandEvent& evt);
|
||||
void OnSelectionChange(SelectedRegionEvent& evt);
|
||||
bool UpdateRects();
|
||||
void HandleQPClick(wxMouseEvent &event, wxCoord mousePosX);
|
||||
void HandleQPDrag(wxMouseEvent &event, wxCoord mousePosX);
|
||||
|
Loading…
x
Reference in New Issue
Block a user