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 |