From: Robin Dunn Date: Sat, 9 Sep 2006 06:34:08 +0000 (+0000) Subject: Don't let the built-in scrollbars confuse things when setting focus to X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/afd7bf26f1cf319020fc789f3afcdcb98c9b549b Don't let the built-in scrollbars confuse things when setting focus to a wxScrolledWindow git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41083 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/common/containr.cpp b/src/common/containr.cpp index 4f05ea60f2..42aa660a50 100644 --- a/src/common/containr.cpp +++ b/src/common/containr.cpp @@ -68,18 +68,19 @@ bool wxControlContainer::AcceptsFocus() const while ( node ) { wxWindow *child = node->GetData(); - - if ( child->AcceptsFocus() ) - { - return true; - } + node = node->GetNext(); #ifdef __WXMAC__ wxScrollBar *sb = wxDynamicCast( child , wxScrollBar ) ; if ( sb == NULL || !m_winParent->MacIsWindowScrollbar( sb ) ) hasRealChildren = true ; + if ( sb && m_winParent->MacIsWindowScrollbar( sb ) ) + continue; #endif - node = node->GetNext(); + if ( child->AcceptsFocus() ) + { + return true; + } } #ifdef __WXMAC__ @@ -637,7 +638,14 @@ bool wxSetFocusToChild(wxWindow *win, wxWindow **childLastFocused) while ( node ) { wxWindow *child = node->GetData(); + node = node->GetNext(); +#ifdef __WXMAC__ + wxScrollBar *sb = wxDynamicCast( child , wxScrollBar ) ; + if ( sb && child->GetParent()->MacIsWindowScrollbar( sb ) ) + continue; +#endif + if ( child->AcceptsFocusFromKeyboard() && !child->IsTopLevel() ) { #ifdef __WXMSW__ @@ -660,8 +668,6 @@ bool wxSetFocusToChild(wxWindow *win, wxWindow **childLastFocused) child->SetFocusFromKbd(); return true; } - - node = node->GetNext(); } return false;