]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/event.cpp
revert my last change
[wxWidgets.git] / src / common / event.cpp
index 324e98031d28d45ba657f177aa9846c51d87b767..e0fac8a8a5a3b0e3de2f13346ccf025dea816585 100644 (file)
@@ -5,7 +5,7 @@
 // Modified by:
 // Created:     01/02/97
 // RCS-ID:      $Id$
 // Modified by:
 // Created:     01/02/97
 // RCS-ID:      $Id$
-// Copyright:   (c) Julian Smart and Markus Holzem
+// Copyright:   (c) Julian Smart
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
@@ -204,7 +204,9 @@ DEFINE_EVENT_TYPE(wxEVT_SCROLLWIN_THUMBRELEASE)
 
 // System events
 DEFINE_EVENT_TYPE(wxEVT_SIZE)
 
 // System events
 DEFINE_EVENT_TYPE(wxEVT_SIZE)
+DEFINE_EVENT_TYPE(wxEVT_SIZING)
 DEFINE_EVENT_TYPE(wxEVT_MOVE)
 DEFINE_EVENT_TYPE(wxEVT_MOVE)
+DEFINE_EVENT_TYPE(wxEVT_MOVING)
 DEFINE_EVENT_TYPE(wxEVT_CLOSE_WINDOW)
 DEFINE_EVENT_TYPE(wxEVT_END_SESSION)
 DEFINE_EVENT_TYPE(wxEVT_QUERY_END_SESSION)
 DEFINE_EVENT_TYPE(wxEVT_CLOSE_WINDOW)
 DEFINE_EVENT_TYPE(wxEVT_END_SESSION)
 DEFINE_EVENT_TYPE(wxEVT_QUERY_END_SESSION)
@@ -390,7 +392,7 @@ wxMouseEvent::wxMouseEvent(wxEventType commandType)
 void wxMouseEvent::Assign(const wxMouseEvent& event)
 {
     m_eventType = event.m_eventType;
 void wxMouseEvent::Assign(const wxMouseEvent& event)
 {
     m_eventType = event.m_eventType;
-    
+
     m_x = event.m_x;
     m_y = event.m_y;
 
     m_x = event.m_x;
     m_y = event.m_y;
 
@@ -550,7 +552,7 @@ wxKeyEvent::wxKeyEvent(wxEventType type)
 #endif
 }
 
 #endif
 }
 
-wxKeyEvent::wxKeyEvent(const wxKeyEvent& evt) 
+wxKeyEvent::wxKeyEvent(const wxKeyEvent& evt)
     : wxEvent(evt)
 {
     m_x = evt.m_x;
     : wxEvent(evt)
 {
     m_x = evt.m_x;
@@ -565,7 +567,7 @@ wxKeyEvent::wxKeyEvent(const wxKeyEvent& evt)
     m_scanCode = evt.m_scanCode;
     m_rawCode = evt.m_rawCode;
     m_rawFlags = evt.m_rawFlags;
     m_scanCode = evt.m_scanCode;
     m_rawCode = evt.m_rawCode;
     m_rawFlags = evt.m_rawFlags;
-        
+
 #if wxUSE_UNICODE
     m_uniChar = evt.m_uniChar;
 #endif
 #if wxUSE_UNICODE
     m_uniChar = evt.m_uniChar;
 #endif
@@ -633,19 +635,19 @@ wxEvtHandler::~wxEvtHandler()
 
     if (m_dynamicEvents)
     {
 
     if (m_dynamicEvents)
     {
-        wxNode *node = m_dynamicEvents->First();
+        wxNode *node = m_dynamicEvents->GetFirst();
         while (node)
         {
 #if WXWIN_COMPATIBILITY_EVENT_TYPES
         while (node)
         {
 #if WXWIN_COMPATIBILITY_EVENT_TYPES
-            wxEventTableEntry *entry = (wxEventTableEntry*)node->Data();
+            wxEventTableEntry *entry = (wxEventTableEntry*)node->GetData();
 #else // !WXWIN_COMPATIBILITY_EVENT_TYPES
 #else // !WXWIN_COMPATIBILITY_EVENT_TYPES
-            wxDynamicEventTableEntry *entry = (wxDynamicEventTableEntry*)node->Data();
+            wxDynamicEventTableEntry *entry = (wxDynamicEventTableEntry*)node->GetData();
 #endif // WXWIN_COMPATIBILITY_EVENT_TYPES/!WXWIN_COMPATIBILITY_EVENT_TYPES
 
             if (entry->m_callbackUserData)
                 delete entry->m_callbackUserData;
             delete entry;
 #endif // WXWIN_COMPATIBILITY_EVENT_TYPES/!WXWIN_COMPATIBILITY_EVENT_TYPES
 
             if (entry->m_callbackUserData)
                 delete entry->m_callbackUserData;
             delete entry;
-            node = node->Next();
+            node = node->GetNext();
         }
         delete m_dynamicEvents;
     };
         }
         delete m_dynamicEvents;
     };
@@ -656,6 +658,15 @@ wxEvtHandler::~wxEvtHandler()
 #  if !defined(__VISAGECPP__)
     delete m_eventsLocker;
 #  endif
 #  if !defined(__VISAGECPP__)
     delete m_eventsLocker;
 #  endif
+   
+    // Remove us from wxPendingEvents if necessary.
+    if(wxPendingEventsLocker)
+        wxENTER_CRIT_SECT(*wxPendingEventsLocker);
+    if ( wxPendingEvents ) {
+        wxPendingEvents->DeleteObject(this);
+    }
+    if(wxPendingEventsLocker)
+        wxLEAVE_CRIT_SECT(*wxPendingEventsLocker);
 #endif
 
     // we only delete object data, not untyped
 #endif
 
     // we only delete object data, not untyped
@@ -730,10 +741,10 @@ void wxEvtHandler::ProcessPendingEvents()
     wxENTER_CRIT_SECT( *m_eventsLocker);
 #endif
 
     wxENTER_CRIT_SECT( *m_eventsLocker);
 #endif
 
-    wxNode *node = m_pendingEvents->First();
+    wxNode *node = m_pendingEvents->GetFirst();
     while ( node )
     {
     while ( node )
     {
-        wxEvent *event = (wxEvent *)node->Data();
+        wxEvent *event = (wxEvent *)node->GetData();
         delete node;
 
         // In ProcessEvent, new events might get added and
         delete node;
 
         // In ProcessEvent, new events might get added and
@@ -751,7 +762,7 @@ void wxEvtHandler::ProcessPendingEvents()
         wxENTER_CRIT_SECT( *m_eventsLocker);
 #endif
 
         wxENTER_CRIT_SECT( *m_eventsLocker);
 #endif
 
-        node = m_pendingEvents->First();
+        node = m_pendingEvents->GetFirst();
     }
 
 #if defined(__VISAGECPP__)
     }
 
 #if defined(__VISAGECPP__)
@@ -986,7 +997,8 @@ void wxEvtHandler::Connect( int id, int lastId,
     if (!m_dynamicEvents)
         m_dynamicEvents = new wxList;
 
     if (!m_dynamicEvents)
         m_dynamicEvents = new wxList;
 
-    m_dynamicEvents->Append( (wxObject*) entry );
+    // Insert at the front of the list so most recent additions are found first
+    m_dynamicEvents->Insert( (wxObject*) entry );
 }
 
 bool wxEvtHandler::Disconnect( int id, int lastId, wxEventType eventType,
 }
 
 bool wxEvtHandler::Disconnect( int id, int lastId, wxEventType eventType,
@@ -996,13 +1008,13 @@ bool wxEvtHandler::Disconnect( int id, int lastId, wxEventType eventType,
     if (!m_dynamicEvents)
         return FALSE;
 
     if (!m_dynamicEvents)
         return FALSE;
 
-    wxNode *node = m_dynamicEvents->First();
+    wxNode *node = m_dynamicEvents->GetFirst();
     while (node)
     {
 #if WXWIN_COMPATIBILITY_EVENT_TYPES
     while (node)
     {
 #if WXWIN_COMPATIBILITY_EVENT_TYPES
-            wxEventTableEntry *entry = (wxEventTableEntry*)node->Data();
+            wxEventTableEntry *entry = (wxEventTableEntry*)node->GetData();
 #else // !WXWIN_COMPATIBILITY_EVENT_TYPES
 #else // !WXWIN_COMPATIBILITY_EVENT_TYPES
-            wxDynamicEventTableEntry *entry = (wxDynamicEventTableEntry*)node->Data();
+            wxDynamicEventTableEntry *entry = (wxDynamicEventTableEntry*)node->GetData();
 #endif // WXWIN_COMPATIBILITY_EVENT_TYPES/!WXWIN_COMPATIBILITY_EVENT_TYPES
 
         if ((entry->m_id == id) &&
 #endif // WXWIN_COMPATIBILITY_EVENT_TYPES/!WXWIN_COMPATIBILITY_EVENT_TYPES
 
         if ((entry->m_id == id) &&
@@ -1017,7 +1029,7 @@ bool wxEvtHandler::Disconnect( int id, int lastId, wxEventType eventType,
             delete entry;
             return TRUE;
         }
             delete entry;
             return TRUE;
         }
-        node = node->Next();
+        node = node->GetNext();
     }
     return FALSE;
 }
     }
     return FALSE;
 }
@@ -1029,13 +1041,13 @@ bool wxEvtHandler::SearchDynamicEventTable( wxEvent& event )
 
     int commandId = event.GetId();
 
 
     int commandId = event.GetId();
 
-    wxNode *node = m_dynamicEvents->First();
+    wxNode *node = m_dynamicEvents->GetFirst();
     while (node)
     {
 #if WXWIN_COMPATIBILITY_EVENT_TYPES
     while (node)
     {
 #if WXWIN_COMPATIBILITY_EVENT_TYPES
-            wxEventTableEntry *entry = (wxEventTableEntry*)node->Data();
+            wxEventTableEntry *entry = (wxEventTableEntry*)node->GetData();
 #else // !WXWIN_COMPATIBILITY_EVENT_TYPES
 #else // !WXWIN_COMPATIBILITY_EVENT_TYPES
-            wxDynamicEventTableEntry *entry = (wxDynamicEventTableEntry*)node->Data();
+            wxDynamicEventTableEntry *entry = (wxDynamicEventTableEntry*)node->GetData();
 #endif // WXWIN_COMPATIBILITY_EVENT_TYPES/!WXWIN_COMPATIBILITY_EVENT_TYPES
 
         if (entry->m_fn)
 #endif // WXWIN_COMPATIBILITY_EVENT_TYPES/!WXWIN_COMPATIBILITY_EVENT_TYPES
 
         if (entry->m_fn)
@@ -1052,13 +1064,11 @@ bool wxEvtHandler::SearchDynamicEventTable( wxEvent& event )
 
                 (this->*((wxEventFunction) (entry->m_fn)))(event);
 
 
                 (this->*((wxEventFunction) (entry->m_fn)))(event);
 
-                if (event.GetSkipped())
-                    return FALSE;
-                else
+                if ( ! event.GetSkipped() )
                     return TRUE;
             }
         }
                     return TRUE;
             }
         }
-        node = node->Next();
+        node = node->GetNext();
     }
     return FALSE;
 };
     }
     return FALSE;
 };