projects
/
wxWidgets.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
removed incorrect param from docs
[wxWidgets.git]
/
src
/
generic
/
progdlgg.cpp
diff --git
a/src/generic/progdlgg.cpp
b/src/generic/progdlgg.cpp
index b8a6a17e00a9048f93536e4462888775db4d9a5b..e9c031ab2ae6b072af620906377ef080a5b4a5d8 100644
(file)
--- a/
src/generic/progdlgg.cpp
+++ b/
src/generic/progdlgg.cpp
@@
-65,8
+65,11
@@
static void SetTimeLabel(unsigned long val, wxStaticText *label);
// ----------------------------------------------------------------------------
BEGIN_EVENT_TABLE(wxProgressDialog, wxDialog)
// ----------------------------------------------------------------------------
BEGIN_EVENT_TABLE(wxProgressDialog, wxDialog)
- EVT_BUTTON(wxID_CANCEL, wxProgressDialog::OnCancel)
- EVT_CLOSE(wxProgressDialog::OnClose)
+ EVT_BUTTON(wxID_CANCEL, wxProgressDialog::OnCancel)
+
+ EVT_SHOW(wxProgressDialog::OnShow)
+
+ EVT_CLOSE(wxProgressDialog::OnClose)
END_EVENT_TABLE()
IMPLEMENT_CLASS(wxProgressDialog, wxDialog)
END_EVENT_TABLE()
IMPLEMENT_CLASS(wxProgressDialog, wxDialog)
@@
-103,14
+106,7
@@
wxProgressDialog::wxProgressDialog(wxString const &title,
wxClientDC dc(this);
dc.SetFont(wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT));
long widthText;
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);
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_msg = new wxStaticText(this, -1, message);
c = new wxLayoutConstraints;
@@
-218,14
+214,15
@@
wxProgressDialog::wxProgressDialog(wxString const &title,
Centre(wxCENTER_FRAME | wxBOTH);
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
{
}
else
{
- wxEnableTopLevelWindows(FALSE);
+ if ( m_parentTop )
+ m_parentTop->Enable(FALSE);
+ m_winDisabler = NULL;
}
Show(TRUE);
}
Show(TRUE);
@@
-383,20
+380,37
@@
void wxProgressDialog::OnClose(wxCloseEvent& event)
}
}
}
}
+void wxProgressDialog::OnShow(wxShowEvent& event)
+{
+ // if the dialog is being hidden, it was closed, so reenable other windows
+ // now
+ if ( event.GetShow() )
+ {
+ ReenableOtherWindows();
+ }
+}
+
// ----------------------------------------------------------------------------
// destruction
// ----------------------------------------------------------------------------
wxProgressDialog::~wxProgressDialog()
{
// ----------------------------------------------------------------------------
// destruction
// ----------------------------------------------------------------------------
wxProgressDialog::~wxProgressDialog()
{
- if ( !(GetWindowStyle() & wxPD_APP_MODAL) )
+ // normally this should have been already done, but just in case
+ ReenableOtherWindows();
+}
+
+void wxProgressDialog::ReenableOtherWindows()
+{
+ if ( GetWindowStyle() & wxPD_APP_MODAL )
{
{
- if ( m_parentTop )
-
m_parentTop->Enable(TRUE)
;
+ delete m_winDisabler;
+
m_winDisabler = (wxWindowDisabler *)NULL
;
}
else
{
}
else
{
- wxEnableTopLevelWindows(TRUE);
+ if ( m_parentTop )
+ m_parentTop->Enable(TRUE);
}
}
}
}