Fix handling of wxGA_PROGRESS in wxGauge under MSW

This was broken by the refactoring during the addition of OS X implementation
of wxAppProgressIndicator in 11a5b83e2c, restore
this functionality by explicitly calling the code initializing the progress
indicator in wxGaugeBase from wxMSW implementation.

Closes #17301.
This commit is contained in:
Vadim Zeitlin 2016-01-31 20:11:06 +01:00
parent 2071f03127
commit 8581f6851e
3 changed files with 26 additions and 11 deletions

View File

@ -99,6 +99,13 @@ public:
protected:
virtual wxBorder GetDefaultBorder() const wxOVERRIDE { return wxBORDER_NONE; }
// Initialize m_appProgressIndicator if necessary, i.e. if this object has
// wxGA_PROGRESS style. This method is supposed to be called from the
// derived class Create() if it doesn't call the base class Create(), which
// already does it, after initializing the window style and range.
void InitProgressIndicatorIfNeeded();
// the max position
int m_rangeMax;

View File

@ -104,6 +104,20 @@ wxCONSTRUCTOR_6( wxGauge, wxWindow*, Parent, wxWindowID, Id, int, Range, \
// wxGauge creation
// ----------------------------------------------------------------------------
void wxGaugeBase::InitProgressIndicatorIfNeeded()
{
m_appProgressIndicator = NULL;
if ( HasFlag(wxGA_PROGRESS) )
{
wxWindow* topParent = wxGetTopLevelParent(this);
if ( topParent != NULL )
{
m_appProgressIndicator =
new wxAppProgressIndicator(topParent, GetRange());
}
}
}
bool wxGaugeBase::Create(wxWindow *parent,
wxWindowID id,
int range,
@ -122,23 +136,15 @@ bool wxGaugeBase::Create(wxWindow *parent,
SetValidator(validator);
#endif // wxUSE_VALIDATORS
m_appProgressIndicator = NULL;
if ( (style & wxGA_PROGRESS) != 0 )
{
wxWindow* topParent = wxGetTopLevelParent(this);
if ( topParent != NULL )
{
m_appProgressIndicator =
new wxAppProgressIndicator(topParent, range);
}
}
SetRange(range);
SetValue(0);
#if wxGAUGE_EMULATE_INDETERMINATE_MODE
m_nDirection = wxRIGHT;
#endif
InitProgressIndicatorIfNeeded();
return true;
}

View File

@ -97,6 +97,8 @@ bool wxGauge::Create(wxWindow *parent,
SetRange(range);
InitProgressIndicatorIfNeeded();
return true;
}