]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/event.cpp
wxTinderbox build fixes.
[wxWidgets.git] / src / common / event.cpp
index b00694a64664fa08a9287aa8fa573e9f3dc361b5..e4401d231ffb4cb1b74d3745f2d95d4a940b25c1 100644 (file)
@@ -1,5 +1,5 @@
 /////////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////////////////
-// Name:        event.cpp
+// Name:        src/common/event.cpp
 // Purpose:     Event classes
 // Author:      Julian Smart
 // Modified by:
 // Purpose:     Event classes
 // Author:      Julian Smart
 // Modified by:
@@ -25,7 +25,6 @@
 #endif
 
 #ifndef WX_PRECOMP
 #endif
 
 #ifndef WX_PRECOMP
-    #include "wx/defs.h"
     #include "wx/app.h"
     #include "wx/list.h"
 
     #include "wx/app.h"
     #include "wx/list.h"
 
@@ -236,14 +235,6 @@ DEFINE_EVENT_TYPE(wxEVT_SCROLL_THUMBTRACK)
 DEFINE_EVENT_TYPE(wxEVT_SCROLL_THUMBRELEASE)
 DEFINE_EVENT_TYPE(wxEVT_SCROLL_CHANGED)
 
 DEFINE_EVENT_TYPE(wxEVT_SCROLL_THUMBRELEASE)
 DEFINE_EVENT_TYPE(wxEVT_SCROLL_CHANGED)
 
-// see comments in wx/event.h, near wxEVT_SCROLL_ENDSCROLL declaration
-#if wxCHECK_VERSION(2, 7, 0)
-    #error "Remove the lines below, not needed any more"
-#endif
-#undef wxEVT_SCROLL_ENDSCROLL
-extern WXDLLIMPEXP_CORE const wxEventType wxEVT_SCROLL_ENDSCROLL;
-const wxEventType wxEVT_SCROLL_ENDSCROLL = wxEVT_SCROLL_CHANGED;
-
 // Scroll events from wxWindow
 DEFINE_EVENT_TYPE(wxEVT_SCROLLWIN_TOP)
 DEFINE_EVENT_TYPE(wxEVT_SCROLLWIN_BOTTOM)
 // Scroll events from wxWindow
 DEFINE_EVENT_TYPE(wxEVT_SCROLLWIN_TOP)
 DEFINE_EVENT_TYPE(wxEVT_SCROLLWIN_BOTTOM)
@@ -1031,6 +1022,8 @@ wxEvtHandler::~wxEvtHandler()
         delete m_dynamicEvents;
     };
 
         delete m_dynamicEvents;
     };
 
+    if (m_pendingEvents)
+        m_pendingEvents->DeleteContents(true);
     delete m_pendingEvents;
 
 #if wxUSE_THREADS
     delete m_pendingEvents;
 
 #if wxUSE_THREADS
@@ -1074,7 +1067,7 @@ void wxEvtHandler::ClearEventLocker()
     delete m_eventsLocker;
     m_eventsLocker = NULL;
 #endif
     delete m_eventsLocker;
     m_eventsLocker = NULL;
 #endif
-};
+}
 
 #endif // wxUSE_THREADS
 
 
 #endif // wxUSE_THREADS
 
@@ -1109,7 +1102,7 @@ void wxEvtHandler::AddPendingEvent(wxEvent& event)
 
     wxLEAVE_CRIT_SECT(*wxPendingEventsLocker);
 
 
     wxLEAVE_CRIT_SECT(*wxPendingEventsLocker);
 
-    // 3) Inform the system that new pending events are somwehere,
+    // 3) Inform the system that new pending events are somewhere,
     //    and that these should be processed in idle time.
     wxWakeUpIdle();
 }
     //    and that these should be processed in idle time.
     wxWakeUpIdle();
 }
@@ -1134,6 +1127,9 @@ void wxEvtHandler::ProcessPendingEvents()
     {
         wxEvent *event = (wxEvent *)node->GetData();
 
     {
         wxEvent *event = (wxEvent *)node->GetData();
 
+        // 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() );
         m_pendingEvents->Erase(node);
 
         wxLEAVE_CRIT_SECT( Lock() );
@@ -1367,7 +1363,7 @@ bool wxEvtHandler::SearchDynamicEventTable( wxEvent& event )
     }
 
     return false;
     }
 
     return false;
-};
+}
 
 void wxEvtHandler::DoSetClientObject( wxClientData *data )
 {
 
 void wxEvtHandler::DoSetClientObject( wxClientData *data )
 {