DragOperation DragController::dragEnteredOrUpdated(DragData* dragData) { ASSERT(dragData); IntPoint windowPoint = dragData->clientPosition(); Document* newDraggingDoc = 0; if (Frame* frame = m_page->mainFrame()) newDraggingDoc = frame->documentAtPoint(windowPoint); if (m_document != newDraggingDoc) { if (m_document) cancelDrag(); m_document = newDraggingDoc; } m_dragDestinationAction = m_client->actionMaskForDrag(dragData); DragOperation operation = DragOperationNone; if (m_dragDestinationAction == DragDestinationActionNone) cancelDrag(); else { operation = tryDocumentDrag(dragData, m_dragDestinationAction); if (operation == DragOperationNone && (m_dragDestinationAction & DragDestinationActionLoad)) return operationForLoad(dragData); } return operation; }
DragSession DragController::dragEnteredOrUpdated(DragData* dragData) { ASSERT(dragData); ASSERT(m_page->mainFrame()); // It is not possible in Mac WebKit to have a Page without a mainFrame() mouseMovedIntoDocument(m_page->mainFrame()->documentAtPoint(dragData->clientPosition())); m_dragDestinationAction = m_client->actionMaskForDrag(dragData); if (m_dragDestinationAction == DragDestinationActionNone) { cancelDrag(); // FIXME: Why not call mouseMovedIntoDocument(0)? return DragSession(); } DragSession dragSession; bool handledByDocument = tryDocumentDrag(dragData, m_dragDestinationAction, dragSession); if (!handledByDocument && (m_dragDestinationAction & DragDestinationActionLoad)) dragSession.operation = operationForLoad(dragData); return dragSession; }