]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/event.cpp
removing additional offset - why did this ever work ?
[wxWidgets.git] / src / common / event.cpp
index 043eafa8699211c28d83049141f569e1659c2b2b..df764235acf79431caff1336578944f751a47a29 100644 (file)
@@ -1011,6 +1011,10 @@ wxEvtHandler::wxEvtHandler()
     m_eventsLocker = new wxCriticalSection;
 #  endif
 #endif
+    // reentrace not allowed by default
+    m_reentranceAllowed = false;
+    m_eventHandlingInProgress = false;
+    
     // no client data (yet)
     m_clientData = NULL;
     m_clientDataType = wxClientData_None;
@@ -1131,10 +1135,13 @@ void wxEvtHandler::AddPendingEvent(wxEvent& event)
 
 void wxEvtHandler::ProcessPendingEvents()
 {
-    // this method is only called by wxApp if this handler does have pending
-    // events
+    // this method is only called by wxApp if this handler does have
+    // pending events
     wxCHECK_RET( m_pendingEvents,
                  wxT("Please call wxApp::ProcessPendingEvents() instead") );
+    
+    // eventhandling is now in progess
+    m_eventHandlingInProgress = true;
 
     wxENTER_CRIT_SECT( Lock() );
 
@@ -1152,11 +1159,13 @@ void wxEvtHandler::ProcessPendingEvents()
         // It's importan we remove event from list before processing it.
         // Else a nested event loop, for example from a modal dialog, might
         // process the same event again.
+
         m_pendingEvents->Erase(node);
 
         wxLEAVE_CRIT_SECT( Lock() );
 
         ProcessEvent(*event);
+
         delete event;
 
         wxENTER_CRIT_SECT( Lock() );
@@ -1166,6 +1175,9 @@ void wxEvtHandler::ProcessPendingEvents()
     }
 
     wxLEAVE_CRIT_SECT( Lock() );
+    
+    // eventhandling no longer in progess
+    m_eventHandlingInProgress = false;
 }
 
 /*