]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/app.cpp
fixed crash in wxRegion::Empty
[wxWidgets.git] / src / gtk / app.cpp
index 7d15b6e1b37250b70abbfda5d6c9b339f5abefbd..bb01f6b87295551dd9ed0f2f618766003a1f2fbc 100644 (file)
@@ -194,7 +194,18 @@ gint wxapp_pending_callback( gpointer WXUNUSED(data) )
 
 gint wxapp_idle_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
 
     // 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()
 {
 
 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();
 
     m_idleTag = 0;
     wxapp_install_idle_handler();
@@ -323,8 +334,6 @@ wxApp::wxApp()
 #endif
 
     m_colorCube = (unsigned char*) NULL;
 #endif
 
     m_colorCube = (unsigned char*) NULL;
-
-    m_useBestVisual = FALSE;
 }
 
 wxApp::~wxApp()
 }
 
 wxApp::~wxApp()
@@ -340,6 +349,9 @@ wxApp::~wxApp()
 
 bool wxApp::OnInitGui()
 {
 
 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
     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);
     }
 }
             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__
+