1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-08-02 17:09:26 +02:00

Fix window sizing and meter drawing

This commit is contained in:
Leland Lucius 2015-05-19 09:45:36 -05:00
parent 21d69946e4
commit 7f96d16fb3

View File

@ -73,7 +73,6 @@ public:
virtual ~LV2EffectMeter(); virtual ~LV2EffectMeter();
private: private:
void OnErase(wxEraseEvent & evt);
void OnPaint(wxPaintEvent & evt); void OnPaint(wxPaintEvent & evt);
void OnIdle(wxIdleEvent & evt); void OnIdle(wxIdleEvent & evt);
void OnSize(wxSizeEvent & evt); void OnSize(wxSizeEvent & evt);
@ -87,7 +86,6 @@ private:
BEGIN_EVENT_TABLE(LV2EffectMeter, wxWindow) BEGIN_EVENT_TABLE(LV2EffectMeter, wxWindow)
EVT_IDLE(LV2EffectMeter::OnIdle) EVT_IDLE(LV2EffectMeter::OnIdle)
EVT_ERASE_BACKGROUND(LV2EffectMeter::OnErase)
EVT_PAINT(LV2EffectMeter::OnPaint) EVT_PAINT(LV2EffectMeter::OnPaint)
EVT_SIZE(LV2EffectMeter::OnSize) EVT_SIZE(LV2EffectMeter::OnSize)
END_EVENT_TABLE() END_EVENT_TABLE()
@ -111,11 +109,6 @@ void LV2EffectMeter::OnIdle(wxIdleEvent & WXUNUSED(evt))
} }
} }
void LV2EffectMeter::OnErase(wxEraseEvent & WXUNUSED(evt))
{
// Just ignore it to prevent flashing
}
void LV2EffectMeter::OnPaint(wxPaintEvent & WXUNUSED(evt)) void LV2EffectMeter::OnPaint(wxPaintEvent & WXUNUSED(evt))
{ {
wxDC *dc = wxAutoBufferedPaintDCFactory(this); wxDC *dc = wxAutoBufferedPaintDCFactory(this);
@ -137,12 +130,13 @@ void LV2EffectMeter::OnPaint(wxPaintEvent & WXUNUSED(evt))
{ {
val = mCtrl.mMin; val = mCtrl.mMin;
} }
val -= mCtrl.mMin;
// Setup for erasing the background // Setup for erasing the background
dc->SetPen(*wxTRANSPARENT_PEN); dc->SetPen(*wxTRANSPARENT_PEN);
dc->SetBrush(wxColour(100, 100, 220)); dc->SetBrush(wxColour(100, 100, 220));
dc->DrawRectangle(x, y, (w * (val / (mCtrl.mMax - mCtrl.mMin))), h); dc->DrawRectangle(x, y, (w * (val / fabs(mCtrl.mMax - mCtrl.mMin))), h);
mLastValue = mCtrl.mVal; mLastValue = mCtrl.mVal;
@ -151,7 +145,7 @@ void LV2EffectMeter::OnPaint(wxPaintEvent & WXUNUSED(evt))
void LV2EffectMeter::OnSize(wxSizeEvent & WXUNUSED(evt)) void LV2EffectMeter::OnSize(wxSizeEvent & WXUNUSED(evt))
{ {
Refresh(false); Refresh();
} }
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
@ -1828,6 +1822,14 @@ bool LV2Effect::BuildPlain()
w->SetSizer(innerSizer); w->SetSizer(innerSizer);
mParent->SetSizer(outerSizer); mParent->SetSizer(outerSizer);
// Try to give the window a sensible default/minimum size
wxSize sz1 = innerSizer->GetMinSize();
wxSize sz2 = mParent->GetMinSize();
w->SetSizeHints(wxSize(-1, wxMin(sz1.y, sz2.y)));
// And let the parent reduce to the new minimum if possible
mParent->SetSizeHints(w->GetMinSize());
TransferDataToWindow(); TransferDataToWindow();
return true; return true;