Index: views/widget/widget.cc |
diff --git a/views/widget/widget.cc b/views/widget/widget.cc |
index 07a6687a2eb13eb55aa613de75cb4e491245faa2..45423c6d40fa633753d1b3be05d21f06acc15712 100644 |
--- a/views/widget/widget.cc |
+++ b/views/widget/widget.cc |
@@ -596,8 +596,14 @@ FocusManager* Widget::GetFocusManager() { |
} |
InputMethod* Widget::GetInputMethod() { |
- Widget* toplevel_widget = GetTopLevelWidget(); |
- return toplevel_widget ? toplevel_widget->GetInputMethodDirect() : NULL; |
+ if (is_top_level()) { |
+ if (!input_method_.get()) |
+ ReplaceInputMethod(native_widget_->CreateInputMethod()); |
+ return input_method_.get(); |
+ } else { |
+ Widget* toplevel = GetTopLevelWidget(); |
+ return toplevel ? toplevel->GetInputMethod() : NULL; |
+ } |
} |
void Widget::RunShellDrag(View* view, const ui::OSExchangeData& data, |
@@ -976,8 +982,6 @@ bool Widget::ExecuteCommand(int command_id) { |
} |
InputMethod* Widget::GetInputMethodDirect() { |
- if (!input_method_.get() && is_top_level()) |
- ReplaceInputMethod(native_widget_->CreateInputMethod()); |
return input_method_.get(); |
} |