+ //
+ // moreover, if another radiobutton in the group currently has the focus,
+ // we have to set it to this radiobutton, else the old radiobutton will be
+ // reselected automatically, if a parent window loses the focus and regains
+ // it.
+ wxWindow * const focus = FindFocus();
+ wxTopLevelWindow * const
+ tlw = wxDynamicCast(wxGetTopLevelParent(this), wxTopLevelWindow);
+ wxCHECK_RET( tlw, wxT("radio button outside of TLW?") );
+ wxWindow * const focusInTLW = tlw->GetLastFocus();
+
+ const wxWindowList& siblings = GetParent()->GetChildren();
+ wxWindowList::compatibility_iterator nodeThis = siblings.Find(this);
+ wxCHECK_RET( nodeThis, wxT("radio button not a child of its parent?") );
+
+ // this will be set to true in the code below if the focus is in our TLW
+ // and belongs to one of the other buttons in the same group
+ bool shouldSetFocus = false;
+
+ // this will be set to true if the focus is outside of our TLW currently
+ // but the remembered focus of this TLW is one of the other buttons in the
+ // same group
+ bool shouldSetTLWFocus = false;
+
+ // if it's not the first item of the group ...
+ if ( !HasFlag(wxRB_GROUP) )