]> git.saurik.com Git - wxWidgets.git/commitdiff
some micro optimisations in SearchEventTable
authorVadim Zeitlin <vadim@wxwidgets.org>
Tue, 14 Mar 2000 18:46:17 +0000 (18:46 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Tue, 14 Mar 2000 18:46:17 +0000 (18:46 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6707 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/common/event.cpp

index d770701860cd258000accb22577839687b1e2e3e..ca7605d9b9eb7f5d2cb61db1f2315796fb9f8006 100644 (file)
@@ -797,35 +797,40 @@ bool wxEvtHandler::ProcessEvent(wxEvent& event)
 
 bool wxEvtHandler::SearchEventTable(wxEventTable& table, wxEvent& event)
 {
 
 bool wxEvtHandler::SearchEventTable(wxEventTable& table, wxEvent& event)
 {
-    int i = 0;
-    int commandId = event.GetId();
-
-    // BC++ doesn't like while (table.entries[i].m_fn)
+    wxEventType eventType = event.GetEventType();
+    int eventId = event.GetId();
 
 
-#ifdef __SC__
-    while (table.entries[i].m_fn != 0)
-#else
-    while (table.entries[i].m_fn != 0L)
-#endif
+    // BC++ doesn't like testing for m_fn without != 0
+    for ( int i = 0; table.entries[i].m_fn != 0; i++ )
     {
     {
-        if ((event.GetEventType() == table.entries[i].m_eventType) &&
-                (table.entries[i].m_id == -1 || // Match, if event spec says any id will do (id == -1)
-                 (table.entries[i].m_lastId == -1 && commandId == table.entries[i].m_id) ||
-                 (table.entries[i].m_lastId != -1 &&
-                  (commandId >= table.entries[i].m_id && commandId <= table.entries[i].m_lastId))))
+        const wxEventTableEntry& entry = table.entries[i];
+
+        // match only if the event type is the same and the id is either -1 in
+        // the event table (meaning "any") or the event id matches the id
+        // specified in the event table either exactly or by falling into
+        // range between first and last
+        if ( eventType == entry.m_eventType )
         {
         {
-            event.Skip(FALSE);
-            event.m_callbackUserData = table.entries[i].m_callbackUserData;
+            int tableId1 = entry.m_id,
+                tableId2 = entry.m_lastId;
+
+            if ( (tableId1 == -1) ||
+                 (tableId2 == -1 && eventId == tableId1) ||
+                 (tableId2 != -1 &&
+                    (eventId >= tableId1 && eventId <= tableId2)) )
+            {
+                event.Skip(FALSE);
+                event.m_callbackUserData = entry.m_callbackUserData;
 
 
-            (this->*((wxEventFunction) (table.entries[i].m_fn)))(event);
+                (this->*((wxEventFunction) (entry.m_fn)))(event);
 
 
-            if ( event.GetSkipped() )
-                return FALSE;
-            else
-                return TRUE;
+                return !event.GetSkipped();
+            }
         }
         }
+
         i++;
     }
         i++;
     }
+
     return FALSE;
 }
 
     return FALSE;
 }