Chromium Code Reviews| Index: ui/views/focus/focus_manager.cc |
| diff --git a/ui/views/focus/focus_manager.cc b/ui/views/focus/focus_manager.cc |
| index 4808b4422cb1157310a4306bb74eb6c950fe1462..9347d35a05355fa20dc918d2c9f76288d0d86d6a 100644 |
| --- a/ui/views/focus/focus_manager.cc |
| +++ b/ui/views/focus/focus_manager.cc |
| @@ -357,6 +357,20 @@ void FocusManager::ClearFocus() { |
| SetStoredFocusView(focused_view); |
| } |
| +void FocusManager::AdvanceFocusIfNecessary() { |
| + if (widget_->IsActive()) { |
|
sky
2014/08/08 14:52:30
nit: I would early out if !active. Less indentatio
mohsen
2014/08/08 17:45:07
Done.
|
| + // If widget is active and focused view is not focusable, advance focus or, |
| + // if not possible, clear focus. |
| + if (focused_view_ && !focused_view_->IsAccessibilityFocusable()) { |
| + AdvanceFocus(false); |
| + if (focused_view_ && !focused_view_->IsAccessibilityFocusable()) |
| + ClearFocus(); |
| + } |
| + } |
| + // If widget is inactive, there is no focused view to check. The stored view |
| + // will also be checked for focusability when it is being restored. |
| +} |
| + |
| void FocusManager::StoreFocusedView(bool clear_native_focus) { |
| View* focused_view = focused_view_; |
| // Don't do anything if no focused view. Storing the view (which is NULL), in |