]> git.saurik.com Git - wxWidgets.git/commitdiff
Call wxEvtHandler::TryBefore() only once from ProcessEvent().
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 9 May 2010 14:55:21 +0000 (14:55 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 9 May 2010 14:55:21 +0000 (14:55 +0000)
The event pre-processing hooks associated with the window should be called
only once during the event processing, we don't need to call TryBefore() for
each and every event handler associated with the window too.

This makes the code slightly simpler and faster and shouldn't change the
behaviour of any existing code.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64260 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

interface/wx/event.h
src/common/event.cpp

index 07f56d82c86baedd953c61db5d6036eca796eb28..b94413f2c1095ae455e2bf66469203093db90348 100644 (file)
@@ -463,10 +463,10 @@ public:
         The normal order of event table searching is as follows:
         -# wxApp::FilterEvent() is called. If it returns anything but @c -1
            (default) the processing stops here.
-        -# If the object is disabled (via a call to wxEvtHandler::SetEvtHandlerEnabled)
-           the function skips to step (7).
         -# TryBefore() is called (this is where wxValidator are taken into
            account for wxWindow objects). If this returns @true, the function exits.
+        -# If the object is disabled (via a call to wxEvtHandler::SetEvtHandlerEnabled)
+           the function skips to step (7).
         -# Dynamic event table of the handlers bound using Bind<>() is
            searched. If a handler is found, it is executed and the function
            returns @true unless the handler used wxEvent::Skip() to indicate
@@ -489,7 +489,7 @@ public:
            processed, ProcessEvent() on wxTheApp object is called as the last
            step.
 
-        Notice that steps (2)-(6) are performed in ProcessEventHere() which is
+        Notice that steps (3)-(5) are performed in ProcessEventHere() which is
         called by this function.
 
         @param event
@@ -508,8 +508,7 @@ public:
         This method is called from ProcessEvent(), please see the detailed
         description of the event processing logic there.
 
-        It is @em not virtual and so may not be overridden but it does call
-        virtual TryBefore() which may be overridden.
+        It is @em not virtual and so may not be overridden.
 
         @param event
             Event to process.
index 4dd9eaeaa4f8e6fdaa952b0f31a61a5717e0e1ed..5f521211c44f49957e911db3d4007462a0466b6d 100644 (file)
@@ -1361,6 +1361,10 @@ bool wxEvtHandler::ProcessEvent(wxEvent& event)
         }
     }
 
+    // Try the hooks which should be called before our own handlers
+    if ( TryBefore(event) )
+        return true;
+
     if ( ProcessEventHere(event) )
         return true;
 
@@ -1381,10 +1385,6 @@ bool wxEvtHandler::ProcessEventHere(wxEvent& event)
     if ( !GetEvtHandlerEnabled() )
         return false;
 
-    // Try the hooks which should be called before our own handlers
-    if ( TryBefore(event) )
-        return true;
-
     // Handle per-instance dynamic event tables first
     if ( m_dynamicEvents && SearchDynamicEventTable(event) )
         return true;