OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
417 | 417 |
418 // | 418 // |
419 // Implemented javascript methods. | 419 // Implemented javascript methods. |
420 // | 420 // |
421 | 421 |
422 void EventSender::mouseDown(const CppArgumentList& arguments, CppVariant* result
) | 422 void EventSender::mouseDown(const CppArgumentList& arguments, CppVariant* result
) |
423 { | 423 { |
424 if (result) // Could be 0 if invoked asynchronously. | 424 if (result) // Could be 0 if invoked asynchronously. |
425 result->setNull(); | 425 result->setNull(); |
426 | 426 |
427 webview()->layout(); | |
428 | |
429 int buttonNumber = getButtonNumberFromSingleArg(arguments); | 427 int buttonNumber = getButtonNumberFromSingleArg(arguments); |
430 WEBKIT_ASSERT(buttonNumber != -1); | 428 WEBKIT_ASSERT(buttonNumber != -1); |
431 | 429 |
432 WebMouseEvent::Button buttonType = getButtonTypeFromButtonNumber(buttonNumbe
r); | 430 WebMouseEvent::Button buttonType = getButtonTypeFromButtonNumber(buttonNumbe
r); |
433 | 431 |
434 updateClickCountForButton(buttonType); | 432 updateClickCountForButton(buttonType); |
435 | 433 |
436 WebMouseEvent event; | 434 WebMouseEvent event; |
437 pressedButton = buttonType; | 435 pressedButton = buttonType; |
438 initMouseEvent(WebInputEvent::MouseDown, buttonType, lastMousePos, &event, g
etCurrentEventTimeSec(m_delegate)); | 436 initMouseEvent(WebInputEvent::MouseDown, buttonType, lastMousePos, &event, g
etCurrentEventTimeSec(m_delegate)); |
439 if (arguments.size() >= 2 && (arguments[1].isObject() || arguments[1].isStri
ng())) | 437 if (arguments.size() >= 2 && (arguments[1].isObject() || arguments[1].isStri
ng())) |
440 applyKeyModifiers(&(arguments[1]), &event); | 438 applyKeyModifiers(&(arguments[1]), &event); |
441 webview()->handleInputEvent(event); | 439 webview()->handleInputEvent(event); |
442 } | 440 } |
443 | 441 |
444 void EventSender::mouseUp(const CppArgumentList& arguments, CppVariant* result) | 442 void EventSender::mouseUp(const CppArgumentList& arguments, CppVariant* result) |
445 { | 443 { |
446 if (result) // Could be 0 if invoked asynchronously. | 444 if (result) // Could be 0 if invoked asynchronously. |
447 result->setNull(); | 445 result->setNull(); |
448 | 446 |
449 webview()->layout(); | |
450 | |
451 int buttonNumber = getButtonNumberFromSingleArg(arguments); | 447 int buttonNumber = getButtonNumberFromSingleArg(arguments); |
452 WEBKIT_ASSERT(buttonNumber != -1); | 448 WEBKIT_ASSERT(buttonNumber != -1); |
453 | 449 |
454 WebMouseEvent::Button buttonType = getButtonTypeFromButtonNumber(buttonNumbe
r); | 450 WebMouseEvent::Button buttonType = getButtonTypeFromButtonNumber(buttonNumbe
r); |
455 | 451 |
456 if (isDragMode() && !replayingSavedEvents) { | 452 if (isDragMode() && !replayingSavedEvents) { |
457 SavedEvent savedEvent; | 453 SavedEvent savedEvent; |
458 savedEvent.type = SavedEvent::MouseUp; | 454 savedEvent.type = SavedEvent::MouseUp; |
459 savedEvent.buttonType = buttonType; | 455 savedEvent.buttonType = buttonType; |
460 mouseEventQueue.push_back(savedEvent); | 456 mouseEventQueue.push_back(savedEvent); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
499 | 495 |
500 currentDragData.reset(); | 496 currentDragData.reset(); |
501 } | 497 } |
502 | 498 |
503 void EventSender::mouseMoveTo(const CppArgumentList& arguments, CppVariant* resu
lt) | 499 void EventSender::mouseMoveTo(const CppArgumentList& arguments, CppVariant* resu
lt) |
504 { | 500 { |
505 result->setNull(); | 501 result->setNull(); |
506 | 502 |
507 if (arguments.size() < 2 || !arguments[0].isNumber() || !arguments[1].isNumb
er()) | 503 if (arguments.size() < 2 || !arguments[0].isNumber() || !arguments[1].isNumb
er()) |
508 return; | 504 return; |
509 webview()->layout(); | |
510 | 505 |
511 WebPoint mousePos(arguments[0].toInt32(), arguments[1].toInt32()); | 506 WebPoint mousePos(arguments[0].toInt32(), arguments[1].toInt32()); |
512 | 507 |
513 if (isDragMode() && pressedButton == WebMouseEvent::ButtonLeft && !replaying
SavedEvents) { | 508 if (isDragMode() && pressedButton == WebMouseEvent::ButtonLeft && !replaying
SavedEvents) { |
514 SavedEvent savedEvent; | 509 SavedEvent savedEvent; |
515 savedEvent.type = SavedEvent::MouseMove; | 510 savedEvent.type = SavedEvent::MouseMove; |
516 savedEvent.pos = mousePos; | 511 savedEvent.pos = mousePos; |
517 mouseEventQueue.push_back(savedEvent); | 512 mouseEventQueue.push_back(savedEvent); |
518 } else { | 513 } else { |
519 WebMouseEvent event; | 514 WebMouseEvent event; |
(...skipping 550 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1070 webview()->handleInputEvent(event); | 1065 webview()->handleInputEvent(event); |
1071 } | 1066 } |
1072 | 1067 |
1073 void EventSender::handleMouseWheel(const CppArgumentList& arguments, CppVariant*
result, bool continuous) | 1068 void EventSender::handleMouseWheel(const CppArgumentList& arguments, CppVariant*
result, bool continuous) |
1074 { | 1069 { |
1075 result->setNull(); | 1070 result->setNull(); |
1076 | 1071 |
1077 if (arguments.size() < 2 || !arguments[0].isNumber() || !arguments[1].isNumb
er()) | 1072 if (arguments.size() < 2 || !arguments[0].isNumber() || !arguments[1].isNumb
er()) |
1078 return; | 1073 return; |
1079 | 1074 |
1080 // Force a layout here just to make sure every position has been | |
1081 // determined before we send events (as well as all the other methods | |
1082 // that send an event do). | |
1083 webview()->layout(); | |
1084 | |
1085 int horizontal = arguments[0].toInt32(); | 1075 int horizontal = arguments[0].toInt32(); |
1086 int vertical = arguments[1].toInt32(); | 1076 int vertical = arguments[1].toInt32(); |
1087 int paged = false; | 1077 int paged = false; |
1088 int hasPreciseScrollingDeltas = false; | 1078 int hasPreciseScrollingDeltas = false; |
1089 | 1079 |
1090 if (arguments.size() > 2 && arguments[2].isBool()) | 1080 if (arguments.size() > 2 && arguments[2].isBool()) |
1091 paged = arguments[2].toBoolean(); | 1081 paged = arguments[2].toBoolean(); |
1092 | 1082 |
1093 if (arguments.size() > 3 && arguments[3].isBool()) | 1083 if (arguments.size() > 3 && arguments[3].isBool()) |
1094 hasPreciseScrollingDeltas = arguments[3].toBoolean(); | 1084 hasPreciseScrollingDeltas = arguments[3].toBoolean(); |
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1352 { | 1342 { |
1353 result->setNull(); | 1343 result->setNull(); |
1354 } | 1344 } |
1355 | 1345 |
1356 void EventSender::clearKillRing(const CppArgumentList&, CppVariant* result) | 1346 void EventSender::clearKillRing(const CppArgumentList&, CppVariant* result) |
1357 { | 1347 { |
1358 result->setNull(); | 1348 result->setNull(); |
1359 } | 1349 } |
1360 | 1350 |
1361 } | 1351 } |
OLD | NEW |