]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/appbase.cpp
Minor header cleaning.
[wxWidgets.git] / src / common / appbase.cpp
index c1bbddd32633e57db24d9ee8889b339b777351bd..697aa2dd87964aa0ba8ab533bce10eae39d1727d 100644 (file)
@@ -1,5 +1,5 @@
 ///////////////////////////////////////////////////////////////////////////////
-// Name:        common/base/appbase.cpp
+// Name:        src/common/appbase.cpp
 // Purpose:     implements wxAppConsole class
 // Author:      Vadim Zeitlin
 // Modified by:
 #endif
 
 #ifndef WX_PRECOMP
+    #ifdef __WXMSW__
+        #include  "wx/msw/wrapwin.h"  // includes windows.h for MessageBox()
+    #endif
+    #include "wx/list.h"
     #include "wx/app.h"
     #include "wx/intl.h"
-    #include "wx/list.h"
     #include "wx/log.h"
+    #include "wx/utils.h"
 #endif //WX_PRECOMP
 
-#include "wx/utils.h"
 #include "wx/apptrait.h"
 #include "wx/cmdline.h"
 #include "wx/confbase.h"
   #include  <signal.h>      // for SIGTRAP used by wxTrap()
 #endif  //Win/Unix
 
-#if defined(__WXMSW__)
-  #include  "wx/msw/wrapwin.h"  // includes windows.h for MessageBox()
-#endif
-
 #if wxUSE_FONTMAP
     #include "wx/fontmap.h"
 #endif // wxUSE_FONTMAP
@@ -269,7 +268,7 @@ void wxAppConsole::ProcessPendingEvents()
     if ( !wxPendingEventsLocker )
         return;
 #endif
-    
+
     // ensure that we're the only thread to modify the pending events list
     wxENTER_CRIT_SECT( *wxPendingEventsLocker );
 
@@ -281,6 +280,15 @@ void wxAppConsole::ProcessPendingEvents()
 
     // iterate until the list becomes empty
     wxList::compatibility_iterator node = wxPendingEvents->GetFirst();
+    
+    while (node && 
+           ((wxEvtHandler *)node->GetData())->IsEventHandlingInProgress() &&
+           ((wxEvtHandler *)node->GetData())->IsReentranceAllowed() == false)
+    {   
+        // skip over event
+        node = node->GetNext();
+    }
+    
     while (node)
     {
         wxEvtHandler *handler = (wxEvtHandler *)node->GetData();
@@ -289,12 +297,20 @@ void wxAppConsole::ProcessPendingEvents()
         // In ProcessPendingEvents(), new handlers might be add
         // and we can safely leave the critical section here.
         wxLEAVE_CRIT_SECT( *wxPendingEventsLocker );
-        
+
         handler->ProcessPendingEvents();
 
         wxENTER_CRIT_SECT( *wxPendingEventsLocker );
 
         node = wxPendingEvents->GetFirst();
+        
+        while (node && 
+               ((wxEvtHandler *)node->GetData())->IsEventHandlingInProgress() &&
+               ((wxEvtHandler *)node->GetData())->IsReentranceAllowed() == false)
+        {   
+            // skip over event
+            node = node->GetNext();
+        }
     }
 
     wxLEAVE_CRIT_SECT( *wxPendingEventsLocker );
@@ -449,7 +465,7 @@ void wxAppConsole::OnAssert(const wxChar *file,
                             const wxChar *cond,
                             const wxChar *msg)
 {
-    OnAssertFailure(file, line, _T(""), cond, msg);
+    OnAssertFailure(file, line, NULL, cond, msg);
 }
 
 #endif // __WXDEBUG__
@@ -600,7 +616,7 @@ void wxTrap()
 // this function is called when an assert fails
 void wxOnAssert(const wxChar *szFile,
                 int nLine,
-                const wxChar *szFunc,
+                const char *szFunc,
                 const wxChar *szCond,
                 const wxChar *szMsg)
 {
@@ -619,16 +635,19 @@ void wxOnAssert(const wxChar *szFile,
 
     s_bInAssert = true;
 
+    // __FUNCTION__ is always in ASCII, convert it to wide char if needed
+    const wxString strFunc = wxString::FromAscii(szFunc);
+
     if ( !wxTheApp )
     {
         // by default, show the assert dialog box -- we can't customize this
         // behaviour
-        ShowAssertDialog(szFile, nLine, szFunc, szCond, szMsg);
+        ShowAssertDialog(szFile, nLine, strFunc, szCond, szMsg);
     }
     else
     {
         // let the app process it as it wants
-        wxTheApp->OnAssertFailure(szFile, nLine, szFunc, szCond, szMsg);
+        wxTheApp->OnAssertFailure(szFile, nLine, strFunc, szCond, szMsg);
     }
 
     s_bInAssert = false;
@@ -836,4 +855,3 @@ void ShowAssertDialog(const wxChar *szFile,
 }
 
 #endif // __WXDEBUG__
-