Chromium Code Reviews| Index: ui/views/cocoa/bridged_native_widget.mm |
| diff --git a/ui/views/cocoa/bridged_native_widget.mm b/ui/views/cocoa/bridged_native_widget.mm |
| index 4bfb0ba6f32785a32443b6762f4b4d65fea10642..bab6602d9b30cba4680f524941a76afa7607052d 100644 |
| --- a/ui/views/cocoa/bridged_native_widget.mm |
| +++ b/ui/views/cocoa/bridged_native_widget.mm |
| @@ -13,6 +13,7 @@ |
| #include "ui/views/ime/input_method_bridge.h" |
| #include "ui/views/ime/null_input_method.h" |
| #include "ui/views/view.h" |
| +#include "ui/views/widget/native_widget_mac.h" |
| #include "ui/views/widget/widget.h" |
| namespace views { |
| @@ -21,9 +22,14 @@ BridgedNativeWidget::BridgedNativeWidget(NativeWidgetMac* parent) |
| : native_widget_mac_(parent) { |
| window_delegate_.reset( |
| [[ViewsNSWindowDelegate alloc] initWithBridgedNativeWidget:this]); |
| + focus_manager_ = parent ? parent->GetWidget()->GetFocusManager() : NULL; |
| + if (focus_manager_) |
| + focus_manager_->AddFocusChangeListener(this); |
| } |
| BridgedNativeWidget::~BridgedNativeWidget() { |
| + if (focus_manager_) |
| + focus_manager_->RemoveFocusChangeListener(this); |
| SetRootView(NULL); |
| [window_ setDelegate:nil]; |
| } |
| @@ -77,8 +83,19 @@ void BridgedNativeWidget::DispatchKeyEventPostIME(const ui::KeyEvent& key) { |
| // MockInputMethod do. |
| Widget* widget = [bridged_view_ hostedView]->GetWidget(); |
|
tapted
2014/06/20 00:40:59
I'd probably do
DCHECK(parent_);
DCHECK(focus_man
Andre
2014/06/20 01:00:39
Done.
|
| widget->OnKeyEvent(const_cast<ui::KeyEvent*>(&key)); |
| - if (!key.handled() && widget->GetFocusManager()) |
| - widget->GetFocusManager()->OnKeyEvent(key); |
| + if (!key.handled() && focus_manager_) |
| + focus_manager_->OnKeyEvent(key); |
| +} |
| + |
| +void BridgedNativeWidget::OnWillChangeFocus(View* focused_before, |
| + View* focused_now) { |
| +} |
| + |
| +void BridgedNativeWidget::OnDidChangeFocus(View* focused_before, |
| + View* focused_now) { |
| + ui::TextInputClient* input_client = |
| + focused_now ? focused_now->GetTextInputClient() : NULL; |
| + [bridged_view_ setTextInputClient:input_client]; |
| } |
| } // namespace views |