From e108d7e90e36dd57e6538f3404f38fd17660a91a Mon Sep 17 00:00:00 2001 From: Eike Hein Date: Sat, 2 Jun 2018 05:59:40 +0900 Subject: [PATCH] Teach ContainmentInterface::processMimeData how to handle Task Manager drops Summary: To explicitly confine Task Manager drops to Plasma and avoid accidental drops on other apps, D13274 makes it store task launcher URLs in a special internal MIME type instead of the generic text/url one. This change to processMimeData() adds the necessary conversion back. Reviewers: davidedmundson, Zren, mart Subscribers: kde-frameworks-devel, plasma-devel Tags: #frameworks Differential Revision: https://phabricator.kde.org/D13275 --- src/scriptengines/qml/plasmoid/containmentinterface.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/scriptengines/qml/plasmoid/containmentinterface.cpp b/src/scriptengines/qml/plasmoid/containmentinterface.cpp index e60898db9..ba678b339 100644 --- a/src/scriptengines/qml/plasmoid/containmentinterface.cpp +++ b/src/scriptengines/qml/plasmoid/containmentinterface.cpp @@ -450,6 +450,12 @@ void ContainmentInterface::processMimeData(QMimeData *mimeData, int x, int y, KI qDebug() << "Arrived mimeData" << mimeData->urls() << mimeData->formats() << "at" << x << ", " << y; + // Catch drops from a Task Manager and convert to usable URL. + if (!mimeData->hasUrls() && mimeData->hasFormat(QStringLiteral("text/x-orgkdeplasmataskmanager_taskurl"))) { + QList urls = {QUrl(QString::fromUtf8(mimeData->data(QStringLiteral("text/x-orgkdeplasmataskmanager_taskurl"))))}; + mimeData->setUrls(urls); + } + if (mimeData->hasFormat(QStringLiteral("text/x-plasmoidservicename"))) { QString data = QString::fromUtf8( mimeData->data(QStringLiteral("text/x-plasmoidservicename")) ); const QStringList appletNames = data.split(QLatin1Char('\n'), QString::SkipEmptyParts);