diff --git a/src/panels/folders/treeviewcontextmenu.cpp b/src/panels/folders/treeviewcontextmenu.cpp index 85d1215c68..13a5c40f17 100644 --- a/src/panels/folders/treeviewcontextmenu.cpp +++ b/src/panels/folders/treeviewcontextmenu.cpp @@ -31,8 +31,8 @@ #include #include #include -#include #include +#include #include #include #include @@ -182,7 +182,8 @@ void TreeViewContextMenu::copy() void TreeViewContextMenu::paste() { - KonqOperations::doPaste(m_parent, m_fileItem.url()); + KIO::PasteJob *job = KIO::paste(QApplication::clipboard()->mimeData(), m_fileItem.url()); + KJobWidgets::setWindow(job, m_parent); } void TreeViewContextMenu::rename() diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp index b330e5f5c3..7228b11311 100644 --- a/src/views/dolphinview.cpp +++ b/src/views/dolphinview.cpp @@ -51,6 +51,7 @@ #include #include #include +#include #include #include #include @@ -1040,16 +1041,19 @@ void DolphinView::slotItemDropEvent(int index, QGraphicsSceneDragDropEvent* even event->modifiers()); QString error; - KonqOperations* op = DragAndDropHelper::dropUrls(destItem, destUrl, &dropEvent, error); + KonqOperations* job = DragAndDropHelper::dropUrls(destItem, destUrl, &dropEvent, error); if (!error.isEmpty()) { emit infoMessage(error); } - if (op && destUrl == url()) { + if (job && destUrl == url()) { // Mark the dropped urls as selected. m_clearSelectionBeforeSelectingNewItems = true; m_markFirstNewlySelectedItemAsCurrent = true; - connect(op, static_cast&)>(&KonqOperations::aboutToCreate), this, &DolphinView::slotAboutToCreate); + connect(job, static_cast&)>(&KonqOperations::aboutToCreate), this, &DolphinView::slotAboutToCreate); + // TODO + //connect(job, &KIO::InteractiveDropJob::itemCreated, this, &DolphinView::slotItemCreated); + //connect(job, &KIO::InteractiveDropJob::result, this, &DolphinView::slotPasteJobResult); } setActive(true); @@ -1096,6 +1100,22 @@ void DolphinView::slotAboutToCreate(const QList& urls) } } +void DolphinView::slotItemCreated(const QUrl& url) +{ + if (m_markFirstNewlySelectedItemAsCurrent) { + markUrlAsCurrent(url); + m_markFirstNewlySelectedItemAsCurrent = false; + } + m_selectedUrls << url; +} + +void DolphinView::slotPasteJobResult(KJob *) +{ + if (!m_selectedUrls.isEmpty()) { + m_selectedUrls << KDirModel::simplifiedUrlList(m_selectedUrls); + } +} + void DolphinView::slotSelectionChanged(const KItemSet& current, const KItemSet& previous) { const int currentCount = current.count(); @@ -1649,12 +1669,12 @@ void DolphinView::applyModeToView() void DolphinView::pasteToUrl(const QUrl& url) { - KonqOperations* op = KonqOperations::doPaste(this, url); - if (op) { - m_clearSelectionBeforeSelectingNewItems = true; - m_markFirstNewlySelectedItemAsCurrent = true; - connect(op, static_cast&)>(&KonqOperations::aboutToCreate), this, &DolphinView::slotAboutToCreate); - } + KIO::PasteJob *job = KIO::paste(QApplication::clipboard()->mimeData(), url); + KJobWidgets::setWindow(job, this); + m_clearSelectionBeforeSelectingNewItems = true; + m_markFirstNewlySelectedItemAsCurrent = true; + connect(job, &KIO::PasteJob::itemCreated, this, &DolphinView::slotItemCreated); + connect(job, &KIO::PasteJob::result, this, &DolphinView::slotPasteJobResult); } QList DolphinView::simplifiedSelectedUrls() const diff --git a/src/views/dolphinview.h b/src/views/dolphinview.h index 17add7420d..2f7b63dd55 100644 --- a/src/views/dolphinview.h +++ b/src/views/dolphinview.h @@ -572,6 +572,11 @@ private slots: /* * Is called when new items get pasted or dropped. */ + void slotItemCreated(const QUrl &url); + /* + * Is called after all pasted or dropped items have been copied to destination. + */ + void slotPasteJobResult(KJob *job); void slotAboutToCreate(const QList &urls); /**