| Index: chrome/browser/renderer_host/render_widget_host_view_gtk.cc
|
| ===================================================================
|
| --- chrome/browser/renderer_host/render_widget_host_view_gtk.cc (revision 25695)
|
| +++ chrome/browser/renderer_host/render_widget_host_view_gtk.cc (working copy)
|
| @@ -28,6 +28,7 @@
|
| #include "chrome/common/x11_util.h"
|
| #include "chrome/browser/renderer_host/backing_store.h"
|
| #include "chrome/browser/renderer_host/gtk_im_context_wrapper.h"
|
| +#include "chrome/browser/renderer_host/gtk_key_bindings_handler.h"
|
| #include "chrome/browser/renderer_host/render_widget_host.h"
|
| #include "webkit/api/public/gtk/WebInputEventFactory.h"
|
| #include "webkit/glue/webcursor_gtk_data.h"
|
| @@ -299,6 +300,8 @@
|
| view_.Own(RenderWidgetHostViewGtkWidget::CreateNewWidget(this));
|
| // |im_context_| must be created after creating |view_| widget.
|
| im_context_.reset(new GtkIMContextWrapper(this));
|
| + // |key_bindings_handler_| must be created after creating |view_| widget.
|
| + key_bindings_handler_.reset(new GtkKeyBindingsHandler(view_.get()));
|
| plugin_container_manager_.set_host_widget(view_.get());
|
| gtk_widget_show(view_.get());
|
| }
|
| @@ -311,6 +314,8 @@
|
| view_.Own(RenderWidgetHostViewGtkWidget::CreateNewWidget(this));
|
| // |im_context_| must be created after creating |view_| widget.
|
| im_context_.reset(new GtkIMContextWrapper(this));
|
| + // |key_bindings_handler_| must be created after creating |view_| widget.
|
| + key_bindings_handler_.reset(new GtkKeyBindingsHandler(view_.get()));
|
| plugin_container_manager_.set_host_widget(view_.get());
|
| gtk_container_add(GTK_CONTAINER(popup), view_.get());
|
|
|
| @@ -462,6 +467,7 @@
|
| void RenderWidgetHostViewGtk::IMEUpdateStatus(int control,
|
| const gfx::Rect& caret_rect) {
|
| im_context_->UpdateStatus(control, caret_rect);
|
| + key_bindings_handler_->set_enabled(control != IME_DISABLE);
|
| }
|
|
|
| void RenderWidgetHostViewGtk::DidPaintRect(const gfx::Rect& rect) {
|
| @@ -618,3 +624,12 @@
|
| gfx::PluginWindowHandle id) {
|
| plugin_container_manager_.DestroyPluginContainer(id);
|
| }
|
| +
|
| +void RenderWidgetHostViewGtk::ForwardKeyboardEvent(
|
| + const NativeWebKeyboardEvent& event) {
|
| + EditCommands edit_commands;
|
| + if (key_bindings_handler_->Match(event, &edit_commands)) {
|
| + host_->ForwardEditCommandsForNextKeyEvent(edit_commands);
|
| + }
|
| + host_->ForwardKeyboardEvent(event);
|
| +}
|
|
|