X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0990cd942e8e3c392535c6fe0933f3a1e460b058..79f585d90388128f9d245f7c92d3013b98b9ed14:/src/generic/progdlgg.cpp diff --git a/src/generic/progdlgg.cpp b/src/generic/progdlgg.cpp index 39313cf7d9..90436f9340 100644 --- a/src/generic/progdlgg.cpp +++ b/src/generic/progdlgg.cpp @@ -86,7 +86,7 @@ wxProgressDialog::wxProgressDialog(wxString const &title, int style) : wxDialog(parent, -1, title) { - m_windowStyle = style; + m_windowStyle |= style; bool hasAbortButton = (style & wxPD_CAN_ABORT) != 0; m_state = hasAbortButton ? Continue : Uncancelable; @@ -103,14 +103,7 @@ wxProgressDialog::wxProgressDialog(wxString const &title, wxClientDC dc(this); dc.SetFont(wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT)); long widthText; -#if defined(__VISAGECPP__) -// have two versions of this in wxWindowDC tp avoid function hiding -// since there are two of these in wxDCBase, and in turn in wxDC. -// VA cannot resolve this so: dc.GetTextExtent(message, &widthText, NULL, NULL, NULL, NULL); -#else - dc.GetTextExtent(message, &widthText, (long*)NULL); -#endif m_msg = new wxStaticText(this, -1, message); c = new wxLayoutConstraints; @@ -129,7 +122,11 @@ wxProgressDialog::wxProgressDialog(wxString const &title, { m_gauge = new wxGauge(this, -1, maximum, wxDefaultPosition, wxDefaultSize, - wxGA_HORIZONTAL | wxRAISED_BORDER | (style & wxGA_SMOOTH)); + wxGA_HORIZONTAL | wxRAISED_BORDER); +// Sorry, but wxGA_SMOOTH happens to also mean wxDIALOG_MODAL and will +// cause the dialog to be modal. Have an extra style argument to wxProgressDialog, +// perhaps. +// wxGA_HORIZONTAL | wxRAISED_BORDER | (style & wxGA_SMOOTH)); c = new wxLayoutConstraints; c->left.SameAs(this, wxLeft, 2*LAYOUT_X_MARGIN); c->top.Below(m_msg, 2*LAYOUT_Y_MARGIN); @@ -214,14 +211,15 @@ wxProgressDialog::wxProgressDialog(wxString const &title, Centre(wxCENTER_FRAME | wxBOTH); - if ( !(style & wxPD_APP_MODAL) ) + if ( style & wxPD_APP_MODAL ) { - if ( m_parentTop ) - m_parentTop->Enable(FALSE); + m_winDisabler = new wxWindowDisabler(this); } else { - wxEnableTopLevelWindows(FALSE); + if ( m_parentTop ) + m_parentTop->Enable(FALSE); + m_winDisabler = NULL; } Show(TRUE); @@ -385,14 +383,14 @@ void wxProgressDialog::OnClose(wxCloseEvent& event) wxProgressDialog::~wxProgressDialog() { - if ( !(GetWindowStyle() & wxPD_APP_MODAL) ) + if ( GetWindowStyle() & wxPD_APP_MODAL ) { - if ( m_parentTop ) - m_parentTop->Enable(TRUE); + delete m_winDisabler; } else { - wxEnableTopLevelWindows(TRUE); + if ( m_parentTop ) + m_parentTop->Enable(TRUE); } }