Changeset 65915 in webkit
- Timestamp:
- Aug 24, 2010 11:08:15 AM (14 years ago)
- Location:
- trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebKit/gtk/ChangeLog
r65899 r65915 1 2010-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 * tests/testcopyandpaste.c: 9 (runPasteTestCallback): Switch to using gdk_event_new and also reference the GdkWindow. 10 when setting it on the event. It is dereferenced by gdk_event_free(...). 11 * tests/testhittestresult.c: 12 (load_status_cb): Switch to using gdk_event_new. 13 1 14 2010-08-24 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> 2 15 -
trunk/WebKit/gtk/tests/testcopyandpaste.c
r62002 r65915 129 129 { 130 130 // Simulate a paste keyboard sequence. 131 GdkEvent event;132 memset(&event, 0, sizeof(event));133 event .key.keyval = gdk_unicode_to_keyval('v');134 event .key.state = GDK_CONTROL_MASK;135 event.key.window = gtk_widget_get_window(GTK_WIDGET(currentFixture->webView));131 GdkEvent* event = gdk_event_new(GDK_KEY_PRESS); 132 event->key.keyval = gdk_unicode_to_keyval('v'); 133 event->key.state = GDK_CONTROL_MASK; 134 event->key.window = gtk_widget_get_window(GTK_WIDGET(currentFixture->webView)); 135 g_object_ref(event->key.window); 136 136 GdkKeymapKey* keys; 137 137 gint n_keys; 138 if (gdk_keymap_get_entries_for_keyval(gdk_keymap_get_default(), event .key.keyval, &keys, &n_keys)) {139 event .key.hardware_keycode = keys[0].keycode;138 if (gdk_keymap_get_entries_for_keyval(gdk_keymap_get_default(), event->key.keyval, &keys, &n_keys)) { 139 event->key.hardware_keycode = keys[0].keycode; 140 140 g_free(keys); 141 141 } 142 event.key.type = GDK_KEY_PRESS; 143 gtk_main_do_event(&event); 144 event.key.type = GDK_KEY_RELEASE; 145 gtk_main_do_event(&event); 142 143 gtk_main_do_event(event); 144 event->key.type = GDK_KEY_RELEASE; 145 gtk_main_do_event(event); 146 gdk_event_free(event); 146 147 147 148 JSStringRef scriptString = JSStringCreateWithUTF8CString("document.body.innerHTML;"); -
trunk/WebKit/gtk/tests/testhittestresult.c
r60834 r65915 82 82 WebKitHitTestResult* result; 83 83 guint context; 84 GdkEvent Button event;84 GdkEvent* event = gdk_event_new(GDK_BUTTON_PRESS); 85 85 WebKitDOMNode* node; 86 86 87 event.type = GDK_BUTTON_PRESS;88 87 /* Close enough to 0,0 */ 89 event .x = 5;90 event .y = 5;88 event->button.x = 5; 89 event->button.y = 5; 91 90 92 result = webkit_web_view_get_hit_test_result(webView, &event); 91 result = webkit_web_view_get_hit_test_result(webView, (GdkEventButton*) event); 92 gdk_event_free(event); 93 93 g_assert(result); 94 94 -
trunk/WebKitTools/ChangeLog
r65883 r65915 1 2010-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 * DumpRenderTree/gtk/EventSender.cpp: 9 (prepareMouseButtonEvent): Use gdk_event_new and reference the reference the GdkWindow 10 when setting it on the event. It is dereferenced by gdk_event_free(...). 11 (contextClickCallback): Ditto. 12 (mouseDownCallback): Ditto. 13 (mouseUpCallback): Ditto. 14 (mouseMoveToCallback): Ditto. 15 (mouseWheelToCallback): Ditto. 16 (sendOrQueueEvent): Take a GdkEvent* instead of a GdkEvent. 17 (dispatchEvent): Ditto. Also free the event when we are done with it. 18 (keyDownCallback): Use gdk_event_new and reference the GdkWindow. 19 1 20 2010-08-24 Andras Becsi <abecsi@webkit.org> 2 21 -
trunk/WebKitTools/DumpRenderTree/gtk/EventSender.cpp
r65841 r65915 64 64 65 65 struct DelayedMessage { 66 GdkEvent event;66 GdkEvent* event; 67 67 gulong delay; 68 68 }; … … 83 83 }; 84 84 85 static void sendOrQueueEvent(GdkEvent , bool = true);86 static void dispatchEvent(GdkEvent event);85 static void sendOrQueueEvent(GdkEvent*, bool = true); 86 static void dispatchEvent(GdkEvent* event); 87 87 static guint getStateFlags(); 88 88 … … 153 153 154 154 // fast/events/mouse-click-events expects the 4th button 155 // to be event .button = 1, so send a middle-button event.155 // to be event->button = 1, so send a middle-button event. 156 156 else if (eventSenderButtonNumber == 3) 157 157 gdkButtonNumber = 2; 158 158 159 memset(event, 0, sizeof(event));160 159 event->button.button = gdkButtonNumber; 161 160 event->button.x = lastMousePositionX; 162 161 event->button.y = lastMousePositionY; 163 162 event->button.window = gtk_widget_get_window(GTK_WIDGET(view)); 163 g_object_ref(event->button.window); 164 164 event->button.device = gdk_device_get_core_pointer(); 165 165 event->button.state = getStateFlags(); … … 177 177 static JSValueRef contextClickCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) 178 178 { 179 GdkEvent event; 180 if (!prepareMouseButtonEvent(&event, 2)) 181 return JSValueMakeUndefined(context); 182 183 event.type = GDK_BUTTON_PRESS; 179 GdkEvent* event = gdk_event_new(GDK_BUTTON_PRESS); 180 if (!prepareMouseButtonEvent(event, 2)) 181 return JSValueMakeUndefined(context); 182 184 183 sendOrQueueEvent(event); 185 event .type = GDK_BUTTON_RELEASE;184 event->type = GDK_BUTTON_RELEASE; 186 185 sendOrQueueEvent(event); 187 186 … … 208 207 } 209 208 210 GdkEvent event;211 if (!prepareMouseButtonEvent( &event, button))212 return JSValueMakeUndefined(context); 213 214 buttonCurrentlyDown = event .button.button;209 GdkEvent* event = gdk_event_new(GDK_BUTTON_PRESS); 210 if (!prepareMouseButtonEvent(event, button)) 211 return JSValueMakeUndefined(context); 212 213 buttonCurrentlyDown = event->button.button; 215 214 216 215 // Normally GDK will send both GDK_BUTTON_PRESS and GDK_2BUTTON_PRESS for … … 222 221 // appropriate events onto the event queue and this work-around should be 223 222 // removed. 224 updateClickCount(event .button.button);223 updateClickCount(event->button.button); 225 224 if (clickCount == 2) 226 event .type = GDK_2BUTTON_PRESS;225 event->type = GDK_2BUTTON_PRESS; 227 226 else if (clickCount == 3) 228 event.type = GDK_3BUTTON_PRESS; 229 else 230 event.type = GDK_BUTTON_PRESS; 227 event->type = GDK_3BUTTON_PRESS; 231 228 232 229 sendOrQueueEvent(event); … … 253 250 } 254 251 255 GdkEvent event;256 if (!prepareMouseButtonEvent( &event, button))252 GdkEvent* event = gdk_event_new(GDK_BUTTON_RELEASE); 253 if (!prepareMouseButtonEvent(event, button)) 257 254 return JSValueMakeUndefined(context); 258 255 … … 263 260 buttonCurrentlyDown = 0; 264 261 265 event.type = GDK_BUTTON_RELEASE;266 262 sendOrQueueEvent(event); 267 263 return JSValueMakeUndefined(context); … … 282 278 g_return_val_if_fail((!exception || !*exception), JSValueMakeUndefined(context)); 283 279 284 GdkEvent event; 285 memset(&event, 0, sizeof(event)); 286 event.type = GDK_MOTION_NOTIFY; 287 event.motion.x = lastMousePositionX; 288 event.motion.y = lastMousePositionY; 289 290 event.motion.time = GDK_CURRENT_TIME; 291 event.motion.window = gtk_widget_get_window(GTK_WIDGET(view)); 292 event.motion.device = gdk_device_get_core_pointer(); 293 event.motion.state = getStateFlags(); 294 event.motion.axes = 0; 280 GdkEvent* event = gdk_event_new(GDK_MOTION_NOTIFY); 281 event->motion.x = lastMousePositionX; 282 event->motion.y = lastMousePositionY; 283 284 event->motion.time = GDK_CURRENT_TIME; 285 event->motion.window = gtk_widget_get_window(GTK_WIDGET(view)); 286 g_object_ref(event->motion.window); 287 event->motion.device = gdk_device_get_core_pointer(); 288 event->motion.state = getStateFlags(); 289 event->motion.axes = 0; 295 290 296 291 int xRoot, yRoot; 297 292 gdk_window_get_root_coords(gtk_widget_get_window(GTK_WIDGET(view)), lastMousePositionX, lastMousePositionY, &xRoot, &yRoot); 298 event .motion.x_root = xRoot;299 event .motion.y_root = yRoot;293 event->motion.x_root = xRoot; 294 event->motion.y_root = yRoot; 300 295 301 296 sendOrQueueEvent(event, false); … … 320 315 g_return_val_if_fail((!vertical || !horizontal), JSValueMakeUndefined(context)); 321 316 322 GdkEvent event;323 event .type = GDK_SCROLL;324 event .scroll.x = lastMousePositionX;325 event .scroll.y = lastMousePositionY;326 event .scroll.time = GDK_CURRENT_TIME;327 event.scroll.window = gtk_widget_get_window(GTK_WIDGET(view));317 GdkEvent* event = gdk_event_new(GDK_SCROLL); 318 event->scroll.x = lastMousePositionX; 319 event->scroll.y = lastMousePositionY; 320 event->scroll.time = GDK_CURRENT_TIME; 321 event->scroll.window = gtk_widget_get_window(GTK_WIDGET(view)); 322 g_object_ref(event->scroll.window); 328 323 329 324 if (horizontal < 0) 330 event .scroll.direction = GDK_SCROLL_LEFT;325 event->scroll.direction = GDK_SCROLL_LEFT; 331 326 else if (horizontal > 0) 332 event .scroll.direction = GDK_SCROLL_RIGHT;327 event->scroll.direction = GDK_SCROLL_RIGHT; 333 328 else if (vertical < 0) 334 event .scroll.direction = GDK_SCROLL_UP;329 event->scroll.direction = GDK_SCROLL_UP; 335 330 else if (vertical > 0) 336 event .scroll.direction = GDK_SCROLL_DOWN;331 event->scroll.direction = GDK_SCROLL_DOWN; 337 332 else 338 333 g_assert_not_reached(); … … 351 346 } 352 347 353 static void sendOrQueueEvent(GdkEvent event, bool shouldReplaySavedEvents)348 static void sendOrQueueEvent(GdkEvent* event, bool shouldReplaySavedEvents) 354 349 { 355 350 // Mouse move events are queued if the previous event was queued or if a … … 367 362 } 368 363 369 static void dispatchEvent(GdkEvent event)364 static void dispatchEvent(GdkEvent* event) 370 365 { 371 366 webkit_web_frame_layout(mainFrame); 372 367 WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame); 373 if (!view) 368 if (!view) { 369 gdk_event_free(event); 374 370 return; 375 376 gtk_main_do_event(&event); 377 378 if (!currentDragSourceContext) 371 } 372 373 gtk_main_do_event(event); 374 375 if (!currentDragSourceContext) { 376 gdk_event_free(event); 379 377 return; 380 381 if (event.type == GDK_MOTION_NOTIFY) { 378 } 379 380 if (event->type == GDK_MOTION_NOTIFY) { 382 381 // WebKit has called gtk_drag_start(), but because the main loop isn't 383 382 // running GDK internals don't know that the drag has started yet. Pump … … 390 389 GdkWindow* parentWidgetWindow = gtk_widget_get_window(parentWidget); 391 390 gdk_drag_motion(currentDragSourceContext, parentWidgetWindow, GDK_DRAG_PROTO_XDND, 392 event .motion.x_root, event.motion.y_root,391 event->motion.x_root, event->motion.y_root, 393 392 gdk_drag_context_get_selected_action(currentDragSourceContext), 394 393 gdk_drag_context_get_actions(currentDragSourceContext), 395 394 GDK_CURRENT_TIME); 396 395 397 } else if (currentDragSourceContext && event .type == GDK_BUTTON_RELEASE) {396 } else if (currentDragSourceContext && event->type == GDK_BUTTON_RELEASE) { 398 397 // We've released the mouse button, we should just be able to spin the 399 398 // event loop here and have GTK+ send the appropriate notifications for … … 403 402 } 404 403 404 gdk_event_free(event); 405 405 } 406 406 … … 552 552 553 553 // create and send the event 554 GdkEvent event;555 memset(&event, 0, sizeof(event));556 event .key.keyval = gdkKeySym;557 event .key.state = state;558 event.key.window = gtk_widget_get_window(GTK_WIDGET(view));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); 559 559 560 560 // When synthesizing an event, an invalid hardware_keycode value … … 563 563 gint n_keys; 564 564 if (gdk_keymap_get_entries_for_keyval(gdk_keymap_get_default(), gdkKeySym, &keys, &n_keys)) { 565 event .key.hardware_keycode = keys[0].keycode;565 event->key.hardware_keycode = keys[0].keycode; 566 566 g_free(keys); 567 567 } 568 568 569 event.key.type = GDK_KEY_PRESS;570 569 dispatchEvent(event); 571 570 572 event .key.type = GDK_KEY_RELEASE;571 event->key.type = GDK_KEY_RELEASE; 573 572 dispatchEvent(event); 574 573
Note: See TracChangeset
for help on using the changeset viewer.