| Index: chrome/browser/renderer_host/render_widget_host_view_gtk.cc
|
| ===================================================================
|
| --- chrome/browser/renderer_host/render_widget_host_view_gtk.cc (revision 30714)
|
| +++ chrome/browser/renderer_host/render_widget_host_view_gtk.cc (working copy)
|
| @@ -60,7 +60,10 @@
|
| GDK_BUTTON_PRESS_MASK |
|
| GDK_BUTTON_RELEASE_MASK |
|
| GDK_KEY_PRESS_MASK |
|
| - GDK_KEY_RELEASE_MASK);
|
| + GDK_KEY_RELEASE_MASK |
|
| + GDK_FOCUS_CHANGE_MASK |
|
| + GDK_ENTER_NOTIFY_MASK |
|
| + GDK_LEAVE_NOTIFY_MASK);
|
| GTK_WIDGET_SET_FLAGS(widget, GTK_CAN_FOCUS);
|
|
|
| g_signal_connect(widget, "size-allocate",
|
| @@ -83,6 +86,11 @@
|
| G_CALLBACK(ButtonPressReleaseEvent), host_view);
|
| g_signal_connect(widget, "motion-notify-event",
|
| G_CALLBACK(MouseMoveEvent), host_view);
|
| + g_signal_connect(widget, "enter-notify-event",
|
| + G_CALLBACK(CrossingEvent), host_view);
|
| + g_signal_connect(widget, "leave-notify-event",
|
| + G_CALLBACK(CrossingEvent), host_view);
|
| +
|
| // Connect after so that we are called after the handler installed by the
|
| // TabContentsView which handles zoom events.
|
| g_signal_connect_after(widget, "scroll-event",
|
| @@ -257,6 +265,14 @@
|
| return FALSE;
|
| }
|
|
|
| + static gboolean CrossingEvent(GtkWidget* widget, GdkEventCrossing* event,
|
| + RenderWidgetHostViewGtk* host_view) {
|
| + host_view->GetRenderWidgetHost()->ForwardMouseEvent(
|
| + WebInputEventFactory::mouseEvent(event));
|
| +
|
| + return FALSE;
|
| + }
|
| +
|
| static gboolean MouseScrollEvent(GtkWidget* widget, GdkEventScroll* event,
|
| RenderWidgetHostViewGtk* host_view) {
|
| // If the user is holding shift, translate it into a horizontal scroll. We
|
|
|