diff options
Diffstat (limited to 'src/platformsupport/dnd/qsimpledrag_p.h')
-rw-r--r-- | src/platformsupport/dnd/qsimpledrag_p.h | 64 |
1 files changed, 56 insertions, 8 deletions
diff --git a/src/platformsupport/dnd/qsimpledrag_p.h b/src/platformsupport/dnd/qsimpledrag_p.h index 536ae241ff..7270684082 100644 --- a/src/platformsupport/dnd/qsimpledrag_p.h +++ b/src/platformsupport/dnd/qsimpledrag_p.h @@ -44,32 +44,80 @@ #include <qplatformdrag_qpa.h> +#include <QtCore/QObject> + QT_BEGIN_NAMESPACE +QT_BEGIN_HEADER + class QMouseEvent; class QWindow; - +class QEventLoop; class QDropData; +class QShapedPixmapWindow; -class QSimpleDrag : public QPlatformDrag +class QBasicDrag : public QPlatformDrag, public QObject { public: - QSimpleDrag(); - ~QSimpleDrag(); + virtual ~QBasicDrag(); - virtual QMimeData *platformDropData(); + virtual Qt::DropAction drag(QDrag *drag); + + virtual bool eventFilter(QObject *o, QEvent *e); -// virtual Qt::DropAction drag(QDrag *); +protected: + QBasicDrag(); + virtual void startDrag(); virtual void cancel(); virtual void move(const QMouseEvent *me); virtual void drop(const QMouseEvent *me); + virtual void endDrag(); + + QShapedPixmapWindow *shapedPixmapWindow() const { return m_drag_icon_window; } + void updateCursor(Qt::DropAction action); + + bool canDrop() const { return m_can_drop; } + void setCanDrop(bool c) { m_can_drop = c; } + + Qt::DropAction executedDropAction() const { return m_executed_drop_action; } + void setExecutedDropAction(Qt::DropAction da) { m_executed_drop_action = da; } + + QDrag *drag() const { return m_drag; } + private: - QDropData *m_dropData; + void enableEventFilter(); + void disableEventFilter(); + void resetDndState(bool deleteSource); + void exitDndEventLoop(); + + bool m_restoreCursor; + QEventLoop *m_eventLoop; + Qt::DropAction m_executed_drop_action; + bool m_can_drop; + QDrag *m_drag; + QShapedPixmapWindow *m_drag_icon_window; + Qt::DropAction m_cursor_drop_action; +}; + +class QSimpleDrag : public QBasicDrag +{ +public: + QSimpleDrag(); + virtual QMimeData *platformDropData(); - QWindow *currentWindow; +protected: + virtual void startDrag(); + virtual void cancel(); + virtual void move(const QMouseEvent *me); + virtual void drop(const QMouseEvent *me); + +private: + QWindow *m_current_window; }; +QT_END_HEADER + QT_END_NAMESPACE #endif |