| Index: chrome/browser/ui/views/find_bar_view.cc
|
| diff --git a/chrome/browser/ui/views/find_bar_view.cc b/chrome/browser/ui/views/find_bar_view.cc
|
| index 2920f2a95d137ebc9a1c37ca66968f6d944a76eb..eea85a6d7b8f7c738a8c3777f2538f980b3b79a1 100644
|
| --- a/chrome/browser/ui/views/find_bar_view.cc
|
| +++ b/chrome/browser/ui/views/find_bar_view.cc
|
| @@ -26,6 +26,7 @@
|
| #include "views/background.h"
|
| #include "views/controls/button/image_button.h"
|
| #include "views/controls/label.h"
|
| +#include "views/focus/focus_manager.h"
|
| #include "views/widget/widget.h"
|
|
|
| // The amount of whitespace to have before the find button.
|
| @@ -223,6 +224,23 @@ void FindBarView::UpdateForResult(const FindNotificationDetails& result,
|
| }
|
|
|
| void FindBarView::SetFocusAndSelection(bool select_all) {
|
| +#if defined(OS_CHROMEOS)
|
| + // TODO(altimofeev): this workaround is needed only when the FindBar was
|
| + // opened from the wrench menu (it also works in the accelerator case, but it
|
| + // is not really needed).
|
| +
|
| + // Restore focus to allow the find bar's external focus tracker to save the
|
| + // view that should be activated later (the tracker is created after the
|
| + // wrench menu has received the focus).
|
| + find_text_->GetFocusManager()->RestoreFocusedView();
|
| + find_text_->RequestFocus();
|
| + // Storing is needed here because the view that has focus before the wrench
|
| + // menu activation will get focus just after the wrench menu is closed.
|
| + // The FindBar has it's own focus tracker, so it will focus the correct view
|
| + // on close.
|
| + find_text_->GetFocusManager()->StoreFocusedView();
|
| + // Request focus again since the call to StoreFocusedView unfocuses the view.
|
| +#endif
|
| find_text_->RequestFocus();
|
| if (select_all && !find_text_->text().empty())
|
| find_text_->SelectAll();
|
|
|