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...) Expand 10 before | Expand all | Expand 10 after 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); | |
67 GTK_WIDGET_SET_FLAGS(widget, GTK_CAN_FOCUS); | 64 GTK_WIDGET_SET_FLAGS(widget, GTK_CAN_FOCUS); |
68 | 65 |
69 g_signal_connect(widget, "size-allocate", | 66 g_signal_connect(widget, "size-allocate", |
70 G_CALLBACK(SizeAllocate), host_view); | 67 G_CALLBACK(SizeAllocate), host_view); |
71 g_signal_connect(widget, "expose-event", | 68 g_signal_connect(widget, "expose-event", |
72 G_CALLBACK(ExposeEvent), host_view); | 69 G_CALLBACK(ExposeEvent), host_view); |
73 g_signal_connect(widget, "key-press-event", | 70 g_signal_connect(widget, "key-press-event", |
74 G_CALLBACK(KeyPressReleaseEvent), host_view); | 71 G_CALLBACK(KeyPressReleaseEvent), host_view); |
75 g_signal_connect(widget, "key-release-event", | 72 g_signal_connect(widget, "key-release-event", |
76 G_CALLBACK(KeyPressReleaseEvent), host_view); | 73 G_CALLBACK(KeyPressReleaseEvent), host_view); |
77 g_signal_connect(widget, "focus-in-event", | 74 g_signal_connect(widget, "focus-in-event", |
78 G_CALLBACK(OnFocusIn), host_view); | 75 G_CALLBACK(OnFocusIn), host_view); |
79 g_signal_connect(widget, "focus-out-event", | 76 g_signal_connect(widget, "focus-out-event", |
80 G_CALLBACK(OnFocusOut), host_view); | 77 G_CALLBACK(OnFocusOut), host_view); |
81 g_signal_connect(widget, "grab-notify", | 78 g_signal_connect(widget, "grab-notify", |
82 G_CALLBACK(OnGrabNotify), host_view); | 79 G_CALLBACK(OnGrabNotify), host_view); |
83 g_signal_connect(widget, "button-press-event", | 80 g_signal_connect(widget, "button-press-event", |
84 G_CALLBACK(ButtonPressReleaseEvent), host_view); | 81 G_CALLBACK(ButtonPressReleaseEvent), host_view); |
85 g_signal_connect(widget, "button-release-event", | 82 g_signal_connect(widget, "button-release-event", |
86 G_CALLBACK(ButtonPressReleaseEvent), host_view); | 83 G_CALLBACK(ButtonPressReleaseEvent), host_view); |
87 g_signal_connect(widget, "motion-notify-event", | 84 g_signal_connect(widget, "motion-notify-event", |
88 G_CALLBACK(MouseMoveEvent), host_view); | 85 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 | |
94 // Connect after so that we are called after the handler installed by the | 86 // Connect after so that we are called after the handler installed by the |
95 // TabContentsView which handles zoom events. | 87 // TabContentsView which handles zoom events. |
96 g_signal_connect_after(widget, "scroll-event", | 88 g_signal_connect_after(widget, "scroll-event", |
97 G_CALLBACK(MouseScrollEvent), host_view); | 89 G_CALLBACK(MouseScrollEvent), host_view); |
98 | 90 |
99 return widget; | 91 return widget; |
100 } | 92 } |
101 | 93 |
102 private: | 94 private: |
103 static gboolean SizeAllocate(GtkWidget* widget, GtkAllocation* allocation, | 95 static gboolean SizeAllocate(GtkWidget* widget, GtkAllocation* allocation, |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
258 int y = 0; | 250 int y = 0; |
259 gtk_widget_get_pointer(widget, &x, &y); | 251 gtk_widget_get_pointer(widget, &x, &y); |
260 event->x = x; | 252 event->x = x; |
261 event->y = y; | 253 event->y = y; |
262 } | 254 } |
263 host_view->GetRenderWidgetHost()->ForwardMouseEvent( | 255 host_view->GetRenderWidgetHost()->ForwardMouseEvent( |
264 WebInputEventFactory::mouseEvent(event)); | 256 WebInputEventFactory::mouseEvent(event)); |
265 return FALSE; | 257 return FALSE; |
266 } | 258 } |
267 | 259 |
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 | |
276 static gboolean MouseScrollEvent(GtkWidget* widget, GdkEventScroll* event, | 260 static gboolean MouseScrollEvent(GtkWidget* widget, GdkEventScroll* event, |
277 RenderWidgetHostViewGtk* host_view) { | 261 RenderWidgetHostViewGtk* host_view) { |
278 // If the user is holding shift, translate it into a horizontal scroll. We | 262 // If the user is holding shift, translate it into a horizontal scroll. We |
279 // don't care what other modifiers the user may be holding (zooming is | 263 // don't care what other modifiers the user may be holding (zooming is |
280 // handled at the TabContentsView level). | 264 // handled at the TabContentsView level). |
281 if (event->state & GDK_SHIFT_MASK) { | 265 if (event->state & GDK_SHIFT_MASK) { |
282 if (event->direction == GDK_SCROLL_UP) | 266 if (event->direction == GDK_SCROLL_UP) |
283 event->direction = GDK_SCROLL_LEFT; | 267 event->direction = GDK_SCROLL_LEFT; |
284 else if (event->direction == GDK_SCROLL_DOWN) | 268 else if (event->direction == GDK_SCROLL_DOWN) |
285 event->direction = GDK_SCROLL_RIGHT; | 269 event->direction = GDK_SCROLL_RIGHT; |
(...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
664 const NativeWebKeyboardEvent& event) { | 648 const NativeWebKeyboardEvent& event) { |
665 if (!host_) | 649 if (!host_) |
666 return; | 650 return; |
667 | 651 |
668 EditCommands edit_commands; | 652 EditCommands edit_commands; |
669 if (key_bindings_handler_->Match(event, &edit_commands)) { | 653 if (key_bindings_handler_->Match(event, &edit_commands)) { |
670 host_->ForwardEditCommandsForNextKeyEvent(edit_commands); | 654 host_->ForwardEditCommandsForNextKeyEvent(edit_commands); |
671 } | 655 } |
672 host_->ForwardKeyboardEvent(event); | 656 host_->ForwardKeyboardEvent(event); |
673 } | 657 } |
OLD | NEW |