Index: ui/views/widget/widget.cc |
diff --git a/ui/views/widget/widget.cc b/ui/views/widget/widget.cc |
index 107445f7b2c46c601cf46f79d0ce877016cc23c7..d549616d7231aa57ca15552591cfa1bb2c1802c4 100644 |
--- a/ui/views/widget/widget.cc |
+++ b/ui/views/widget/widget.cc |
@@ -1015,6 +1015,19 @@ void Widget::OnNativeWidgetActivationChanged(bool active) { |
FOR_EACH_OBSERVER(WidgetObserver, observers_, |
OnWidgetActivationChanged(this, active)); |
+ // During window creation, the widget gets focused without activation, and in |
+ // that case, the focus manager cannot set the appropriate text input client |
+ // because the widget is not active. Thus we have to notify the focus manager |
+ // not only when the focus changes but also when the widget gets activated. |
+ // See crbug.com/377479 for details. |
+ views::FocusManager* focus_manager = GetFocusManager(); |
+ if (focus_manager) { |
+ if (active) |
+ focus_manager->FocusTextInputClient(focus_manager->GetFocusedView()); |
+ else |
+ focus_manager->BlurTextInputClient(focus_manager->GetFocusedView()); |
+ } |
+ |
if (IsVisible() && non_client_view()) |
non_client_view()->frame_view()->SchedulePaint(); |
} |