Store the selection range for the audio display srollbar in pixels so it remains valid when the zoom changes
Originally committed to SVN as r6292.
This commit is contained in:
parent
3ec9514636
commit
9166eb1d6b
1 changed files with 7 additions and 10 deletions
|
@ -189,8 +189,8 @@ public:
|
||||||
|
|
||||||
void SetSelection(int new_start, int new_length)
|
void SetSelection(int new_start, int new_length)
|
||||||
{
|
{
|
||||||
sel_start = new_start;
|
sel_start = (int64_t)new_start * bounds.width / data_length;
|
||||||
sel_length = new_length;
|
sel_length = (int64_t)new_length * bounds.width / data_length;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ChangeLengths(int new_data_length, int new_page_length)
|
void ChangeLengths(int new_data_length, int new_page_length)
|
||||||
|
@ -231,15 +231,9 @@ public:
|
||||||
|
|
||||||
if (sel_length > 0 && sel_start >= 0)
|
if (sel_length > 0 && sel_start >= 0)
|
||||||
{
|
{
|
||||||
wxRect r;
|
|
||||||
r.x = int((int64_t)sel_start * bounds.width / data_length);
|
|
||||||
r.y = bounds.y;
|
|
||||||
r.width = int((int64_t)sel_length * bounds.width / data_length);
|
|
||||||
r.height = bounds.height;
|
|
||||||
|
|
||||||
dc.SetPen(wxPen(colours.Selection()));
|
dc.SetPen(wxPen(colours.Selection()));
|
||||||
dc.SetBrush(wxBrush(colours.Selection()));
|
dc.SetBrush(wxBrush(colours.Selection()));
|
||||||
dc.DrawRectangle(r);
|
dc.DrawRectangle(wxRect(sel_start, bounds.y, sel_length, bounds.height));
|
||||||
}
|
}
|
||||||
|
|
||||||
dc.SetPen(wxPen(colours.Light()));
|
dc.SetPen(wxPen(colours.Light()));
|
||||||
|
@ -1176,8 +1170,11 @@ void AudioDisplay::OnSize(wxSizeEvent &)
|
||||||
// We changed size, update the sub-controls' internal data and redraw
|
// We changed size, update the sub-controls' internal data and redraw
|
||||||
wxSize size = GetClientSize();
|
wxSize size = GetClientSize();
|
||||||
|
|
||||||
scrollbar->SetDisplaySize(size);
|
|
||||||
timeline->SetDisplaySize(wxSize(size.x, scrollbar->GetBounds().y));
|
timeline->SetDisplaySize(wxSize(size.x, scrollbar->GetBounds().y));
|
||||||
|
scrollbar->SetDisplaySize(size);
|
||||||
|
|
||||||
|
SampleRange sel(controller->GetPrimaryPlaybackRange());
|
||||||
|
scrollbar->SetSelection(AbsoluteXFromSamples(sel.begin()), AbsoluteXFromSamples(sel.length()));
|
||||||
|
|
||||||
audio_height = size.GetHeight();
|
audio_height = size.GetHeight();
|
||||||
audio_height -= scrollbar->GetBounds().GetHeight();
|
audio_height -= scrollbar->GetBounds().GetHeight();
|
||||||
|
|
Loading…
Reference in a new issue