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
only if this value is greater than zero.
@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
The dialog style. See wxProgressDialog.
*/

View File

@@ -134,7 +134,14 @@ wxGenericProgressDialog::wxGenericProgressDialog(const wxString& title,
void wxGenericProgressDialog::SetTopParent(wxWindow* 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,