]> git.saurik.com Git - wxWidgets.git/commitdiff
Unset the debug report preview dialog as critical window when it's hidden.
authorVadim Zeitlin <vadim@wxwidgets.org>
Sat, 22 May 2010 10:51:27 +0000 (10:51 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sat, 22 May 2010 10:51:27 +0000 (10:51 +0000)
Otherwise no events can be dispatched to any other window after
wxDebugReportPreviewStd::Show() is called, resulting in apparent hanging of
the application as can be seen in debugrpt sample.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64379 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/generic/dbgrptg.cpp

index 015f2de519909cc8b1185a18b199ba2c0f51b7c0..ba5c797c24d59f46e63e9feedab9b8f8c3f41a0c 100644 (file)
@@ -46,6 +46,7 @@
 
 #ifdef __WXMSW__
     #include "wx/evtloop.h"     // for SetCriticalWindow()
+    #include "wx/scopeguard.h"
 #endif // __WXMSW__
 
 // ----------------------------------------------------------------------------
@@ -517,6 +518,9 @@ bool wxDebugReportPreviewStd::Show(wxDebugReport& dbgrpt) const
     // before entering the event loop (from ShowModal()), block the event
     // handling for all other windows as this could result in more crashes
     wxEventLoop::SetCriticalWindow(&dlg);
+
+    wxON_BLOCK_EXIT1( wxEventLoop::SetCriticalWindow,
+                        static_cast<wxWindow *>(NULL) );
 #endif // __WXMSW__
 
     return dlg.ShowModal() == wxID_OK && dbgrpt.GetFilesCount() != 0;