OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/renderer_host/render_widget_host_view_gtk.h" | 5 #include "chrome/browser/renderer_host/render_widget_host_view_gtk.h" |
6 | 6 |
7 // If this gets included after the gtk headers, then a bunch of compiler | 7 // If this gets included after the gtk headers, then a bunch of compiler |
8 // errors happen because of a "#define Status int" in Xlib.h, which interacts | 8 // errors happen because of a "#define Status int" in Xlib.h, which interacts |
9 // badly with URLRequestStatus::Status. | 9 // badly with URLRequestStatus::Status. |
10 #include "chrome/common/render_messages.h" | 10 #include "chrome/common/render_messages.h" |
(...skipping 42 matching lines...) Loading... |
53 gtk_widget_modify_bg(widget, GTK_STATE_NORMAL, &gfx::kGdkWhite); | 53 gtk_widget_modify_bg(widget, GTK_STATE_NORMAL, &gfx::kGdkWhite); |
54 #else | 54 #else |
55 gtk_widget_modify_bg(widget, GTK_STATE_NORMAL, &gfx::kGdkGreen); | 55 gtk_widget_modify_bg(widget, GTK_STATE_NORMAL, &gfx::kGdkGreen); |
56 #endif | 56 #endif |
57 | 57 |
58 gtk_widget_add_events(widget, GDK_EXPOSURE_MASK | | 58 gtk_widget_add_events(widget, GDK_EXPOSURE_MASK | |
59 GDK_POINTER_MOTION_MASK | | 59 GDK_POINTER_MOTION_MASK | |
60 GDK_BUTTON_PRESS_MASK | | 60 GDK_BUTTON_PRESS_MASK | |
61 GDK_BUTTON_RELEASE_MASK | | 61 GDK_BUTTON_RELEASE_MASK | |
62 GDK_KEY_PRESS_MASK | | 62 GDK_KEY_PRESS_MASK | |
63 GDK_KEY_RELEASE_MASK); | 63 GDK_KEY_RELEASE_MASK | |
| 64 GDK_FOCUS_CHANGE_MASK | |
| 65 GDK_ENTER_NOTIFY_MASK | |
| 66 GDK_LEAVE_NOTIFY_MASK); |
64 GTK_WIDGET_SET_FLAGS(widget, GTK_CAN_FOCUS); | 67 GTK_WIDGET_SET_FLAGS(widget, GTK_CAN_FOCUS); |
65 | 68 |
66 g_signal_connect(widget, "size-allocate", | 69 g_signal_connect(widget, "size-allocate", |
67 G_CALLBACK(SizeAllocate), host_view); | 70 G_CALLBACK(SizeAllocate), host_view); |
68 g_signal_connect(widget, "expose-event", | 71 g_signal_connect(widget, "expose-event", |
69 G_CALLBACK(ExposeEvent), host_view); | 72 G_CALLBACK(ExposeEvent), host_view); |
70 g_signal_connect(widget, "key-press-event", | 73 g_signal_connect(widget, "key-press-event", |
71 G_CALLBACK(KeyPressReleaseEvent), host_view); | 74 G_CALLBACK(KeyPressReleaseEvent), host_view); |
72 g_signal_connect(widget, "key-release-event", | 75 g_signal_connect(widget, "key-release-event", |
73 G_CALLBACK(KeyPressReleaseEvent), host_view); | 76 G_CALLBACK(KeyPressReleaseEvent), host_view); |
74 g_signal_connect(widget, "focus-in-event", | 77 g_signal_connect(widget, "focus-in-event", |
75 G_CALLBACK(OnFocusIn), host_view); | 78 G_CALLBACK(OnFocusIn), host_view); |
76 g_signal_connect(widget, "focus-out-event", | 79 g_signal_connect(widget, "focus-out-event", |
77 G_CALLBACK(OnFocusOut), host_view); | 80 G_CALLBACK(OnFocusOut), host_view); |
78 g_signal_connect(widget, "grab-notify", | 81 g_signal_connect(widget, "grab-notify", |
79 G_CALLBACK(OnGrabNotify), host_view); | 82 G_CALLBACK(OnGrabNotify), host_view); |
80 g_signal_connect(widget, "button-press-event", | 83 g_signal_connect(widget, "button-press-event", |
81 G_CALLBACK(ButtonPressReleaseEvent), host_view); | 84 G_CALLBACK(ButtonPressReleaseEvent), host_view); |
82 g_signal_connect(widget, "button-release-event", | 85 g_signal_connect(widget, "button-release-event", |
83 G_CALLBACK(ButtonPressReleaseEvent), host_view); | 86 G_CALLBACK(ButtonPressReleaseEvent), host_view); |
84 g_signal_connect(widget, "motion-notify-event", | 87 g_signal_connect(widget, "motion-notify-event", |
85 G_CALLBACK(MouseMoveEvent), host_view); | 88 G_CALLBACK(MouseMoveEvent), host_view); |
| 89 g_signal_connect(widget, "enter-notify-event", |
| 90 G_CALLBACK(CrossingEvent), host_view); |
| 91 g_signal_connect(widget, "leave-notify-event", |
| 92 G_CALLBACK(CrossingEvent), host_view); |
| 93 |
86 // Connect after so that we are called after the handler installed by the | 94 // Connect after so that we are called after the handler installed by the |
87 // TabContentsView which handles zoom events. | 95 // TabContentsView which handles zoom events. |
88 g_signal_connect_after(widget, "scroll-event", | 96 g_signal_connect_after(widget, "scroll-event", |
89 G_CALLBACK(MouseScrollEvent), host_view); | 97 G_CALLBACK(MouseScrollEvent), host_view); |
90 | 98 |
91 return widget; | 99 return widget; |
92 } | 100 } |
93 | 101 |
94 private: | 102 private: |
95 static gboolean SizeAllocate(GtkWidget* widget, GtkAllocation* allocation, | 103 static gboolean SizeAllocate(GtkWidget* widget, GtkAllocation* allocation, |
(...skipping 154 matching lines...) Loading... |
250 int y = 0; | 258 int y = 0; |
251 gtk_widget_get_pointer(widget, &x, &y); | 259 gtk_widget_get_pointer(widget, &x, &y); |
252 event->x = x; | 260 event->x = x; |
253 event->y = y; | 261 event->y = y; |
254 } | 262 } |
255 host_view->GetRenderWidgetHost()->ForwardMouseEvent( | 263 host_view->GetRenderWidgetHost()->ForwardMouseEvent( |
256 WebInputEventFactory::mouseEvent(event)); | 264 WebInputEventFactory::mouseEvent(event)); |
257 return FALSE; | 265 return FALSE; |
258 } | 266 } |
259 | 267 |
| 268 static gboolean CrossingEvent(GtkWidget* widget, GdkEventCrossing* event, |
| 269 RenderWidgetHostViewGtk* host_view) { |
| 270 host_view->GetRenderWidgetHost()->ForwardMouseEvent( |
| 271 WebInputEventFactory::mouseEvent(event)); |
| 272 |
| 273 return FALSE; |
| 274 } |
| 275 |
260 static gboolean MouseScrollEvent(GtkWidget* widget, GdkEventScroll* event, | 276 static gboolean MouseScrollEvent(GtkWidget* widget, GdkEventScroll* event, |
261 RenderWidgetHostViewGtk* host_view) { | 277 RenderWidgetHostViewGtk* host_view) { |
262 // If the user is holding shift, translate it into a horizontal scroll. We | 278 // If the user is holding shift, translate it into a horizontal scroll. We |
263 // don't care what other modifiers the user may be holding (zooming is | 279 // don't care what other modifiers the user may be holding (zooming is |
264 // handled at the TabContentsView level). | 280 // handled at the TabContentsView level). |
265 if (event->state & GDK_SHIFT_MASK) { | 281 if (event->state & GDK_SHIFT_MASK) { |
266 if (event->direction == GDK_SCROLL_UP) | 282 if (event->direction == GDK_SCROLL_UP) |
267 event->direction = GDK_SCROLL_LEFT; | 283 event->direction = GDK_SCROLL_LEFT; |
268 else if (event->direction == GDK_SCROLL_DOWN) | 284 else if (event->direction == GDK_SCROLL_DOWN) |
269 event->direction = GDK_SCROLL_RIGHT; | 285 event->direction = GDK_SCROLL_RIGHT; |
(...skipping 378 matching lines...) Loading... |
648 const NativeWebKeyboardEvent& event) { | 664 const NativeWebKeyboardEvent& event) { |
649 if (!host_) | 665 if (!host_) |
650 return; | 666 return; |
651 | 667 |
652 EditCommands edit_commands; | 668 EditCommands edit_commands; |
653 if (key_bindings_handler_->Match(event, &edit_commands)) { | 669 if (key_bindings_handler_->Match(event, &edit_commands)) { |
654 host_->ForwardEditCommandsForNextKeyEvent(edit_commands); | 670 host_->ForwardEditCommandsForNextKeyEvent(edit_commands); |
655 } | 671 } |
656 host_->ForwardKeyboardEvent(event); | 672 host_->ForwardKeyboardEvent(event); |
657 } | 673 } |
OLD | NEW |