Changeset 60479 in webkit


Ignore:
Timestamp:
Jun 1, 2010 8:47:08 AM (14 years ago)
Author:
Martin Robinson
Message:

2010-06-01 Martin Robinson <Martin Robinson>

Reviewed by Xan Lopez.

[GTK] Double clicks cause three button press events
https://bugs.webkit.org/show_bug.cgi?id=38853

Small EventSender cleanups. Consolidate some common code. Style fixes.

  • DumpRenderTree/gtk/EventSender.cpp: (prepareMouseButtonEvent): Added. (contextClickCallback): Use prepareMouseButtonEvent. (mouseDownCallback): Use prepareMouseButtonEvent. (mouseUpCallback): Use prepareMouseButtonEvent. (mouseMoveToCallback): Small style fix.
Location:
trunk/WebKitTools
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebKitTools/ChangeLog

    r60478 r60479  
     12010-06-01  Martin Robinson  <mrobinson@webkit.org>
     2
     3        Reviewed by Xan Lopez.
     4
     5        [GTK] Double clicks cause three button press events
     6        https://bugs.webkit.org/show_bug.cgi?id=38853
     7
     8        Small EventSender cleanups. Consolidate some common code. Style fixes.
     9
     10        * DumpRenderTree/gtk/EventSender.cpp:
     11        (prepareMouseButtonEvent): Added.
     12        (contextClickCallback): Use prepareMouseButtonEvent.
     13        (mouseDownCallback): Use prepareMouseButtonEvent.
     14        (mouseUpCallback): Use prepareMouseButtonEvent.
     15        (mouseMoveToCallback): Small style fix.
     16
    1172010-06-01  Martin Robinson  <mrobinson@igalia.com>
    218
  • trunk/WebKitTools/DumpRenderTree/gtk/EventSender.cpp

    r60478 r60479  
    110110}
    111111
    112 static JSValueRef contextClickCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
     112bool prepareMouseButtonEvent(GdkEvent* event, int button)
    113113{
    114114    WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
    115115    if (!view)
    116         return JSValueMakeUndefined(context);
    117 
     116        return false;
     117
     118    memset(event, 0, sizeof(event));
     119    event->button.button = button;
     120    event->button.x = lastMousePositionX;
     121    event->button.y = lastMousePositionY;
     122    event->button.window = GTK_WIDGET(view)->window;
     123    event->button.device = gdk_device_get_core_pointer();
     124    event->button.state = getStateFlags();
     125
     126    // Mouse up & down events dispatched via g_signal_emit_by_name must offset
     127    // their time value, so that WebKit can detect where sequences of mouse
     128    // clicks begin and end. This should not interfere with GDK or GTK+ event
     129    // processing, because the event is only seen by the widget.
     130    event.button.time = GDK_CURRENT_TIME + timeOffset;
     131
     132    int xRoot, yRoot;
     133#if GTK_CHECK_VERSION(2, 17, 3)
     134    gdk_window_get_root_coords(GTK_WIDGET(view)->window, lastMousePositionX, lastMousePositionY, &xRoot, &yRoot);
     135#else
     136    getRootCoords(GTK_WIDGET(view), &xRoot, &yRoot);
     137#endif
     138    event->button.x_root = xRoot;
     139    event->button.y_root = yRoot;
     140
     141    return true;
     142}
     143
     144static JSValueRef contextClickCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
     145{
    118146    GdkEvent event;
    119     memset(&event, 0, sizeof(event));
    120     event.button.button = 3;
    121     event.button.x = lastMousePositionX;
    122     event.button.y = lastMousePositionY;
    123     event.button.window = GTK_WIDGET(view)->window;
     147    if (!prepareMouseButtonEvent(&event, 3))
     148        return JSValueMakeUndefined(context);
    124149
    125150    event.type = GDK_BUTTON_PRESS;
     
    159184static JSValueRef mouseDownCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
    160185{
    161     WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
    162     if (!view)
    163         return JSValueMakeUndefined(context);
     186    int button = 1;
     187    if (argumentCount == 1) {
     188        button = static_cast<int>(JSValueToNumber(context, arguments[0], exception)) + 1;
     189        g_return_val_if_fail((!exception || !*exception), JSValueMakeUndefined(context));
     190    }
    164191
    165192    GdkEvent event;
    166     memset(&event, 0, sizeof(event));
    167     event.button.button = 1;
    168 
    169     if (argumentCount == 1) {
    170         event.button.button = (int)(JSValueToNumber(context, arguments[0], exception)) + 1;
    171         g_return_val_if_fail((!exception || !*exception), JSValueMakeUndefined(context));
    172     }
    173 
    174     event.button.x = lastMousePositionX;
    175     event.button.y = lastMousePositionY;
    176     event.button.window = GTK_WIDGET(view)->window;
    177 
    178     // Mouse up & down events dispatched via g_signal_emit_by_name must offset
    179     // their time value, so that WebKit can detect where sequences of mouse
    180     // clicks begin and end. This should not interfere with GDK or GTK+ event
    181     // processing, because the event is only seen by the widget.
    182     event.motion.time = GDK_CURRENT_TIME + timeOffset;
    183     event.button.device = gdk_device_get_core_pointer();
    184 
    185     int x_root, y_root;
    186 #if GTK_CHECK_VERSION(2,17,3)
    187     gdk_window_get_root_coords(GTK_WIDGET(view)->window, lastMousePositionX, lastMousePositionY, &x_root, &y_root);
    188 #else
    189     getRootCoords(GTK_WIDGET(view), &x_root, &y_root);
    190 #endif
    191     event.button.x_root = x_root;
    192     event.button.y_root = y_root;
     193    if (!prepareMouseButtonEvent(&event, button))
     194        return JSValueMakeUndefined(context);
    193195
    194196    event.type = GDK_BUTTON_PRESS;
     
    218220static JSValueRef mouseUpCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
    219221{
    220 
    221     WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
    222     if (!view)
    223         return JSValueMakeUndefined(context);
     222    int button = 1;
     223    if (argumentCount == 1) {
     224        button = static_cast<int>(JSValueToNumber(context, arguments[0], exception)) + 1;
     225        g_return_val_if_fail((!exception || !*exception), JSValueMakeUndefined(context));
     226    }
    224227
    225228    GdkEvent event;
    226     memset(&event, 0, sizeof(event));
    227     event.button.button = 1;
    228 
    229     if (argumentCount == 1) {
    230         event.button.button = (int)JSValueToNumber(context, arguments[0], exception) + 1;
    231         g_return_val_if_fail((!exception || !*exception), JSValueMakeUndefined(context));
    232     }
    233 
    234     event.button.x = lastMousePositionX;
    235     event.button.y = lastMousePositionY;
    236     event.button.window = GTK_WIDGET(view)->window;
    237 
    238     // Mouse up & down events dispatched via g_signal_emit_by_name must offset
    239     // their time value, so that WebKit can detect where sequences of mouse
    240     // clicks begin and end. This should not interfere with GDK or GTK+ event
    241     // processing, because the event is only seen by the widget.
    242     event.button.time = GDK_CURRENT_TIME + timeOffset;
    243     event.button.device = gdk_device_get_core_pointer();
    244     event.button.state = getStateFlags();
    245 
    246     int x_root, y_root;
    247 #if GTK_CHECK_VERSION(2,17,3)
    248     gdk_window_get_root_coords(GTK_WIDGET(view)->window, lastMousePositionX, lastMousePositionY, &x_root, &y_root);
    249 #else
    250     getRootCoords(GTK_WIDGET(view), &x_root, &y_root);
    251 #endif
    252 
    253     event.button.x_root = x_root;
    254     event.button.y_root = y_root;
     229    if (!prepareMouseButtonEvent(&event, button))
     230        return JSValueMakeUndefined(context);
    255231
    256232    lastClickPositionX = lastMousePositionX;
     
    288264    event.motion.window = GTK_WIDGET(view)->window;
    289265    event.motion.device = gdk_device_get_core_pointer();
    290 
    291     int x_root, y_root;
     266    event.motion.state = getStateFlags();
     267
     268    int xRoot, yRoot;
    292269#if GTK_CHECK_VERSION(2,17,3)
    293     gdk_window_get_root_coords(GTK_WIDGET(view)->window, lastMousePositionX, lastMousePositionY, &x_root, &y_root);
     270    gdk_window_get_root_coords(GTK_WIDGET(view)->window, lastMousePositionX, lastMousePositionY, &xRoot, &yRoot);
    294271#else
    295     getRootCoords(GTK_WIDGET(view), &x_root, &y_root);
     272    getRootCoords(GTK_WIDGET(view), &xRoot, &yRoot);
    296273#endif
    297     event.motion.x_root = x_root;
    298     event.motion.y_root = y_root;
    299 
    300     event.motion.state = getStateFlags();
     274    event.motion.x_root = xRoot;
     275    event.motion.y_root = yRoot;
    301276
    302277    sendOrQueueEvent(event);
Note: See TracChangeset for help on using the changeset viewer.