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 |