/src/3rdparty/webkit/Source/WebCore/page/DragController.h
https://bitbucket.org/ultra_iter/qt-vtl · C Header · 130 lines · 84 code · 20 blank · 26 comment · 0 complexity · c4e35f67ac0578cffc434d0a6e7d8300 MD5 · raw file
- /*
- * Copyright (C) 2007, 2009 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
- #ifndef DragController_h
- #define DragController_h
- #include "DragActions.h"
- #include "DragImage.h"
- #include "IntPoint.h"
- #include "KURL.h"
- namespace WebCore {
- class Clipboard;
- class Document;
- class DragClient;
- class DragData;
- class Element;
- class Frame;
- class Image;
- class IntRect;
- class Node;
- class Page;
- class PlatformMouseEvent;
- class Range;
- class SelectionController;
-
- class DragController {
- WTF_MAKE_NONCOPYABLE(DragController); WTF_MAKE_FAST_ALLOCATED;
- public:
- DragController(Page*, DragClient*);
- ~DragController();
- DragClient* client() const { return m_client; }
- DragOperation dragEntered(DragData*);
- void dragExited(DragData*);
- DragOperation dragUpdated(DragData*);
- bool performDrag(DragData*);
-
- // FIXME: It should be possible to remove a number of these accessors once all
- // drag logic is in WebCore.
- void setDidInitiateDrag(bool initiated) { m_didInitiateDrag = initiated; }
- bool didInitiateDrag() const { return m_didInitiateDrag; }
- void setIsHandlingDrag(bool handling) { m_isHandlingDrag = handling; }
- bool isHandlingDrag() const { return m_isHandlingDrag; }
- DragOperation sourceDragOperation() const { return m_sourceDragOperation; }
- const KURL& draggingImageURL() const { return m_draggingImageURL; }
- void setDragOffset(const IntPoint& offset) { m_dragOffset = offset; }
- const IntPoint& dragOffset() const { return m_dragOffset; }
- DragSourceAction dragSourceAction() const { return m_dragSourceAction; }
- Document* documentUnderMouse() const { return m_documentUnderMouse.get(); }
- DragDestinationAction dragDestinationAction() const { return m_dragDestinationAction; }
- DragSourceAction delegateDragSourceAction(const IntPoint& pagePoint);
-
- bool mayStartDragAtEventLocation(const Frame*, const IntPoint& framePos, Node*);
- void dragEnded();
-
- void placeDragCaret(const IntPoint&);
-
- bool startDrag(Frame* src, Clipboard*, DragOperation srcOp, const PlatformMouseEvent& dragEvent, const IntPoint& dragOrigin, bool isDHTMLDrag);
- static const IntSize& maxDragImageSize();
-
- static const int LinkDragBorderInset;
- static const int MaxOriginalImageArea;
- static const int DragIconRightInset;
- static const int DragIconBottomInset;
- static const float DragImageAlpha;
- private:
- bool dispatchTextInputEventFor(Frame*, DragData*);
- bool canProcessDrag(DragData*);
- bool concludeEditDrag(DragData*);
- DragOperation dragEnteredOrUpdated(DragData*);
- DragOperation operationForLoad(DragData*);
- bool tryDocumentDrag(DragData*, DragDestinationAction, DragOperation&);
- bool tryDHTMLDrag(DragData*, DragOperation&);
- DragOperation dragOperation(DragData*);
- void cancelDrag();
- bool dragIsMove(SelectionController*, DragData*);
- bool isCopyKeyDown(DragData*);
- void mouseMovedIntoDocument(Document*);
- IntRect selectionDraggingRect(Frame*);
- bool doDrag(Frame* src, Clipboard* clipboard, DragImageRef dragImage, const KURL& linkURL, const KURL& imageURL, Node* node, IntPoint& dragLoc, IntPoint& dragImageOffset);
- void doImageDrag(Element*, const IntPoint&, const IntRect&, Clipboard*, Frame*, IntPoint&);
- void doSystemDrag(DragImageRef, const IntPoint&, const IntPoint&, Clipboard*, Frame*, bool forLink);
- void cleanupAfterSystemDrag();
- Page* m_page;
- DragClient* m_client;
-
- RefPtr<Document> m_documentUnderMouse; // The document the mouse was last dragged over.
- RefPtr<Document> m_dragInitiator; // The Document (if any) that initiated the drag.
-
- DragDestinationAction m_dragDestinationAction;
- DragSourceAction m_dragSourceAction;
- bool m_didInitiateDrag;
- bool m_isHandlingDrag;
- DragOperation m_sourceDragOperation; // Set in startDrag when a drag starts from a mouse down within WebKit
- IntPoint m_dragOffset;
- KURL m_draggingImageURL;
- };
- }
- #endif