Changeset View
Changeset View
Standalone View
Standalone View
applets/taskmanager/plugin/draghelper.cpp
Show First 20 Lines • Show All 67 Lines • ▼ Show 20 Line(s) | 63 | QMetaObject::invokeMethod(this, "startDragInternal", Qt::QueuedConnection, | |||
---|---|---|---|---|---|
68 | Q_ARG(QIcon, icon)); | 68 | Q_ARG(QIcon, icon)); | ||
69 | } | 69 | } | ||
70 | 70 | | |||
71 | void DragHelper::startDragInternal(QQuickItem *item, const QString &mimeType, | 71 | void DragHelper::startDragInternal(QQuickItem *item, const QString &mimeType, | ||
72 | const QVariant &mimeData, const QUrl &url, const QIcon &icon) const | 72 | const QVariant &mimeData, const QUrl &url, const QIcon &icon) const | ||
73 | { | 73 | { | ||
74 | QPointer<QQuickItem> grabber = item; | 74 | QPointer<QQuickItem> grabber = item; | ||
75 | 75 | | |||
76 | QList<QUrl> urlList; | | |||
77 | urlList.append(Backend::tryDecodeApplicationsUrl(url)); | | |||
78 | | ||||
79 | QMimeData *dragData = new QMimeData(); | 76 | QMimeData *dragData = new QMimeData(); | ||
77 | const QByteArray &taskUrlData = Backend::tryDecodeApplicationsUrl(url).toString().toUtf8(); | ||||
78 | dragData->setData("text/x-orgkdeplasmataskmanager_taskurl", taskUrlData); | ||||
80 | dragData->setData(mimeType, mimeData.toByteArray()); | 79 | dragData->setData(mimeType, mimeData.toByteArray()); | ||
81 | dragData->setData("application/x-orgkdeplasmataskmanager_taskbuttonitem", mimeData.toByteArray()); | 80 | dragData->setData("application/x-orgkdeplasmataskmanager_taskbuttonitem", mimeData.toByteArray()); | ||
82 | dragData->setUrls(urlList); | | |||
83 | 81 | | |||
84 | QDrag *drag = new QDrag(static_cast<QQuickItem *>(parent())); | 82 | QDrag *drag = new QDrag(static_cast<QQuickItem *>(parent())); | ||
85 | drag->setMimeData(dragData); | 83 | drag->setMimeData(dragData); | ||
86 | drag->setPixmap(icon.pixmap(QSize(m_dragIconSize, m_dragIconSize))); | 84 | drag->setPixmap(icon.pixmap(QSize(m_dragIconSize, m_dragIconSize))); | ||
87 | 85 | | |||
88 | grabber->grabMouse(); | 86 | grabber->grabMouse(); | ||
89 | 87 | | |||
90 | drag->exec(); | 88 | drag->exec(); | ||
91 | 89 | | |||
92 | if (grabber) { | 90 | if (grabber) { | ||
93 | grabber->ungrabMouse(); | 91 | grabber->ungrabMouse(); | ||
94 | } | 92 | } | ||
95 | 93 | | |||
96 | emit dropped(); | 94 | emit dropped(); | ||
97 | } | 95 | } | ||
98 | 96 | |