From 2c750daecddf6d69364e66e6465113ad9b9454a5 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 23 Jul 2013 00:43:29 +0000 Subject: [PATCH] No real changes, just refactor wxControlContainer code a little. Extract the call to wxWindow::SetCanFocus() into a separate UpdateParentCanFocus() function as it can be necessary to do it from places other than UpdateCanFocusChildren() too. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74582 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/containr.h | 3 +++ src/common/containr.cpp | 13 +++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/include/wx/containr.h b/include/wx/containr.h index 24e404a7f8..0549e6be09 100644 --- a/include/wx/containr.h +++ b/include/wx/containr.h @@ -97,6 +97,9 @@ protected: wxWindow *m_winLastFocused; private: + // Update the window status to reflect whether it is getting focus or not. + void UpdateParentCanFocus(); + // Indicates whether the associated window can ever have focus itself. // // Usually this is the case, e.g. a wxPanel can be used either as a diff --git a/src/common/containr.cpp b/src/common/containr.cpp index 9de060cdda..a194041631 100644 --- a/src/common/containr.cpp +++ b/src/common/containr.cpp @@ -47,6 +47,14 @@ // wxControlContainerBase // ---------------------------------------------------------------------------- +void wxControlContainerBase::UpdateParentCanFocus() +{ + // In the ports where it does something non trivial, the parent window + // should only be focusable if it doesn't have any focusable children + // (e.g. native focus handling in wxGTK totally breaks down otherwise). + m_winParent->SetCanFocus(m_acceptsFocusSelf && !m_acceptsFocusChildren); +} + bool wxControlContainerBase::UpdateCanFocusChildren() { const bool acceptsFocusChildren = HasAnyFocusableChildren(); @@ -54,10 +62,7 @@ bool wxControlContainerBase::UpdateCanFocusChildren() { m_acceptsFocusChildren = acceptsFocusChildren; - // In the ports where it does something non trivial, the parent window - // should only be focusable if it doesn't have any focusable children - // (e.g. native focus handling in wxGTK totally breaks down otherwise). - m_winParent->SetCanFocus(m_acceptsFocusSelf && !m_acceptsFocusChildren); + UpdateParentCanFocus(); } return m_acceptsFocusChildren;