diff options
| author | Eugene Popov <[email protected]> | 2023-12-28 12:06:09 +0200 |
|---|---|---|
| committer | Méven Car <[email protected]> | 2024-01-13 08:28:52 +0000 |
| commit | c8dffc433caacc9955b3054f6255ae50176e5533 (patch) | |
| tree | ee4e4a9be6bd8d753fefe999daec5f49470b6455 | |
| parent | 3619e74eb17f8ed2e76dadbef9c052304decd18b (diff) | |
Always automatically choose a new file name while duplicating
Since now when duplicating items we automatically generate a name for the new item, we can do the same if an item with that name already exists.
BUG: 475410
| -rw-r--r-- | src/views/dolphinview.cpp | 21 | ||||
| -rw-r--r-- | src/views/dolphinview.h | 1 |
2 files changed, 15 insertions, 7 deletions
diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp index d51ed0e06..6b77a46ea 100644 --- a/src/views/dolphinview.cpp +++ b/src/views/dolphinview.cpp @@ -863,9 +863,12 @@ void DolphinView::duplicateSelectedItems() const QMimeDatabase db; + m_clearSelectionBeforeSelectingNewItems = true; + m_markFirstNewlySelectedItemAsCurrent = true; + m_selectJobCreatedItems = true; + // Duplicate all selected items and append "copy" to the end of the file name // but before the filename extension, if present - QList<QUrl> newSelection; for (const auto &item : itemList) { const QUrl originalURL = item.url(); const QString originalDirectoryPath = originalURL.adjusted(QUrl::RemoveFilename).path(); @@ -890,15 +893,14 @@ void DolphinView::duplicateSelectedItems() } KIO::CopyJob *job = KIO::copyAs(originalURL, duplicateURL); + job->setAutoRename(true); KJobWidgets::setWindow(job, this); - if (job) { - newSelection << duplicateURL; - KIO::FileUndoManager::self()->recordCopyJob(job); - } + connect(job, &KIO::CopyJob::result, this, &DolphinView::slotJobResult); + connect(job, &KIO::CopyJob::copyingDone, this, &DolphinView::slotItemCreatedFromJob); + connect(job, &KIO::CopyJob::copyingLinkDone, this, &DolphinView::slotItemLinkCreatedFromJob); + KIO::FileUndoManager::self()->recordCopyJob(job); } - - forceUrlsSelection(newSelection.first(), newSelection); } void DolphinView::stopLoading() @@ -1422,6 +1424,11 @@ void DolphinView::slotItemCreatedFromJob(KIO::Job *, const QUrl &, const QUrl &t slotItemCreated(to); } +void DolphinView::slotItemLinkCreatedFromJob(KIO::Job *, const QUrl &, const QString &, const QUrl &to) +{ + slotItemCreated(to); +} + void DolphinView::slotItemCreated(const QUrl &url) { if (m_markFirstNewlySelectedItemAsCurrent) { diff --git a/src/views/dolphinview.h b/src/views/dolphinview.h index c1463de6d..d4f82ae2f 100644 --- a/src/views/dolphinview.h +++ b/src/views/dolphinview.h @@ -695,6 +695,7 @@ private Q_SLOTS: void slotRenameDialogRenamingFinished(const QList<QUrl> &urls); void slotSelectedItemTextPressed(int index); void slotItemCreatedFromJob(KIO::Job *, const QUrl &, const QUrl &to); + void slotItemLinkCreatedFromJob(KIO::Job *, const QUrl &, const QString &, const QUrl &to); void slotIncreaseZoom(); void slotDecreaseZoom(); void slotSwipeUp(); |
