┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/draganddrophelper.cpp
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2008-10-26 14:39:13 +0000
committerPeter Penz <[email protected]>2008-10-26 14:39:13 +0000
commit5735251bbb28e6d96f3e43abd9302efc28d6829e (patch)
treebcea6bd80403fbffaf87b2e0965a760a9c6a3777 /src/draganddrophelper.cpp
parent883ef3c9b23063f158a9ad77435ee7c4019a8316 (diff)
improved drag & drop support for Ark
CCMAIL: [email protected] svn path=/trunk/KDE/kdebase/apps/; revision=876115
Diffstat (limited to 'src/draganddrophelper.cpp')
-rw-r--r--src/draganddrophelper.cpp26
1 files changed, 18 insertions, 8 deletions
diff --git a/src/draganddrophelper.cpp b/src/draganddrophelper.cpp
index 6e3fff2fc..ded92bf04 100644
--- a/src/draganddrophelper.cpp
+++ b/src/draganddrophelper.cpp
@@ -28,6 +28,7 @@
#include <QAbstractItemView>
#include <QAbstractProxyModel>
+#include <QtDBus>
#include <QDrag>
bool DragAndDropHelper::isMimeDataSupported(const QMimeData* mimeData)
@@ -75,14 +76,23 @@ void DragAndDropHelper::dropUrls(const KFileItem& destItem,
{
const bool dropToItem = !destItem.isNull() && (destItem.isDir() || destItem.isDesktopFile());
const KUrl destination = dropToItem ? destItem.url() : destPath;
-
- const KUrl::List urls = KUrl::List::fromMimeData(event->mimeData());
- const KUrl sourceDir = KUrl(urls.first().directory());
- if (sourceDir != destination) {
- if (dropToItem) {
- KonqOperations::doDrop(destItem, destination, event, widget);
- } else {
- KonqOperations::doDrop(KFileItem(), destination, event, widget);
+
+ const QMimeData* mimeData = event->mimeData();
+ if (mimeData->hasFormat("application/x-kde-dndextract")) {
+ QString remoteDBusClient = mimeData->data("application/x-kde-dndextract");
+ QDBusMessage message = QDBusMessage::createMethodCall(remoteDBusClient, "/DndExtract",
+ "org.kde.DndExtract", "extractFilesTo");
+ message.setArguments(QVariantList() << destination.path());
+ QDBusConnection::sessionBus().call(message);
+ } else {
+ const KUrl::List urls = KUrl::List::fromMimeData(event->mimeData());
+ const KUrl sourceDir = KUrl(urls.first().directory());
+ if (sourceDir != destination) {
+ if (dropToItem) {
+ KonqOperations::doDrop(destItem, destination, event, widget);
+ } else {
+ KonqOperations::doDrop(KFileItem(), destination, event, widget);
+ }
}
}
}