Don't disable main application window in wxProgressDialog

Since 58f90d36a0, the main application
window was disabled even if no parent was specified when creating
wxProgressDialog, which was a change in behaviour compared to 3.1.0 and
earlier versions.

Revert this change and don't disable any windows if neither parent nor
wxPD_APP_MODAL is given.

Closes #18189.
This commit is contained in:
Vadim Zeitlin
2018-08-16 19:57:18 +02:00
parent 6d870fe011
commit 25678f6095
2 changed files with 13 additions and 2 deletions

View File

@@ -105,7 +105,11 @@ public:
In the generic implementation the progress bar is constructed In the generic implementation the progress bar is constructed
only if this value is greater than zero. only if this value is greater than zero.
@param parent @param parent
Parent window. Parent window. It will be disabled while this dialog is shown if
non-null (whether @c wxPD_APP_MODAL is specified or not). Note that
if you specify null parent and don't use @c wxPD_APP_MODAL, you
need to take care to avoid reentrancies, i.e. avoiding showing the
progress dialog again while this one is shown.
@param style @param style
The dialog style. See wxProgressDialog. The dialog style. See wxProgressDialog.
*/ */

View File

@@ -134,7 +134,14 @@ wxGenericProgressDialog::wxGenericProgressDialog(const wxString& title,
void wxGenericProgressDialog::SetTopParent(wxWindow* parent) void wxGenericProgressDialog::SetTopParent(wxWindow* parent)
{ {
m_parent = parent; m_parent = parent;
m_parentTop = GetParentForModalDialog(parent, GetWindowStyle());
// Notice that we intentionally do not use GetParentForModalDialog() here
// as we don't want to disable the main application window if null parent
// was given (and GetParentForModalDialog() would fall back to it in this
// case). This allows creating modeless progress dialog, which can be
// useful even though it is also dangerous because it can easily result in
// unwanted reentrancies.
m_parentTop = parent;
} }
bool wxGenericProgressDialog::Create( const wxString& title, bool wxGenericProgressDialog::Create( const wxString& title,