| 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 |