| Index: views/controls/native/native_view_host_gtk.cc
|
| ===================================================================
|
| --- views/controls/native/native_view_host_gtk.cc (revision 27114)
|
| +++ views/controls/native/native_view_host_gtk.cc (working copy)
|
| @@ -48,7 +48,7 @@
|
| }
|
|
|
| if (!focus_signal_id_) {
|
| - focus_signal_id_ = g_signal_connect(G_OBJECT(host_->focus_native_view()),
|
| + focus_signal_id_ = g_signal_connect(G_OBJECT(host_->native_view()),
|
| "focus-in-event",
|
| G_CALLBACK(CallFocusIn), this);
|
| }
|
| @@ -70,7 +70,7 @@
|
| destroy_signal_id_);
|
| destroy_signal_id_ = 0;
|
|
|
| - g_signal_handler_disconnect(G_OBJECT(host_->focus_native_view()),
|
| + g_signal_handler_disconnect(G_OBJECT(host_->native_view()),
|
| focus_signal_id_);
|
| focus_signal_id_ = 0;
|
|
|
| @@ -164,6 +164,11 @@
|
| gtk_widget_hide(fixed_);
|
| }
|
|
|
| +void NativeViewHostGtk::SetFocus() {
|
| + DCHECK(host_->native_view());
|
| + gtk_widget_grab_focus(host_->native_view());
|
| +}
|
| +
|
| ////////////////////////////////////////////////////////////////////////////////
|
| // NativeViewHostGtk, private:
|
|
|
| @@ -210,11 +215,19 @@
|
| }
|
|
|
| // static
|
| -gboolean NativeViewHostGtk::CallFocusIn(GtkWidget* widget,
|
| - GdkEventFocus* event,
|
| - NativeViewHostGtk* host) {
|
| - host->host_->GotNativeFocus();
|
| - return false;
|
| +void NativeViewHostGtk::CallFocusIn(GtkWidget* widget,
|
| + GdkEventFocus* event,
|
| + NativeViewHostGtk* host) {
|
| + FocusManager* focus_manager =
|
| + FocusManager::GetFocusManagerForNativeView(widget);
|
| + if (!focus_manager) {
|
| + // TODO(jcampan): http://crbug.com/21378 Reenable this NOTREACHED() when the
|
| + // options page is only based on views.
|
| + // NOTREACHED();
|
| + NOTIMPLEMENTED();
|
| + return;
|
| + }
|
| + focus_manager->SetFocusedView(host->host_->focus_view());
|
| }
|
|
|
| ////////////////////////////////////////////////////////////////////////////////
|
|
|