X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/abceee76ea4d642ccfd3cf91cc139a3fe2b471b7..236a9de39afa090fdee3cf91cb5364ceca69e3f8:/src/generic/progdlgg.cpp diff --git a/src/generic/progdlgg.cpp b/src/generic/progdlgg.cpp index 7a3cdb7a3f..90436f9340 100644 --- a/src/generic/progdlgg.cpp +++ b/src/generic/progdlgg.cpp @@ -86,6 +86,8 @@ wxProgressDialog::wxProgressDialog(wxString const &title, int style) : wxDialog(parent, -1, title) { + m_windowStyle |= style; + bool hasAbortButton = (style & wxPD_CAN_ABORT) != 0; m_state = hasAbortButton ? Continue : Uncancelable; m_maximum = maximum; @@ -101,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; @@ -127,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); @@ -212,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); @@ -383,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); } }