X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5c3e299e08be35d0f88e6e86c8cee97f07ced3ca..057b55b016d9e2076fde422f29948dc55e97f0d7:/src/gtk1/app.cpp?ds=sidebyside

diff --git a/src/gtk1/app.cpp b/src/gtk1/app.cpp
index 7d15b6e1b3..bb01f6b872 100644
--- a/src/gtk1/app.cpp
+++ b/src/gtk1/app.cpp
@@ -194,7 +194,18 @@ gint wxapp_pending_callback( gpointer WXUNUSED(data) )
 
 gint wxapp_idle_callback( gpointer WXUNUSED(data) )
 {
-    if (!wxTheApp) return TRUE;
+    if (!wxTheApp)
+        return TRUE;
+
+#ifdef __WXDEBUG__
+    if ( wxTheApp->IsInAssert() )
+    {
+        // don't generate the idle events while the assert modal dialog is
+        // shown, this completely confuses the apps which don't expect to be
+        // reentered from some safely-looking functions
+        return FALSE;
+    }
+#endif // __WXDEBUG__
 
     // when getting called from GDK's time-out handler
     // we are no longer within GDK's grab on the GUI
@@ -309,10 +320,10 @@ END_EVENT_TABLE()
 
 wxApp::wxApp()
 {
-    wxTheApp = this;
-
-    m_topWindow = (wxWindow *) NULL;
-    m_exitOnFrameDelete = TRUE;
+    m_initialized = FALSE;
+#ifdef __WXDEBUG__
+    m_isInAssert = FALSE;
+#endif // __WXDEBUG__
 
     m_idleTag = 0;
     wxapp_install_idle_handler();
@@ -323,8 +334,6 @@ wxApp::wxApp()
 #endif
 
     m_colorCube = (unsigned char*) NULL;
-
-    m_useBestVisual = FALSE;
 }
 
 wxApp::~wxApp()
@@ -340,6 +349,9 @@ wxApp::~wxApp()
 
 bool wxApp::OnInitGui()
 {
+    if ( !wxAppBase::OnInitGui() )
+        return FALSE;
+
     GdkVisual *visual = gdk_visual_get_system();
 
     /* on some machines, the default visual is just 256 colours, so
@@ -854,3 +866,17 @@ wxApp::GetStdIcon(int which) const
             return wxIcon(error_xpm);
     }
 }
+
+#ifdef __WXDEBUG__
+
+void wxApp::OnAssert(const wxChar *file, int line, const wxChar *msg)
+{
+    m_isInAssert = TRUE;
+
+    wxAppBase::OnAssert(file, line, msg);
+
+    m_isInAssert = FALSE;
+}
+
+#endif // __WXDEBUG__
+