2. fixed wxProgressDialog to work as wxDialog now does
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@8488
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
*/
void Resume() { m_state = Continue; }
*/
void Resume() { m_state = Continue; }
- // implementation from now on
- // callback for optional abort button
+protected:
+ // callback for optional abort button
void OnCancel(wxCommandEvent& event);
void OnCancel(wxCommandEvent& event);
- // callback to disable "hard" window closing
+
+ // callback to disable "hard" window closing
void OnClose(wxCloseEvent& event);
void OnClose(wxCloseEvent& event);
+ // callback to detect when the dialog is closed
+ void OnShow(wxShowEvent& event);
+
+ // must be called to reenable the other windows temporarily disabled while
+ // the dialog was shown
+ void ReenableOtherWindows();
+
private:
// create the label with given text and another one to show the time nearby
// under the lastWindow and modify it to be the same as the control created
private:
// create the label with given text and another one to show the time nearby
// under the lastWindow and modify it to be the same as the control created
// ----------------------------------------------------------------------------
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)
+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()
+{
+ // normally this should have been already done, but just in case
+ ReenableOtherWindows();
+}
+
+void wxProgressDialog::ReenableOtherWindows()
{
if ( GetWindowStyle() & wxPD_APP_MODAL )
{
delete m_winDisabler;
{
if ( GetWindowStyle() & wxPD_APP_MODAL )
{
delete m_winDisabler;
+ m_winDisabler = (wxWindowDisabler *)NULL;
// status inquiries
bool HasChildren() const { return !m_children.IsEmpty(); }
// status inquiries
bool HasChildren() const { return !m_children.IsEmpty(); }
- bool IsSelected() const { return m_hasHilight; }
+ bool IsSelected() const { return m_hasHilight != 0; }
bool IsExpanded() const { return !m_isCollapsed; }
bool HasPlus() const { return m_hasPlus || HasChildren(); }
bool IsExpanded() const { return !m_isCollapsed; }
bool HasPlus() const { return m_hasPlus || HasChildren(); }
- bool IsBold() const { return m_isBold; }
+ bool IsBold() const { return m_isBold != 0; }
// attributes
// get them - may be NULL
// attributes
// get them - may be NULL