Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(240)

Unified Diff: ui/views/cocoa/bridged_native_widget.mm

Issue 329463002: MacViews: Implement text input. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: More changes for tapted. Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698