Make wxProgressDialog::Fit() work in native MSW version
This method is supposed to adjust the dialog size to its contents and while the dialog increases automatically when using native implementation under MSW, it doesn't shrink back on its own and so it's still useful to allow Fit() to do it. Update the sample to test Fit() too.
This commit is contained in:
@@ -44,6 +44,7 @@ public:
|
||||
virtual void SetIcons(const wxIconBundle& icons) wxOVERRIDE;
|
||||
virtual void DoMoveWindow(int x, int y, int width, int height) wxOVERRIDE;
|
||||
virtual void DoGetPosition(int *x, int *y) const wxOVERRIDE;
|
||||
virtual void Fit() wxOVERRIDE;
|
||||
|
||||
virtual bool Show( bool show = true ) wxOVERRIDE;
|
||||
|
||||
|
@@ -196,7 +196,8 @@ public:
|
||||
conform to the length of the new message if desired. The dialog does
|
||||
not do this automatically, except for the native MSW implementation
|
||||
which does increase the dialog size if necessary (but still doesn't
|
||||
shrink it back even if the text becomes shorter).
|
||||
shrink it back even if the text becomes shorter and you need to call
|
||||
Fit() explicitly if you want this to happen).
|
||||
|
||||
@param value
|
||||
The new value of the progress meter. It should be less than or equal to
|
||||
|
@@ -360,6 +360,11 @@ bool MyApp::OnInit()
|
||||
case 30:
|
||||
msg = "Back to brevity";
|
||||
break;
|
||||
|
||||
case 80:
|
||||
msg = "Back and adjusted";
|
||||
dlg.Fit();
|
||||
break;
|
||||
}
|
||||
|
||||
if ( !dlg.Update(i, msg) )
|
||||
|
@@ -767,6 +767,24 @@ void wxProgressDialog::DoGetPosition(int *x, int *y) const
|
||||
wxGenericProgressDialog::DoGetPosition(x, y);
|
||||
}
|
||||
|
||||
void wxProgressDialog::Fit()
|
||||
{
|
||||
#ifdef wxHAS_MSW_TASKDIALOG
|
||||
if ( HasNativeTaskDialog() )
|
||||
{
|
||||
wxCriticalSectionLocker locker(m_sharedData->m_cs);
|
||||
|
||||
// Force the task dialog to use this message to adjust it layout.
|
||||
m_sharedData->m_msgChangeElementText = TDM_SET_ELEMENT_TEXT;
|
||||
|
||||
// Don't change the message, but pretend that it did change.
|
||||
m_sharedData->m_notifications |= wxSPDD_MESSAGE_CHANGED;
|
||||
}
|
||||
#endif // wxHAS_MSW_TASKDIALOG
|
||||
|
||||
wxGenericProgressDialog::Fit();
|
||||
}
|
||||
|
||||
bool wxProgressDialog::Show(bool show)
|
||||
{
|
||||
#ifdef wxHAS_MSW_TASKDIALOG
|
||||
|
Reference in New Issue
Block a user