]> git.saurik.com Git - wxWidgets.git/commitdiff
Don't send a huge number of unneeded wxChildFocusEvents.
authorVadim Zeitlin <vadim@wxwidgets.org>
Fri, 25 May 2012 09:48:22 +0000 (09:48 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Fri, 25 May 2012 09:48:22 +0000 (09:48 +0000)
wxControlContainer::SetLastFocus() propagated wxChildFocusEvent explicitly to
its parent but this is not needed because wxChildFocusEvents propagate by
default, being derived from wxCommandEvent. And doing it again resulted in the
total number of events increasing exponentially with the depth of the window
hierarchy and real performance problems due to processing all of them.

Closes #14310.

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

src/common/containr.cpp

index 8490cc5b9f07a6bd3e5f89af2dc900c6cf692e8b..53d4e01348777bfa658d3272249241c11ed84f5d 100644 (file)
@@ -174,19 +174,6 @@ void wxControlContainer::SetLastFocus(wxWindow *win)
             wxLogTrace(TRACE_FOCUS, wxT("No more last focus"));
         }
     }
-
-    // propagate the last focus upwards so that our parent can set focus back
-    // to us if it loses it now and regains later; do *not* do this if we are
-    // a toplevel window (e.g. wxDialog) that has another frame as its parent
-    if ( !m_winParent->IsTopLevel() )
-    {
-        wxWindow *parent = m_winParent->GetParent();
-        if ( parent )
-        {
-            wxChildFocusEvent eventFocus(m_winParent);
-            parent->GetEventHandler()->ProcessEvent(eventFocus);
-        }
-    }
 }
 
 // --------------------------------------------------------------------