]> git.saurik.com Git - wxWidgets.git/commitdiff
Don't let the built-in scrollbars confuse things when setting focus to
authorRobin Dunn <robin@alldunn.com>
Sat, 9 Sep 2006 06:34:08 +0000 (06:34 +0000)
committerRobin Dunn <robin@alldunn.com>
Sat, 9 Sep 2006 06:34:08 +0000 (06:34 +0000)
a wxScrolledWindow

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41083 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/common/containr.cpp

index 4f05ea60f21daa85073a1d12608426c69fc5c9dc..42aa660a504c1c40728332be3a432b9e670c5db4 100644 (file)
@@ -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;