X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ef8698d677c97b2d662ee1c5adbdaadf58103e0e..758bce950ba9236d0a9edc4c880c3ec73b5173f3:/src/generic/progdlgg.cpp?ds=sidebyside diff --git a/src/generic/progdlgg.cpp b/src/generic/progdlgg.cpp index e9c031ab2a..12a2aa1797 100644 --- a/src/generic/progdlgg.cpp +++ b/src/generic/progdlgg.cpp @@ -92,6 +92,18 @@ wxProgressDialog::wxProgressDialog(wxString const &title, m_windowStyle |= style; bool hasAbortButton = (style & wxPD_CAN_ABORT) != 0; + +#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__) + // we have to remove the "Close" button from the title bar then as it is + // confusing to have it - it doesn't work anyhow + // + // FIXME: should probably have a (extended?) window style for this + if ( !hasAbortButton ) + { + EnableCloseButton(FALSE); + } +#endif // wxMSW + m_state = hasAbortButton ? Continue : Uncancelable; m_maximum = maximum; @@ -123,13 +135,13 @@ wxProgressDialog::wxProgressDialog(wxString const &title, if ( maximum > 0 ) { + // note that we can't use wxGA_SMOOTH because it happens to also mean + // wxDIALOG_MODAL and will cause the dialog to be modal. Have an extra + // style argument to wxProgressDialog, perhaps. m_gauge = new wxGauge(this, -1, maximum, - wxDefaultPosition, wxDefaultSize, - 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)); + wxDefaultPosition, wxDefaultSize, + wxGA_HORIZONTAL); + c = new wxLayoutConstraints; c->left.SameAs(this, wxLeft, 2*LAYOUT_X_MARGIN); c->top.Below(m_msg, 2*LAYOUT_Y_MARGIN); @@ -228,6 +240,14 @@ wxProgressDialog::wxProgressDialog(wxString const &title, Show(TRUE); Enable(TRUE); // enable this window + // this one can be initialized even if the others are unknown for now + // + // NB: do it after calling Layout() to keep the labels correctly aligned + if ( m_elapsed ) + { + SetTimeLabel(0, m_elapsed); + } + // Update the display (especially on X, GTK) wxYield(); @@ -309,6 +329,12 @@ wxProgressDialog::Update(int value, const wxString& newmsg) // tell the user what he should do... m_btnAbort->SetLabel(_("Close")); } +#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__) + else // enable the close button to give the user a way to close the dlg + { + EnableCloseButton(TRUE); + } +#endif // __WXMSW__ if ( !newmsg ) {