We need to have this flag under wxMSW in order for navigation events to be
generated for the window. As wxNavigationEnabled can't set this flag on
creation because its ctor is called too early, do it in overridden AddChild().
Closes #13271.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72664
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
// Returns whether we or one of our children accepts focus.
bool AcceptsFocusRecursively() const
// Returns whether we or one of our children accepts focus.
bool AcceptsFocusRecursively() const
- bool AcceptsFocus() const { return m_acceptsFocus; }
+ { return m_acceptsFocusSelf || m_acceptsFocusChildren; }
// We accept focus from keyboard if we accept it at all.
bool AcceptsFocusFromKeyboard() const { return AcceptsFocusRecursively(); }
// We accept focus from keyboard if we accept it at all.
bool AcceptsFocusFromKeyboard() const { return AcceptsFocusRecursively(); }
{
BaseWindowClass::AddChild(child);
{
BaseWindowClass::AddChild(child);
- m_container.UpdateCanFocusChildren();
+ if ( m_container.UpdateCanFocusChildren() )
+ {
+ // Under MSW we must have wxTAB_TRAVERSAL style for TAB navigation
+ // to work.
+ if ( !BaseWindowClass::HasFlag(wxTAB_TRAVERSAL) )
+ BaseWindowClass::ToggleWindowStyle(wxTAB_TRAVERSAL);
+ }
}
WXDLLIMPEXP_INLINE_CORE virtual void RemoveChild(wxWindowBase *child)
}
WXDLLIMPEXP_INLINE_CORE virtual void RemoveChild(wxWindowBase *child)
BaseWindowClass::RemoveChild(child);
BaseWindowClass::RemoveChild(child);
+ // We could reset wxTAB_TRAVERSAL here but it doesn't seem to do any
+ // harm to keep it.
m_container.UpdateCanFocusChildren();
}
m_container.UpdateCanFocusChildren();
}