diff options
author | yutak@chromium.org <yutak@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-12 23:52:20 +0000 |
---|---|---|
committer | yutak@chromium.org <yutak@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-12 23:52:20 +0000 |
commit | 6d21eb72d7333889badc108afe21dd1bc52e1135 (patch) | |
tree | a45694ee7b3b43fffc8db3dbe113c4ab52e246b9 /views/focus/focus_manager.h | |
parent | 8e0c43541d22b356b7eac90cfce4a4ebdd69c8f1 (diff) | |
download | chromium_src-6d21eb72d7333889badc108afe21dd1bc52e1135.zip chromium_src-6d21eb72d7333889badc108afe21dd1bc52e1135.tar.gz chromium_src-6d21eb72d7333889badc108afe21dd1bc52e1135.tar.bz2 |
Fix reversed focus traversal order issue.
This change fixes several problems in handling focus traversal and resolves TabbedPane's traversal order issue.
Reversed focus traversal is very tricky, and the original traversal code overlooked several things.
(1) A focusable view may have a FocusTraverasble.
(2) When we are going down, we have to check if the current view has a FocusTraversable.
(3) When we are going up from a FocusTraversable, the parent view may gain the next focus.
This change fixes these issues.
BUG=6871
TEST=See issue 6871.
Review URL: http://codereview.chromium.org/125062
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@18335 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views/focus/focus_manager.h')
-rw-r--r-- | views/focus/focus_manager.h | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/views/focus/focus_manager.h b/views/focus/focus_manager.h index c5e2be9a..59e9b3b 100644 --- a/views/focus/focus_manager.h +++ b/views/focus/focus_manager.h @@ -107,8 +107,7 @@ class FocusTraversable { // previous (reverse is true) view. // - |direction| specifies whether we are traversing down (meaning we should // look into child views) or traversing up (don't look at child views). - // - |dont_loop| if true specifies that if there is a loop in the focus - // hierarchy, we should keep traversing after the last view of the loop. + // - |check_starting_view| is true if starting_view may obtain the next focus. // - |focus_traversable| is set to the focus traversable that should be // traversed if one is found (in which case the call returns NULL). // - |focus_traversable_view| is set to the view associated with the @@ -118,7 +117,7 @@ class FocusTraversable { virtual View* FindNextFocusableView(View* starting_view, bool reverse, Direction direction, - bool dont_loop, + bool check_starting_view, FocusTraversable** focus_traversable, View** focus_traversable_view) = 0; @@ -309,8 +308,7 @@ class FocusManager { // Returns NULL if no focusable view were found. View* FindFocusableView(FocusTraversable* focus_traversable, View* starting_view, - bool reverse, - bool dont_loop); + bool reverse); // The RootView of the window associated with this FocusManager. RootView* top_root_view_; |