Changeset 65922 in webkit


Ignore:
Timestamp:
Aug 24, 2010 12:26:40 PM (14 years ago)
Author:
Martin Robinson
Message:

2010-08-24 Martin Robinson <mrobinson@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@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.
Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebKit/gtk/ChangeLog

    r65915 r65922  
     12010-08-24  Martin Robinson  <mrobinson@igalia.com>
     2
     3        Reviewed by Xan Lopez.
     4
     5        [GTK] GTK3: EventSender and API tests should use gdk_event_new when synthesizing events
     6        https://bugs.webkit.org/show_bug.cgi?id=44534
     7
     8        Fix an issue where a GdkEvent* is treated like a GdkEvent.
     9
     10        * tests/testkeyevents.c:
     11        (key_press_event_cb):
     12        (key_release_event_cb):
     13
    1142010-08-24  Martin Robinson  <mrobinson@igalia.com>
    215
  • trunk/WebKit/gtk/tests/testkeyevents.c

    r56072 r65922  
    8383{
    8484    KeyEventFixture* fixture = (KeyEventFixture*)data;
    85     gboolean handled = GTK_WIDGET_GET_CLASS(fixture->webView)->key_press_event(GTK_WIDGET(fixture->webView), &event->key);
     85    gboolean handled = GTK_WIDGET_GET_CLASS(fixture->webView)->key_press_event(GTK_WIDGET(fixture->webView), event->key);
    8686    g_assert_cmpint(handled, ==, fixture->info->shouldBeHandled);
    8787
     
    9393    // WebCore never seems to mark keyup events as handled.
    9494    KeyEventFixture* fixture = (KeyEventFixture*)data;
    95     gboolean handled = GTK_WIDGET_GET_CLASS(fixture->webView)->key_press_event(GTK_WIDGET(fixture->webView), &event->key);
     95    gboolean handled = GTK_WIDGET_GET_CLASS(fixture->webView)->key_press_event(GTK_WIDGET(fixture->webView), event->key);
    9696    g_assert(!handled);
    9797
  • trunk/WebKitTools/ChangeLog

    r65915 r65922  
     12010-08-24  Martin Robinson  <mrobinson@igalia.com>
     2
     3        Reviewed by Xan Lopez.
     4
     5        [GTK] GTK3: EventSender and API tests should use gdk_event_new when synthesizing events
     6        https://bugs.webkit.org/show_bug.cgi?id=44534
     7
     8        Fix two double-frees introduced in my previous commit.
     9
     10        * DumpRenderTree/gtk/EventSender.cpp:
     11        (contextClickCallback): Copy the event before using it again.
     12        (keyDownCallback): Ditto.
     13
    1142010-08-24  Martin Robinson  <mrobinson@igalia.com>
    215
  • trunk/WebKitTools/DumpRenderTree/gtk/EventSender.cpp

    r65915 r65922  
    177177static JSValueRef contextClickCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
    178178{
    179     GdkEvent* event = gdk_event_new(GDK_BUTTON_PRESS);
    180     if (!prepareMouseButtonEvent(event, 2))
    181         return JSValueMakeUndefined(context);
    182 
    183     sendOrQueueEvent(event);
    184     event->type = GDK_BUTTON_RELEASE;
    185     sendOrQueueEvent(event);
     179    GdkEvent* pressEvent = gdk_event_new(GDK_BUTTON_PRESS);
     180    if (!prepareMouseButtonEvent(pressEvent, 2))
     181        return JSValueMakeUndefined(context);
     182
     183    GdkEvent* releaseEvent = gdk_event_copy(pressEvent);
     184    sendOrQueueEvent(pressEvent);
     185    releaseEvent->type = GDK_BUTTON_RELEASE;
     186    sendOrQueueEvent(releaseEvent);
    186187
    187188    return JSValueMakeUndefined(context);
     
    552553
    553554    // create and send the event
    554     GdkEvent* event = gdk_event_new(GDK_KEY_PRESS);
    555     event->key.keyval = gdkKeySym;
    556     event->key.state = state;
    557     event->key.window = gtk_widget_get_window(GTK_WIDGET(view));
    558     g_object_ref(event->key.window);
     555    GdkEvent* pressEvent = gdk_event_new(GDK_KEY_PRESS);
     556    pressEvent->key.keyval = gdkKeySym;
     557    pressEvent->key.state = state;
     558    pressEvent->key.window = gtk_widget_get_window(GTK_WIDGET(view));
     559    g_object_ref(pressEvent->key.window);
    559560
    560561    // When synthesizing an event, an invalid hardware_keycode value
     
    563564    gint n_keys;
    564565    if (gdk_keymap_get_entries_for_keyval(gdk_keymap_get_default(), gdkKeySym, &keys, &n_keys)) {
    565         event->key.hardware_keycode = keys[0].keycode;
     566        pressEvent->key.hardware_keycode = keys[0].keycode;
    566567        g_free(keys);
    567568    }
    568569
    569     dispatchEvent(event);
    570 
    571     event->key.type = GDK_KEY_RELEASE;
    572     dispatchEvent(event);
     570    GdkEvent* releaseEvent = gdk_event_copy(pressEvent);
     571    dispatchEvent(pressEvent);
     572    releaseEvent->key.type = GDK_KEY_RELEASE;
     573    dispatchEvent(releaseEvent);
    573574
    574575    return JSValueMakeUndefined(context);
Note: See TracChangeset for help on using the changeset viewer.