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