| Index: ui/views/widget/widget.cc
|
| diff --git a/ui/views/widget/widget.cc b/ui/views/widget/widget.cc
|
| index 08578add8f534fe637481183fd005dbc34a58a1c..8b062753e23765729eb07cb7ac267a9ff10fe818 100644
|
| --- a/ui/views/widget/widget.cc
|
| +++ b/ui/views/widget/widget.cc
|
| @@ -1303,18 +1303,24 @@ const Widget* Widget::AsWidget() const {
|
| }
|
|
|
| bool Widget::SetInitialFocus(ui::WindowShowState show_state) {
|
| + FocusManager* focus_manager = GetFocusManager();
|
| View* v = widget_delegate_->GetInitiallyFocusedView();
|
| if (!focus_on_creation_ || show_state == ui::SHOW_STATE_INACTIVE ||
|
| show_state == ui::SHOW_STATE_MINIMIZED) {
|
| // If not focusing the window now, tell the focus manager which view to
|
| // focus when the window is restored.
|
| - if (v && focus_manager_.get())
|
| - focus_manager_->SetStoredFocusView(v);
|
| + if (v && focus_manager)
|
| + focus_manager->SetStoredFocusView(v);
|
| return true;
|
| }
|
| - if (v)
|
| + if (v) {
|
| v->RequestFocus();
|
| - return !!v;
|
| + // If the request for focus was unsuccessful, fall back to using the first
|
| + // focusable View instead.
|
| + if (focus_manager && focus_manager->GetFocusedView() == nullptr)
|
| + focus_manager->AdvanceFocus(false);
|
| + }
|
| + return !!focus_manager->GetFocusedView();
|
| }
|
|
|
| ////////////////////////////////////////////////////////////////////////////////
|
|
|