int style)
: wxDialog(parent, -1, title)
{
+ m_windowStyle |= style;
+
bool hasAbortButton = (style & wxPD_CAN_ABORT) != 0;
m_state = hasAbortButton ? Continue : Uncancelable;
m_maximum = maximum;
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;
{
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);
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);
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);
}
}