[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc
mrobinson at webkit.org
mrobinson at webkit.org
Wed Dec 22 12:29:19 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit 2227d9e366f827345ea2971d5378f9db6bcd274e
Author: mrobinson at webkit.org <mrobinson at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Tue Aug 24 18:08:15 2010 +0000
2010-08-24 Martin Robinson <mrobinson at igalia.com>
Reviewed by Xan Lopez.
[GTK] GTK3: EventSender and API tests should use gdk_event_new when synthesizing events
https://bugs.webkit.org/show_bug.cgi?id=44534
* tests/testcopyandpaste.c:
(runPasteTestCallback): Switch to using gdk_event_new and also reference the GdkWindow.
when setting it on the event. It is dereferenced by gdk_event_free(...).
* tests/testhittestresult.c:
(load_status_cb): Switch to using gdk_event_new.
2010-08-24 Martin Robinson <mrobinson at igalia.com>
Reviewed by Xan Lopez.
[GTK] GTK3: EventSender and API tests should use gdk_event_new when synthesizing events
https://bugs.webkit.org/show_bug.cgi?id=44534
* DumpRenderTree/gtk/EventSender.cpp:
(prepareMouseButtonEvent): Use gdk_event_new and reference the reference the GdkWindow
when setting it on the event. It is dereferenced by gdk_event_free(...).
(contextClickCallback): Ditto.
(mouseDownCallback): Ditto.
(mouseUpCallback): Ditto.
(mouseMoveToCallback): Ditto.
(mouseWheelToCallback): Ditto.
(sendOrQueueEvent): Take a GdkEvent* instead of a GdkEvent.
(dispatchEvent): Ditto. Also free the event when we are done with it.
(keyDownCallback): Use gdk_event_new and reference the GdkWindow.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@65915 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebKit/gtk/ChangeLog b/WebKit/gtk/ChangeLog
index ec0801c..6621fe5 100644
--- a/WebKit/gtk/ChangeLog
+++ b/WebKit/gtk/ChangeLog
@@ -1,3 +1,16 @@
+2010-08-24 Martin Robinson <mrobinson at igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] GTK3: EventSender and API tests should use gdk_event_new when synthesizing events
+ https://bugs.webkit.org/show_bug.cgi?id=44534
+
+ * tests/testcopyandpaste.c:
+ (runPasteTestCallback): Switch to using gdk_event_new and also reference the GdkWindow.
+ when setting it on the event. It is dereferenced by gdk_event_free(...).
+ * tests/testhittestresult.c:
+ (load_status_cb): Switch to using gdk_event_new.
+
2010-08-24 Gustavo Noronha Silva <gustavo.noronha at collabora.co.uk>
Rubber-stamped by Xan Lopez.
diff --git a/WebKit/gtk/tests/testcopyandpaste.c b/WebKit/gtk/tests/testcopyandpaste.c
index 0ef91d1..f3b1783 100644
--- a/WebKit/gtk/tests/testcopyandpaste.c
+++ b/WebKit/gtk/tests/testcopyandpaste.c
@@ -128,21 +128,22 @@ static CopyAndPasteFixture* currentFixture;
static JSValueRef runPasteTestCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
// Simulate a paste keyboard sequence.
- GdkEvent event;
- memset(&event, 0, sizeof(event));
- event.key.keyval = gdk_unicode_to_keyval('v');
- event.key.state = GDK_CONTROL_MASK;
- event.key.window = gtk_widget_get_window(GTK_WIDGET(currentFixture->webView));
+ GdkEvent* event = gdk_event_new(GDK_KEY_PRESS);
+ event->key.keyval = gdk_unicode_to_keyval('v');
+ event->key.state = GDK_CONTROL_MASK;
+ event->key.window = gtk_widget_get_window(GTK_WIDGET(currentFixture->webView));
+ g_object_ref(event->key.window);
GdkKeymapKey* keys;
gint n_keys;
- if (gdk_keymap_get_entries_for_keyval(gdk_keymap_get_default(), event.key.keyval, &keys, &n_keys)) {
- event.key.hardware_keycode = keys[0].keycode;
+ if (gdk_keymap_get_entries_for_keyval(gdk_keymap_get_default(), event->key.keyval, &keys, &n_keys)) {
+ event->key.hardware_keycode = keys[0].keycode;
g_free(keys);
}
- event.key.type = GDK_KEY_PRESS;
- gtk_main_do_event(&event);
- event.key.type = GDK_KEY_RELEASE;
- gtk_main_do_event(&event);
+
+ gtk_main_do_event(event);
+ event->key.type = GDK_KEY_RELEASE;
+ gtk_main_do_event(event);
+ gdk_event_free(event);
JSStringRef scriptString = JSStringCreateWithUTF8CString("document.body.innerHTML;");
JSValueRef value = JSEvaluateScript(context, scriptString, 0, 0, 0, 0);
diff --git a/WebKit/gtk/tests/testhittestresult.c b/WebKit/gtk/tests/testhittestresult.c
index 89fe95c..0d7fb05 100644
--- a/WebKit/gtk/tests/testhittestresult.c
+++ b/WebKit/gtk/tests/testhittestresult.c
@@ -81,15 +81,15 @@ load_status_cb(WebKitWebView* webView,
if (status == WEBKIT_LOAD_FINISHED) {
WebKitHitTestResult* result;
guint context;
- GdkEventButton event;
+ GdkEvent* event = gdk_event_new(GDK_BUTTON_PRESS);
WebKitDOMNode* node;
- event.type = GDK_BUTTON_PRESS;
/* Close enough to 0,0 */
- event.x = 5;
- event.y = 5;
+ event->button.x = 5;
+ event->button.y = 5;
- result = webkit_web_view_get_hit_test_result(webView, &event);
+ result = webkit_web_view_get_hit_test_result(webView, (GdkEventButton*) event);
+ gdk_event_free(event);
g_assert(result);
g_object_get(result, "context", &context, NULL);
diff --git a/WebKitTools/ChangeLog b/WebKitTools/ChangeLog
index 166194b..5cd3b89 100644
--- a/WebKitTools/ChangeLog
+++ b/WebKitTools/ChangeLog
@@ -1,3 +1,22 @@
+2010-08-24 Martin Robinson <mrobinson at igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] GTK3: EventSender and API tests should use gdk_event_new when synthesizing events
+ https://bugs.webkit.org/show_bug.cgi?id=44534
+
+ * DumpRenderTree/gtk/EventSender.cpp:
+ (prepareMouseButtonEvent): Use gdk_event_new and reference the reference the GdkWindow
+ when setting it on the event. It is dereferenced by gdk_event_free(...).
+ (contextClickCallback): Ditto.
+ (mouseDownCallback): Ditto.
+ (mouseUpCallback): Ditto.
+ (mouseMoveToCallback): Ditto.
+ (mouseWheelToCallback): Ditto.
+ (sendOrQueueEvent): Take a GdkEvent* instead of a GdkEvent.
+ (dispatchEvent): Ditto. Also free the event when we are done with it.
+ (keyDownCallback): Use gdk_event_new and reference the GdkWindow.
+
2010-08-24 Andras Becsi <abecsi at webkit.org>
[Qt] WebKit2 build fix.
diff --git a/WebKitTools/DumpRenderTree/gtk/EventSender.cpp b/WebKitTools/DumpRenderTree/gtk/EventSender.cpp
index 546d8ce..399a6cc 100644
--- a/WebKitTools/DumpRenderTree/gtk/EventSender.cpp
+++ b/WebKitTools/DumpRenderTree/gtk/EventSender.cpp
@@ -63,7 +63,7 @@ static int clickCount;
GdkDragContext* currentDragSourceContext;
struct DelayedMessage {
- GdkEvent event;
+ GdkEvent* event;
gulong delay;
};
@@ -82,8 +82,8 @@ enum KeyLocationCode {
DOM_KEY_LOCATION_NUMPAD = 0x03
};
-static void sendOrQueueEvent(GdkEvent, bool = true);
-static void dispatchEvent(GdkEvent event);
+static void sendOrQueueEvent(GdkEvent*, bool = true);
+static void dispatchEvent(GdkEvent* event);
static guint getStateFlags();
#if !GTK_CHECK_VERSION(2, 17, 3)
@@ -152,15 +152,15 @@ bool prepareMouseButtonEvent(GdkEvent* event, int eventSenderButtonNumber)
gdkButtonNumber = eventSenderButtonNumber + 1;
// fast/events/mouse-click-events expects the 4th button
- // to be event.button = 1, so send a middle-button event.
+ // to be event->button = 1, so send a middle-button event.
else if (eventSenderButtonNumber == 3)
gdkButtonNumber = 2;
- memset(event, 0, sizeof(event));
event->button.button = gdkButtonNumber;
event->button.x = lastMousePositionX;
event->button.y = lastMousePositionY;
event->button.window = gtk_widget_get_window(GTK_WIDGET(view));
+ g_object_ref(event->button.window);
event->button.device = gdk_device_get_core_pointer();
event->button.state = getStateFlags();
event->button.time = GDK_CURRENT_TIME;
@@ -176,13 +176,12 @@ bool prepareMouseButtonEvent(GdkEvent* event, int eventSenderButtonNumber)
static JSValueRef contextClickCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
- GdkEvent event;
- if (!prepareMouseButtonEvent(&event, 2))
+ GdkEvent* event = gdk_event_new(GDK_BUTTON_PRESS);
+ if (!prepareMouseButtonEvent(event, 2))
return JSValueMakeUndefined(context);
- event.type = GDK_BUTTON_PRESS;
sendOrQueueEvent(event);
- event.type = GDK_BUTTON_RELEASE;
+ event->type = GDK_BUTTON_RELEASE;
sendOrQueueEvent(event);
return JSValueMakeUndefined(context);
@@ -207,11 +206,11 @@ static JSValueRef mouseDownCallback(JSContextRef context, JSObjectRef function,
g_return_val_if_fail((!exception || !*exception), JSValueMakeUndefined(context));
}
- GdkEvent event;
- if (!prepareMouseButtonEvent(&event, button))
+ GdkEvent* event = gdk_event_new(GDK_BUTTON_PRESS);
+ if (!prepareMouseButtonEvent(event, button))
return JSValueMakeUndefined(context);
- buttonCurrentlyDown = event.button.button;
+ buttonCurrentlyDown = event->button.button;
// Normally GDK will send both GDK_BUTTON_PRESS and GDK_2BUTTON_PRESS for
// the second button press during double-clicks. WebKit GTK+ selectively
@@ -221,13 +220,11 @@ static JSValueRef mouseDownCallback(JSContextRef context, JSObjectRef function,
// it here. Eventually this code should probably figure out a way to get all
// appropriate events onto the event queue and this work-around should be
// removed.
- updateClickCount(event.button.button);
+ updateClickCount(event->button.button);
if (clickCount == 2)
- event.type = GDK_2BUTTON_PRESS;
+ event->type = GDK_2BUTTON_PRESS;
else if (clickCount == 3)
- event.type = GDK_3BUTTON_PRESS;
- else
- event.type = GDK_BUTTON_PRESS;
+ event->type = GDK_3BUTTON_PRESS;
sendOrQueueEvent(event);
return JSValueMakeUndefined(context);
@@ -252,8 +249,8 @@ static JSValueRef mouseUpCallback(JSContextRef context, JSObjectRef function, JS
g_return_val_if_fail((!exception || !*exception), JSValueMakeUndefined(context));
}
- GdkEvent event;
- if (!prepareMouseButtonEvent(&event, button))
+ GdkEvent* event = gdk_event_new(GDK_BUTTON_RELEASE);
+ if (!prepareMouseButtonEvent(event, button))
return JSValueMakeUndefined(context);
lastClickPositionX = lastMousePositionX;
@@ -262,7 +259,6 @@ static JSValueRef mouseUpCallback(JSContextRef context, JSObjectRef function, JS
lastClickTimeOffset = timeOffset;
buttonCurrentlyDown = 0;
- event.type = GDK_BUTTON_RELEASE;
sendOrQueueEvent(event);
return JSValueMakeUndefined(context);
}
@@ -281,22 +277,21 @@ static JSValueRef mouseMoveToCallback(JSContextRef context, JSObjectRef function
lastMousePositionY = (int)JSValueToNumber(context, arguments[1], exception);
g_return_val_if_fail((!exception || !*exception), JSValueMakeUndefined(context));
- GdkEvent event;
- memset(&event, 0, sizeof(event));
- event.type = GDK_MOTION_NOTIFY;
- event.motion.x = lastMousePositionX;
- event.motion.y = lastMousePositionY;
+ GdkEvent* event = gdk_event_new(GDK_MOTION_NOTIFY);
+ event->motion.x = lastMousePositionX;
+ event->motion.y = lastMousePositionY;
- event.motion.time = GDK_CURRENT_TIME;
- event.motion.window = gtk_widget_get_window(GTK_WIDGET(view));
- event.motion.device = gdk_device_get_core_pointer();
- event.motion.state = getStateFlags();
- event.motion.axes = 0;
+ event->motion.time = GDK_CURRENT_TIME;
+ event->motion.window = gtk_widget_get_window(GTK_WIDGET(view));
+ g_object_ref(event->motion.window);
+ event->motion.device = gdk_device_get_core_pointer();
+ event->motion.state = getStateFlags();
+ event->motion.axes = 0;
int xRoot, yRoot;
gdk_window_get_root_coords(gtk_widget_get_window(GTK_WIDGET(view)), lastMousePositionX, lastMousePositionY, &xRoot, &yRoot);
- event.motion.x_root = xRoot;
- event.motion.y_root = yRoot;
+ event->motion.x_root = xRoot;
+ event->motion.y_root = yRoot;
sendOrQueueEvent(event, false);
return JSValueMakeUndefined(context);
@@ -319,21 +314,21 @@ static JSValueRef mouseWheelToCallback(JSContextRef context, JSObjectRef functio
// GTK+ doesn't support multiple direction scrolls in the same event!
g_return_val_if_fail((!vertical || !horizontal), JSValueMakeUndefined(context));
- GdkEvent event;
- event.type = GDK_SCROLL;
- event.scroll.x = lastMousePositionX;
- event.scroll.y = lastMousePositionY;
- event.scroll.time = GDK_CURRENT_TIME;
- event.scroll.window = gtk_widget_get_window(GTK_WIDGET(view));
+ GdkEvent* event = gdk_event_new(GDK_SCROLL);
+ event->scroll.x = lastMousePositionX;
+ event->scroll.y = lastMousePositionY;
+ event->scroll.time = GDK_CURRENT_TIME;
+ event->scroll.window = gtk_widget_get_window(GTK_WIDGET(view));
+ g_object_ref(event->scroll.window);
if (horizontal < 0)
- event.scroll.direction = GDK_SCROLL_LEFT;
+ event->scroll.direction = GDK_SCROLL_LEFT;
else if (horizontal > 0)
- event.scroll.direction = GDK_SCROLL_RIGHT;
+ event->scroll.direction = GDK_SCROLL_RIGHT;
else if (vertical < 0)
- event.scroll.direction = GDK_SCROLL_UP;
+ event->scroll.direction = GDK_SCROLL_UP;
else if (vertical > 0)
- event.scroll.direction = GDK_SCROLL_DOWN;
+ event->scroll.direction = GDK_SCROLL_DOWN;
else
g_assert_not_reached();
@@ -350,7 +345,7 @@ static JSValueRef beginDragWithFilesCallback(JSContextRef context, JSObjectRef f
return JSValueMakeUndefined(context);
}
-static void sendOrQueueEvent(GdkEvent event, bool shouldReplaySavedEvents)
+static void sendOrQueueEvent(GdkEvent* event, bool shouldReplaySavedEvents)
{
// Mouse move events are queued if the previous event was queued or if a
// delay was set up by leapForward().
@@ -366,19 +361,23 @@ static void sendOrQueueEvent(GdkEvent event, bool shouldReplaySavedEvents)
dispatchEvent(event);
}
-static void dispatchEvent(GdkEvent event)
+static void dispatchEvent(GdkEvent* event)
{
webkit_web_frame_layout(mainFrame);
WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
- if (!view)
+ if (!view) {
+ gdk_event_free(event);
return;
+ }
- gtk_main_do_event(&event);
+ gtk_main_do_event(event);
- if (!currentDragSourceContext)
+ if (!currentDragSourceContext) {
+ gdk_event_free(event);
return;
+ }
- if (event.type == GDK_MOTION_NOTIFY) {
+ if (event->type == GDK_MOTION_NOTIFY) {
// WebKit has called gtk_drag_start(), but because the main loop isn't
// running GDK internals don't know that the drag has started yet. Pump
// the main loop a little bit so that GDK is in the correct state.
@@ -389,12 +388,12 @@ static void dispatchEvent(GdkEvent event)
GtkWidget* parentWidget = gtk_widget_get_parent(GTK_WIDGET(view));
GdkWindow* parentWidgetWindow = gtk_widget_get_window(parentWidget);
gdk_drag_motion(currentDragSourceContext, parentWidgetWindow, GDK_DRAG_PROTO_XDND,
- event.motion.x_root, event.motion.y_root,
+ event->motion.x_root, event->motion.y_root,
gdk_drag_context_get_selected_action(currentDragSourceContext),
gdk_drag_context_get_actions(currentDragSourceContext),
GDK_CURRENT_TIME);
- } else if (currentDragSourceContext && event.type == GDK_BUTTON_RELEASE) {
+ } else if (currentDragSourceContext && event->type == GDK_BUTTON_RELEASE) {
// We've released the mouse button, we should just be able to spin the
// event loop here and have GTK+ send the appropriate notifications for
// the end of the drag.
@@ -402,6 +401,7 @@ static void dispatchEvent(GdkEvent event)
gtk_main_iteration();
}
+ gdk_event_free(event);
}
void replaySavedEvents()
@@ -551,25 +551,24 @@ static JSValueRef keyDownCallback(JSContextRef context, JSObjectRef function, JS
return JSValueMakeUndefined(context);
// create and send the event
- GdkEvent event;
- memset(&event, 0, sizeof(event));
- event.key.keyval = gdkKeySym;
- event.key.state = state;
- event.key.window = gtk_widget_get_window(GTK_WIDGET(view));
+ GdkEvent* event = gdk_event_new(GDK_KEY_PRESS);
+ event->key.keyval = gdkKeySym;
+ event->key.state = state;
+ event->key.window = gtk_widget_get_window(GTK_WIDGET(view));
+ g_object_ref(event->key.window);
// When synthesizing an event, an invalid hardware_keycode value
// can cause it to be badly processed by Gtk+.
GdkKeymapKey* keys;
gint n_keys;
if (gdk_keymap_get_entries_for_keyval(gdk_keymap_get_default(), gdkKeySym, &keys, &n_keys)) {
- event.key.hardware_keycode = keys[0].keycode;
+ event->key.hardware_keycode = keys[0].keycode;
g_free(keys);
}
- event.key.type = GDK_KEY_PRESS;
dispatchEvent(event);
- event.key.type = GDK_KEY_RELEASE;
+ event->key.type = GDK_KEY_RELEASE;
dispatchEvent(event);
return JSValueMakeUndefined(context);
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list