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 "webkit/tools/test_shell/webwidget_host.h" | 5 #include "webkit/tools/test_shell/webwidget_host.h" |
6 | 6 |
7 #include <cairo/cairo.h> | 7 #include <cairo/cairo.h> |
8 #include <gtk/gtk.h> | 8 #include <gtk/gtk.h> |
9 | 9 |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
42 WebWidgetHost* host) { | 42 WebWidgetHost* host) { |
43 // See comments above about what handling_expose is for. | 43 // See comments above about what handling_expose is for. |
44 handling_expose = true; | 44 handling_expose = true; |
45 gfx::Rect rect(expose->area); | 45 gfx::Rect rect(expose->area); |
46 host->UpdatePaintRect(rect); | 46 host->UpdatePaintRect(rect); |
47 host->Paint(); | 47 host->Paint(); |
48 handling_expose = false; | 48 handling_expose = false; |
49 return FALSE; | 49 return FALSE; |
50 } | 50 } |
51 | 51 |
52 gboolean DestroyEvent(GtkWidget* widget, GdkEvent* event, | 52 gboolean WindowDestroyed(GtkWidget* widget, WebWidgetHost* host) { |
53 WebWidgetHost* host) { | |
54 host->WindowDestroyed(); | 53 host->WindowDestroyed(); |
55 return FALSE; | 54 return FALSE; |
56 } | 55 } |
57 | 56 |
58 gboolean KeyPressReleaseEvent(GtkWidget* widget, GdkEventKey* event, | 57 gboolean KeyPressReleaseEvent(GtkWidget* widget, GdkEventKey* event, |
59 WebWidgetHost* host) { | 58 WebWidgetHost* host) { |
60 WebKeyboardEvent wke(event); | 59 WebKeyboardEvent wke(event); |
61 host->webwidget()->HandleInputEvent(&wke); | 60 host->webwidget()->HandleInputEvent(&wke); |
62 | 61 |
63 // The WebKeyboardEvent model, when holding down a key, is: | 62 // The WebKeyboardEvent model, when holding down a key, is: |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
126 | 125 |
127 gtk_widget_add_events(widget, GDK_EXPOSURE_MASK | | 126 gtk_widget_add_events(widget, GDK_EXPOSURE_MASK | |
128 GDK_POINTER_MOTION_MASK | | 127 GDK_POINTER_MOTION_MASK | |
129 GDK_BUTTON_PRESS_MASK | | 128 GDK_BUTTON_PRESS_MASK | |
130 GDK_BUTTON_RELEASE_MASK | | 129 GDK_BUTTON_RELEASE_MASK | |
131 GDK_KEY_PRESS_MASK | | 130 GDK_KEY_PRESS_MASK | |
132 GDK_KEY_RELEASE_MASK); | 131 GDK_KEY_RELEASE_MASK); |
133 GTK_WIDGET_SET_FLAGS(widget, GTK_CAN_FOCUS); | 132 GTK_WIDGET_SET_FLAGS(widget, GTK_CAN_FOCUS); |
134 g_signal_connect(widget, "configure-event", G_CALLBACK(ConfigureEvent), host); | 133 g_signal_connect(widget, "configure-event", G_CALLBACK(ConfigureEvent), host); |
135 g_signal_connect(widget, "expose-event", G_CALLBACK(ExposeEvent), host); | 134 g_signal_connect(widget, "expose-event", G_CALLBACK(ExposeEvent), host); |
136 g_signal_connect(widget, "destroy-event", G_CALLBACK(DestroyEvent), host); | 135 g_signal_connect(widget, "destroy", G_CALLBACK(::WindowDestroyed), host); |
137 g_signal_connect(widget, "key-press-event", G_CALLBACK(KeyPressReleaseEvent), | 136 g_signal_connect(widget, "key-press-event", G_CALLBACK(KeyPressReleaseEvent), |
138 host); | 137 host); |
139 g_signal_connect(widget, "key-release-event", | 138 g_signal_connect(widget, "key-release-event", |
140 G_CALLBACK(KeyPressReleaseEvent), host); | 139 G_CALLBACK(KeyPressReleaseEvent), host); |
141 g_signal_connect(widget, "focus", G_CALLBACK(FocusMove), host); | 140 g_signal_connect(widget, "focus", G_CALLBACK(FocusMove), host); |
142 g_signal_connect(widget, "focus-in-event", G_CALLBACK(FocusIn), host); | 141 g_signal_connect(widget, "focus-in-event", G_CALLBACK(FocusIn), host); |
143 g_signal_connect(widget, "focus-out-event", G_CALLBACK(FocusOut), host); | 142 g_signal_connect(widget, "focus-out-event", G_CALLBACK(FocusOut), host); |
144 g_signal_connect(widget, "button-press-event", | 143 g_signal_connect(widget, "button-press-event", |
145 G_CALLBACK(ButtonPressReleaseEvent), host); | 144 G_CALLBACK(ButtonPressReleaseEvent), host); |
146 g_signal_connect(widget, "button-release-event", | 145 g_signal_connect(widget, "button-release-event", |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
278 // This method is only needed for optimized scroll painting, which we don't | 277 // This method is only needed for optimized scroll painting, which we don't |
279 // care about in the test shell, yet. | 278 // care about in the test shell, yet. |
280 } | 279 } |
281 | 280 |
282 void WebWidgetHost::PaintRect(const gfx::Rect& rect) { | 281 void WebWidgetHost::PaintRect(const gfx::Rect& rect) { |
283 set_painting(true); | 282 set_painting(true); |
284 webwidget_->Paint(canvas_.get(), rect); | 283 webwidget_->Paint(canvas_.get(), rect); |
285 set_painting(false); | 284 set_painting(false); |
286 } | 285 } |
287 | 286 |
288 // ----------------------------------------------------------------------------- | |
289 // This is called when the GTK window is destroyed. In the Windows code this | |
290 // deletes this object. Since it's only test_shell it probably doesn't matter | |
291 // that much. | |
292 // ----------------------------------------------------------------------------- | |
293 void WebWidgetHost::WindowDestroyed() { | 287 void WebWidgetHost::WindowDestroyed() { |
294 delete this; | 288 delete this; |
295 } | 289 } |
OLD | NEW |