Fix tab navigation into radio boxes in wxMSW.

Radio boxes refused to take focus from keyboard as their
wxControlContainer::AcceptsFocusFromKeyboard() always returned false because
the base wxStaticBox class disabled setting the focus to the control itself
and wxRadioBox doesn't have any children at wx level in wxMSW.

Fix this by reenabling "self focus" in wxRadioBox to make it possible to
accept focus from keyboard. This is not ideal as it doesn't take into account
e.g. radio boxes without any items or with all items disabled or hidden, but
this should be rare and would require virtualizing all children access at
wxControlContainer level, i.e. would be quite non-trivial so don't do this for
now as this, at least, fixes the navigation in common/normal case.

Also remove the unnecessary AcceptsFocus() override from wxRadioBox as this is
now done at wxControlContainer level.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74583 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2013-07-23 00:43:33 +00:00
parent 2c750daecd
commit 043ad13ffe
4 changed files with 18 additions and 5 deletions

View File

@@ -256,6 +256,12 @@ bool wxRadioBox::Create(wxWindow *parent,
const wxSize actualSize = GetSize();
PositionAllButtons(pos.x, pos.y, actualSize.x, actualSize.y);
// The base wxStaticBox class never accepts focus, but we do because giving
// focus to a wxRadioBox actually gives it to one of its buttons, which are
// not visible at wx level and hence are not taken into account by the
// logic in wxControlContainer code.
m_container.EnableSelfFocus();
return true;
}