Merge branch 'Plasma/5.16'

wilder-5.17
Nate Graham 7 years ago
commit a5214734dd
  1. 18
      draghelper.cpp
  2. 7
      draghelper.h

@ -24,9 +24,11 @@
#include <QMimeData>
#include <QQuickItem>
#include <QQuickWindow>
#include <QTimer>
DragHelper::DragHelper(QObject* parent) : QObject(parent)
, m_dragIconSize(32)
, m_dragging(false)
{
}
@ -66,8 +68,10 @@ void DragHelper::startDrag(QQuickItem *item, const QUrl &url, const QIcon &icon,
}
void DragHelper::doDrag(QQuickItem *item, const QUrl &url, const QIcon &icon,
const QString &extraMimeType, const QString &extraMimeData) const
const QString &extraMimeType, const QString &extraMimeData)
{
setDragging(true);
if (item && item->window() && item->window()->mouseGrabberItem()) {
item->window()->mouseGrabberItem()->ungrabMouse();
}
@ -93,5 +97,17 @@ void DragHelper::doDrag(QQuickItem *item, const QUrl &url, const QIcon &icon,
drag->exec();
emit dropped();
// Ensure dragging is still true when onRelease is called.
QTimer::singleShot(0, qApp, [this] {
setDragging(false);
});
}
void DragHelper::setDragging(bool dragging)
{
if (m_dragging == dragging)
return;
m_dragging = dragging;
emit draggingChanged();
}

@ -30,6 +30,7 @@ class DragHelper : public QObject
{
Q_OBJECT
Q_PROPERTY(int dragIconSize READ dragIconSize WRITE setDragIconSize NOTIFY dragIconSizeChanged)
Q_PROPERTY(bool dragging READ isDragging NOTIFY draggingChanged)
public:
explicit DragHelper(QObject *parent = nullptr);
@ -37,6 +38,7 @@ class DragHelper : public QObject
int dragIconSize() const;
void setDragIconSize(int size);
bool isDragging() const { return m_dragging; }
Q_INVOKABLE bool isDrag(int oldX, int oldY, int newX, int newY) const;
Q_INVOKABLE void startDrag(QQuickItem* item, const QUrl &url = QUrl(), const QIcon &icon = QIcon(),
@ -45,11 +47,14 @@ class DragHelper : public QObject
Q_SIGNALS:
void dragIconSizeChanged() const;
void dropped() const;
void draggingChanged() const;
private:
int m_dragIconSize;
bool m_dragging;
Q_INVOKABLE void doDrag(QQuickItem* item, const QUrl &url = QUrl(), const QIcon &icon = QIcon(),
const QString &extraMimeType = QString(), const QString &extraMimeData = QString()) const;
const QString &extraMimeType = QString(), const QString &extraMimeData = QString());
void setDragging(bool dragging);
};
#endif

Loading…
Cancel
Save