| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2007, 2009, 2010 Apple Inc. All rights reserved. | 2 * Copyright (C) 2007, 2009, 2010 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2008 Google Inc. | 3 * Copyright (C) 2008 Google Inc. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
| 7 * are met: | 7 * are met: |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. 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 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
| (...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 429 { | 429 { |
| 430 frame->selection().setSelection(dragCaret); | 430 frame->selection().setSelection(dragCaret); |
| 431 if (frame->selection().isNone()) { | 431 if (frame->selection().isNone()) { |
| 432 dragCaret = VisibleSelection(frame->positionForPoint(point)); | 432 dragCaret = VisibleSelection(frame->positionForPoint(point)); |
| 433 frame->selection().setSelection(dragCaret); | 433 frame->selection().setSelection(dragCaret); |
| 434 range = createRange(dragCaret.toNormalizedEphemeralRange()); | 434 range = createRange(dragCaret.toNormalizedEphemeralRange()); |
| 435 } | 435 } |
| 436 return !frame->selection().isNone() && frame->selection().isContentEditable(
); | 436 return !frame->selection().isNone() && frame->selection().isContentEditable(
); |
| 437 } | 437 } |
| 438 | 438 |
| 439 bool DragController::dispatchTextInputEventFor(LocalFrame* innerFrame, DragData*
dragData) | 439 WebInputEventResult DragController::dispatchTextInputEventFor(LocalFrame* innerF
rame, DragData* dragData) |
| 440 { | 440 { |
| 441 ASSERT(m_page->dragCaretController().hasCaret()); | 441 ASSERT(m_page->dragCaretController().hasCaret()); |
| 442 String text = m_page->dragCaretController().isContentRichlyEditable() ? "" :
dragData->asPlainText(); | 442 String text = m_page->dragCaretController().isContentRichlyEditable() ? "" :
dragData->asPlainText(); |
| 443 Element* target = innerFrame->editor().findEventTargetFrom(VisibleSelection(
m_page->dragCaretController().caretPosition())); | 443 Element* target = innerFrame->editor().findEventTargetFrom(VisibleSelection(
m_page->dragCaretController().caretPosition())); |
| 444 return target->dispatchEvent(TextEvent::createForDrop(innerFrame->domWindow(
), text)); | 444 return target->dispatchEvent(TextEvent::createForDrop(innerFrame->domWindow(
), text)); |
| 445 } | 445 } |
| 446 | 446 |
| 447 bool DragController::concludeEditDrag(DragData* dragData) | 447 bool DragController::concludeEditDrag(DragData* dragData) |
| 448 { | 448 { |
| 449 ASSERT(dragData); | 449 ASSERT(dragData); |
| 450 | 450 |
| 451 RefPtrWillBeRawPtr<HTMLInputElement> fileInput = m_fileInputElementUnderMous
e; | 451 RefPtrWillBeRawPtr<HTMLInputElement> fileInput = m_fileInputElementUnderMous
e; |
| 452 if (m_fileInputElementUnderMouse) { | 452 if (m_fileInputElementUnderMouse) { |
| 453 m_fileInputElementUnderMouse->setCanReceiveDroppedFiles(false); | 453 m_fileInputElementUnderMouse->setCanReceiveDroppedFiles(false); |
| 454 m_fileInputElementUnderMouse = nullptr; | 454 m_fileInputElementUnderMouse = nullptr; |
| 455 } | 455 } |
| 456 | 456 |
| 457 if (!m_documentUnderMouse) | 457 if (!m_documentUnderMouse) |
| 458 return false; | 458 return false; |
| 459 | 459 |
| 460 IntPoint point = m_documentUnderMouse->view()->rootFrameToContents(dragData-
>clientPosition()); | 460 IntPoint point = m_documentUnderMouse->view()->rootFrameToContents(dragData-
>clientPosition()); |
| 461 Element* element = elementUnderMouse(m_documentUnderMouse.get(), point); | 461 Element* element = elementUnderMouse(m_documentUnderMouse.get(), point); |
| 462 if (!element) | 462 if (!element) |
| 463 return false; | 463 return false; |
| 464 RefPtrWillBeRawPtr<LocalFrame> innerFrame = element->ownerDocument()->frame(
); | 464 RefPtrWillBeRawPtr<LocalFrame> innerFrame = element->ownerDocument()->frame(
); |
| 465 ASSERT(innerFrame); | 465 ASSERT(innerFrame); |
| 466 | 466 |
| 467 if (m_page->dragCaretController().hasCaret() && !dispatchTextInputEventFor(i
nnerFrame.get(), dragData)) | 467 if (m_page->dragCaretController().hasCaret() && dispatchTextInputEventFor(in
nerFrame.get(), dragData) != WebInputEventResult::NotHandled) |
| 468 return true; | 468 return true; |
| 469 | 469 |
| 470 if (dragData->containsFiles() && fileInput) { | 470 if (dragData->containsFiles() && fileInput) { |
| 471 // fileInput should be the element we hit tested for, unless it was made | 471 // fileInput should be the element we hit tested for, unless it was made |
| 472 // display:none in a drop event handler. | 472 // display:none in a drop event handler. |
| 473 ASSERT(fileInput == element || !fileInput->layoutObject()); | 473 ASSERT(fileInput == element || !fileInput->layoutObject()); |
| 474 if (fileInput->isDisabledFormControl()) | 474 if (fileInput->isDisabledFormControl()) |
| 475 return false; | 475 return false; |
| 476 | 476 |
| 477 return fileInput->receiveDroppedFiles(dragData); | 477 return fileInput->receiveDroppedFiles(dragData); |
| (...skipping 483 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 961 | 961 |
| 962 DEFINE_TRACE(DragController) | 962 DEFINE_TRACE(DragController) |
| 963 { | 963 { |
| 964 visitor->trace(m_page); | 964 visitor->trace(m_page); |
| 965 visitor->trace(m_documentUnderMouse); | 965 visitor->trace(m_documentUnderMouse); |
| 966 visitor->trace(m_dragInitiator); | 966 visitor->trace(m_dragInitiator); |
| 967 visitor->trace(m_fileInputElementUnderMouse); | 967 visitor->trace(m_fileInputElementUnderMouse); |
| 968 } | 968 } |
| 969 | 969 |
| 970 } // namespace blink | 970 } // namespace blink |
| OLD | NEW |