diff --git a/interface/wx/progdlg.h b/interface/wx/progdlg.h index d78b49a6fa..28ce778ed6 100644 --- a/interface/wx/progdlg.h +++ b/interface/wx/progdlg.h @@ -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. */ diff --git a/src/generic/progdlgg.cpp b/src/generic/progdlgg.cpp index 03e1e7f933..4c7b1d0ef4 100644 --- a/src/generic/progdlgg.cpp +++ b/src/generic/progdlgg.cpp @@ -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,