Changeset 53296 in webkit


Ignore:
Timestamp:
Jan 14, 2010 4:06:18 PM (14 years ago)
Author:
bweinstein@apple.com
Message:

Drag and Drop source/destination code needs cleanup.
<https://bugs.webkit.org/show_bug.cgi?id=33691>.

Reviewed by Adam Roben.

WebCore:

Cleaned up some Drag and Drop code that deals with getting
source and destination operations, and added some ASSERTS to make
sure we don't get in bad states.

  • dom/Clipboard.cpp:

(WebCore::Clipboard::sourceOperation): Make this return the operation itself.
(WebCore::Clipboard::destinationOperation): Ditto.
(WebCore::Clipboard::setSourceOperation): Add an assert to make sure we're valud.
(WebCore::Clipboard::setDestinationOperation): Ditto.

  • dom/Clipboard.h:
  • page/DragController.cpp:

(WebCore::DragController::tryDHTMLDrag):

  • page/EventHandler.cpp:

(WebCore::EventHandler::handleDrag):

WebKit/chromium:

Update to new way of calling sourceOperation.

  • src/DragClientImpl.cpp:

(WebKit::DragClientImpl::startDrag):

WebKit/qt:

Update to new way of calling sourceOperation.

  • WebCoreSupport/DragClientQt.cpp:

(WebCore::DragClientQt::startDrag):

Location:
trunk
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r53295 r53296  
     12010-01-14  Brian Weinstein  <bweinstein@apple.com>
     2
     3        Reviewed by Adam Roben.
     4
     5        Drag and Drop source/destination code needs cleanup.
     6        <https://bugs.webkit.org/show_bug.cgi?id=33691>.
     7       
     8        Cleaned up some Drag and Drop code that deals with getting
     9        source and destination operations, and added some ASSERTS to make
     10        sure we don't get in bad states.
     11
     12        * dom/Clipboard.cpp:
     13        (WebCore::Clipboard::sourceOperation): Make this return the operation itself.
     14        (WebCore::Clipboard::destinationOperation): Ditto.
     15        (WebCore::Clipboard::setSourceOperation): Add an assert to make sure we're valud.
     16        (WebCore::Clipboard::setDestinationOperation): Ditto.
     17        * dom/Clipboard.h:
     18        * page/DragController.cpp:
     19        (WebCore::DragController::tryDHTMLDrag):
     20        * page/EventHandler.cpp:
     21        (WebCore::EventHandler::handleDrag):
     22
    1232010-01-14  Timothy Hatcher  <timothy@apple.com>
    224
  • trunk/WebCore/dom/Clipboard.cpp

    r53288 r53296  
    101101}
    102102
    103 bool Clipboard::sourceOperation(DragOperation& op) const
     103DragOperation Clipboard::sourceOperation() const
    104104{
    105     op = dragOpFromIEOp(m_effectAllowed);
     105    DragOperation op = dragOpFromIEOp(m_effectAllowed);
    106106    ASSERT(op != DragOperationPrivate);
    107     return true;
     107    return op;
    108108}
    109109
    110 bool Clipboard::destinationOperation(DragOperation& op) const
     110DragOperation Clipboard::destinationOperation() const
    111111{
    112     op = dragOpFromIEOp(m_dropEffect);
    113     ASSERT(op == DragOperationCopy || op == DragOperationNone || op == DragOperationLink || op == DragOperationMove);
    114     return true;
     112    DragOperation op = dragOpFromIEOp(m_dropEffect);
     113    ASSERT_ARG(op, op == DragOperationCopy || op == DragOperationNone || op == DragOperationLink || op == DragOperationGeneric);
     114    return op;
    115115}
    116116
    117117void Clipboard::setSourceOperation(DragOperation op)
    118118{
     119    ASSERT_ARG(op, op != DragOperationPrivate);
    119120    m_effectAllowed = IEOpFromDragOp(op);
    120121}
     
    122123void Clipboard::setDestinationOperation(DragOperation op)
    123124{
     125    ASSERT(op == DragOperationCopy || op == DragOperationNone || op == DragOperationLink || op == DragOperationMove);
    124126    m_dropEffect = IEOpFromDragOp(op);
    125127}
  • trunk/WebCore/dom/Clipboard.h

    r48426 r53296  
    7575        void setAccessPolicy(ClipboardAccessPolicy);
    7676
    77         bool sourceOperation(DragOperation&) const;
    78         bool destinationOperation(DragOperation&) const;
     77        DragOperation sourceOperation() const;
     78        DragOperation destinationOperation() const;
    7979        void setSourceOperation(DragOperation);
    8080        void setDestinationOperation(DragOperation);
  • trunk/WebCore/page/DragController.cpp

    r49292 r53296  
    483483}
    484484
    485 static DragOperation defaultOperationForDrag(DragOperation srcOpMask)
    486 {
    487     // This is designed to match IE's operation fallback for the case where
    488     // the page calls preventDefault() in a drag event but doesn't set dropEffect.
    489     if (srcOpMask & DragOperationCopy)
    490          return DragOperationCopy;
    491     if (srcOpMask & DragOperationMove || srcOpMask & DragOperationGeneric)
    492         return DragOperationMove;
    493     if (srcOpMask & DragOperationLink)
    494         return DragOperationLink;
    495 
    496     // FIXME: Does IE really return "generic" even if no operations were allowed by the source?
    497     return DragOperationGeneric;
    498 }
    499 
    500485bool DragController::tryDHTMLDrag(DragData* dragData, DragOperation& operation)
    501486{
     
    518503    }
    519504
    520     if (!clipboard->destinationOperation(operation)) {
    521         // The element accepted but they didn't pick an operation, so we pick one (to match IE).
    522         operation = defaultOperationForDrag(srcOpMask);
    523     } else if (!(srcOpMask & operation)) {
     505    operation = clipboard->destinationOperation();
     506    if (!(srcOpMask & operation)) {
    524507        // The element picked an operation which is not supported by the source
    525508        operation = DragOperationNone;
  • trunk/WebCore/page/EventHandler.cpp

    r53069 r53296  
    23342334        if (m_mouseDownMayStartDrag) {
    23352335            // gather values from DHTML element, if it set any
    2336             dragState().m_dragClipboard->sourceOperation(srcOp);
     2336            srcOp = dragState().m_dragClipboard->sourceOperation();
    23372337           
    23382338            // Yuck, a draggedImage:moveTo: message can be fired as a result of kicking off the
  • trunk/WebKit/chromium/ChangeLog

    r53290 r53296  
     12010-01-14  Brian Weinstein  <bweinstein@apple.com>
     2
     3        Reviewed by Adam Roben.
     4
     5        Drag and Drop source/destination code needs cleanup.
     6        <https://bugs.webkit.org/show_bug.cgi?id=33691>.
     7       
     8        Update to new way of calling sourceOperation.
     9
     10        * src/DragClientImpl.cpp:
     11        (WebKit::DragClientImpl::startDrag):
     12
    1132010-01-14  Nate Chapin  <japhet@chromium.org>
    214
  • trunk/WebKit/chromium/src/DragClientImpl.cpp

    r50742 r53296  
    8080    WebDragData dragData = static_cast<ClipboardChromium*>(clipboard)->dataObject();
    8181
    82     DragOperation dragOperationMask;
    83     if (!clipboard->sourceOperation(dragOperationMask))
    84         dragOperationMask = DragOperationEvery;
     82    DragOperation dragOperationMask = clipboard->sourceOperation();
    8583
    8684    m_webView->startDragging(
  • trunk/WebKit/qt/ChangeLog

    r53267 r53296  
     12010-01-14  Brian Weinstein  <bweinstein@apple.com>
     2
     3        Reviewed by Adam Roben.
     4
     5        Drag and Drop source/destination code needs cleanup.
     6        <https://bugs.webkit.org/show_bug.cgi?id=33691>.
     7       
     8        Update to new way of calling sourceOperation.
     9
     10        * WebCoreSupport/DragClientQt.cpp:
     11        (WebCore::DragClientQt::startDrag):
     12
    1132010-01-14  Simon Hausmann  <simon.hausmann@nokia.com>
    214
  • trunk/WebKit/qt/WebCoreSupport/DragClientQt.cpp

    r52815 r53296  
    9797        if (clipboardData && clipboardData->hasImage())
    9898            drag->setPixmap(qvariant_cast<QPixmap>(clipboardData->imageData()));
    99         DragOperation dragOperationMask = DragOperationEvery;
    100         clipboard->sourceOperation(dragOperationMask);
     99        DragOperation dragOperationMask = clipboard->sourceOperation();
    101100        drag->setMimeData(clipboardData);
    102101        Qt::DropAction actualDropAction = drag->exec(dragOperationsToDropActions(dragOperationMask));
Note: See TracChangeset for help on using the changeset viewer.