[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:33 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit afebf269bae9941c3a9578798b902c92b7e26a99
Author: mrobinson at webkit.org <mrobinson at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Tue Aug 24 19:26:40 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
Fix an issue where a GdkEvent* is treated like a GdkEvent.
* tests/testkeyevents.c:
(key_press_event_cb):
(key_release_event_cb):
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
Fix two double-frees introduced in my previous commit.
* DumpRenderTree/gtk/EventSender.cpp:
(contextClickCallback): Copy the event before using it again.
(keyDownCallback): Ditto.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@65922 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebKit/gtk/ChangeLog b/WebKit/gtk/ChangeLog
index 6621fe5..50c4dab 100644
--- a/WebKit/gtk/ChangeLog
+++ b/WebKit/gtk/ChangeLog
@@ -5,6 +5,19 @@
[GTK] GTK3: EventSender and API tests should use gdk_event_new when synthesizing events
https://bugs.webkit.org/show_bug.cgi?id=44534
+ Fix an issue where a GdkEvent* is treated like a GdkEvent.
+
+ * tests/testkeyevents.c:
+ (key_press_event_cb):
+ (key_release_event_cb):
+
+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(...).
diff --git a/WebKit/gtk/tests/testkeyevents.c b/WebKit/gtk/tests/testkeyevents.c
index b41a032..089d56c 100644
--- a/WebKit/gtk/tests/testkeyevents.c
+++ b/WebKit/gtk/tests/testkeyevents.c
@@ -82,7 +82,7 @@ static void key_event_fixture_teardown(KeyEventFixture* fixture, gconstpointer d
static gboolean key_press_event_cb(WebKitWebView* webView, GdkEvent* event, gpointer data)
{
KeyEventFixture* fixture = (KeyEventFixture*)data;
- gboolean handled = GTK_WIDGET_GET_CLASS(fixture->webView)->key_press_event(GTK_WIDGET(fixture->webView), &event->key);
+ gboolean handled = GTK_WIDGET_GET_CLASS(fixture->webView)->key_press_event(GTK_WIDGET(fixture->webView), event->key);
g_assert_cmpint(handled, ==, fixture->info->shouldBeHandled);
return FALSE;
@@ -92,7 +92,7 @@ static gboolean key_release_event_cb(WebKitWebView* webView, GdkEvent* event, gp
{
// WebCore never seems to mark keyup events as handled.
KeyEventFixture* fixture = (KeyEventFixture*)data;
- gboolean handled = GTK_WIDGET_GET_CLASS(fixture->webView)->key_press_event(GTK_WIDGET(fixture->webView), &event->key);
+ gboolean handled = GTK_WIDGET_GET_CLASS(fixture->webView)->key_press_event(GTK_WIDGET(fixture->webView), event->key);
g_assert(!handled);
g_main_loop_quit(fixture->loop);
diff --git a/WebKitTools/ChangeLog b/WebKitTools/ChangeLog
index 5cd3b89..af8b3c8 100644
--- a/WebKitTools/ChangeLog
+++ b/WebKitTools/ChangeLog
@@ -5,6 +5,19 @@
[GTK] GTK3: EventSender and API tests should use gdk_event_new when synthesizing events
https://bugs.webkit.org/show_bug.cgi?id=44534
+ Fix two double-frees introduced in my previous commit.
+
+ * DumpRenderTree/gtk/EventSender.cpp:
+ (contextClickCallback): Copy the event before using it again.
+ (keyDownCallback): Ditto.
+
+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(...).
diff --git a/WebKitTools/DumpRenderTree/gtk/EventSender.cpp b/WebKitTools/DumpRenderTree/gtk/EventSender.cpp
index 399a6cc..81ccede 100644
--- a/WebKitTools/DumpRenderTree/gtk/EventSender.cpp
+++ b/WebKitTools/DumpRenderTree/gtk/EventSender.cpp
@@ -176,13 +176,14 @@ 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 = gdk_event_new(GDK_BUTTON_PRESS);
- if (!prepareMouseButtonEvent(event, 2))
+ GdkEvent* pressEvent = gdk_event_new(GDK_BUTTON_PRESS);
+ if (!prepareMouseButtonEvent(pressEvent, 2))
return JSValueMakeUndefined(context);
- sendOrQueueEvent(event);
- event->type = GDK_BUTTON_RELEASE;
- sendOrQueueEvent(event);
+ GdkEvent* releaseEvent = gdk_event_copy(pressEvent);
+ sendOrQueueEvent(pressEvent);
+ releaseEvent->type = GDK_BUTTON_RELEASE;
+ sendOrQueueEvent(releaseEvent);
return JSValueMakeUndefined(context);
}
@@ -551,25 +552,25 @@ static JSValueRef keyDownCallback(JSContextRef context, JSObjectRef function, JS
return JSValueMakeUndefined(context);
// create and send the event
- 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);
+ GdkEvent* pressEvent = gdk_event_new(GDK_KEY_PRESS);
+ pressEvent->key.keyval = gdkKeySym;
+ pressEvent->key.state = state;
+ pressEvent->key.window = gtk_widget_get_window(GTK_WIDGET(view));
+ g_object_ref(pressEvent->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;
+ pressEvent->key.hardware_keycode = keys[0].keycode;
g_free(keys);
}
- dispatchEvent(event);
-
- event->key.type = GDK_KEY_RELEASE;
- dispatchEvent(event);
+ GdkEvent* releaseEvent = gdk_event_copy(pressEvent);
+ dispatchEvent(pressEvent);
+ releaseEvent->key.type = GDK_KEY_RELEASE;
+ dispatchEvent(releaseEvent);
return JSValueMakeUndefined(context);
}
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list