mirror of https://github.com/odrling/Aegisub
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
|
@ -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 New Issue