+void wxWindow::OnSetFocus(wxFocusEvent& event)
+{
+ // panel wants to track the window which was the last to have focus in it,
+ // so we want to set ourselves as the window which last had focus
+ //
+ // notice that it's also important to do it upwards the tree becaus
+ // otherwise when the top level panel gets focus, it won't set it back to
+ // us, but to some other sibling
+ wxWindow *win = this;
+ while ( win )
+ {
+ wxWindow *parent = win->GetParent();
+ wxPanel *panel = wxDynamicCast(parent, wxPanel);
+ if ( panel )
+ {
+ panel->SetLastFocus(win);
+ }
+
+ win = parent;
+ }
+
+ event.Skip();
+}
+