diff options
| author | Elvis Angelaccio <[email protected]> | 2017-09-17 11:56:42 +0200 |
|---|---|---|
| committer | Elvis Angelaccio <[email protected]> | 2017-09-17 11:56:42 +0200 |
| commit | 49396318f0f37f913a91bf02484a16e34fec6bf4 (patch) | |
| tree | 8d8274df0e2b71aab201eb16679243cff573695d /src | |
| parent | d1b68db1a348f22eb8f6b6ffaae5097820385e83 (diff) | |
| parent | 478f404b8abf924a0e3e21bbf1dd49aefbe47672 (diff) | |
Merge branch 'Applications/17.08'
Diffstat (limited to 'src')
| -rw-r--r-- | src/dolphinremoveaction.cpp | 10 | ||||
| -rw-r--r-- | src/views/dolphinview.cpp | 22 | ||||
| -rw-r--r-- | src/views/dolphinview.h | 9 | ||||
| -rw-r--r-- | src/views/dolphinviewactionhandler.cpp | 7 | ||||
| -rw-r--r-- | src/views/renamedialog.cpp | 9 | ||||
| -rw-r--r-- | src/views/renamedialog.h | 4 |
6 files changed, 55 insertions, 6 deletions
diff --git a/src/dolphinremoveaction.cpp b/src/dolphinremoveaction.cpp index ce3059934..ab1117770 100644 --- a/src/dolphinremoveaction.cpp +++ b/src/dolphinremoveaction.cpp @@ -52,11 +52,18 @@ void DolphinRemoveAction::update(ShiftState shiftState) } switch (shiftState) { - case ShiftState::Pressed: + case ShiftState::Pressed: { m_action = m_collection->action(KStandardAction::name(KStandardAction::DeleteFile)); + // Make sure we show Shift+Del in the context menu. + auto deleteShortcuts = m_action->shortcuts(); + deleteShortcuts.removeAll(Qt::SHIFT | Qt::Key_Delete); + deleteShortcuts.prepend(Qt::SHIFT | Qt::Key_Delete); + m_collection->setDefaultShortcuts(this, deleteShortcuts); break; + } case ShiftState::Released: m_action = m_collection->action(KStandardAction::name(KStandardAction::MoveToTrash)); + m_collection->setDefaultShortcuts(this, m_action->shortcuts()); break; case ShiftState::Unknown: Q_UNREACHABLE(); @@ -66,7 +73,6 @@ void DolphinRemoveAction::update(ShiftState shiftState) if (m_action) { setText(m_action->text()); setIcon(m_action->icon()); - m_collection->setDefaultShortcuts(this, m_action->shortcuts()); setEnabled(m_action->isEnabled()); } } diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp index 5fcec9241..2ca51f52d 100644 --- a/src/views/dolphinview.cpp +++ b/src/views/dolphinview.cpp @@ -635,6 +635,9 @@ void DolphinView::renameSelectedItems() this, &DolphinView::slotRoleEditingFinished); } else { RenameDialog* dialog = new RenameDialog(this, items); + + connect(dialog, &RenameDialog::renamingFinished, this, &DolphinView::slotRenameDialogRenamingFinished); + dialog->setAttribute(Qt::WA_DeleteOnClose); dialog->show(); dialog->raise(); @@ -1308,9 +1311,7 @@ QUrl DolphinView::openItemAsFolderUrl(const KFileItem& item, const bool browseTh void DolphinView::observeCreatedItem(const QUrl& url) { if (m_active) { - clearSelection(); - markUrlAsCurrent(url); - markUrlsAsSelected({url}); + forceUrlsSelection(url, {url}); } } @@ -1541,6 +1542,8 @@ void DolphinView::slotRoleEditingFinished(int index, const QByteArray& role, con KIO::FileUndoManager::self()->recordJob(KIO::FileUndoManager::Rename, {oldUrl}, newUrl, job); job->uiDelegate()->setAutoErrorHandlingEnabled(true); + forceUrlsSelection(newUrl, {newUrl}); + if (!newNameExistsAlready) { // Only connect the result signal if there is no item with the new name // in the model yet, see bug 328262. @@ -1747,3 +1750,16 @@ QUrl DolphinView::viewPropertiesUrl() const url.setPath(m_viewPropertiesContext); return url; } + +void DolphinView::slotRenameDialogRenamingFinished(const QList<QUrl>& urls) +{ + forceUrlsSelection(urls.first(), urls); +} + +void DolphinView::forceUrlsSelection(const QUrl& current, const QList<QUrl>& selected) +{ + clearSelection(); + m_clearSelectionBeforeSelectingNewItems = true; + markUrlAsCurrent(current); + markUrlsAsSelected(selected); +} diff --git a/src/views/dolphinview.h b/src/views/dolphinview.h index 5c832efd1..911103b5d 100644 --- a/src/views/dolphinview.h +++ b/src/views/dolphinview.h @@ -576,6 +576,7 @@ private slots: void slotItemDropEvent(int index, QGraphicsSceneDragDropEvent* event); void slotModelChanged(KItemModelBase* current, KItemModelBase* previous); void slotMouseButtonPressed(int itemIndex, Qt::MouseButtons buttons); + void slotRenameDialogRenamingFinished(const QList<QUrl>& urls); /* * Is called when new items get pasted or dropped. @@ -760,6 +761,14 @@ private: */ QUrl viewPropertiesUrl() const; + /** + * Clears the selection and updates current item and selection according to the parameters + * + * @param current URL to be set as current + * @param selected list of selected items + */ + void forceUrlsSelection(const QUrl& current, const QList<QUrl>& selected); + private: void updatePalette(); diff --git a/src/views/dolphinviewactionhandler.cpp b/src/views/dolphinviewactionhandler.cpp index 447d46f53..d0b9e7dc1 100644 --- a/src/views/dolphinviewactionhandler.cpp +++ b/src/views/dolphinviewactionhandler.cpp @@ -110,7 +110,12 @@ void DolphinViewActionHandler::createActions() KStandardAction::renameFile(this, &DolphinViewActionHandler::slotRename, m_actionCollection); KStandardAction::moveToTrash(this, &DolphinViewActionHandler::slotTrashActivated, m_actionCollection); - KStandardAction::deleteFile(this, &DolphinViewActionHandler::slotDeleteItems, m_actionCollection); + auto deleteAction = KStandardAction::deleteFile(this, &DolphinViewActionHandler::slotDeleteItems, m_actionCollection); + auto deleteShortcuts = deleteAction->shortcuts(); + if (!deleteShortcuts.contains(Qt::SHIFT | Qt::Key_Delete)) { + deleteShortcuts.append(Qt::SHIFT | Qt::Key_Delete); + m_actionCollection->setDefaultShortcuts(deleteAction, deleteShortcuts); + } // This action is useful for being enabled when KStandardAction::MoveToTrash should be // disabled and KStandardAction::DeleteFile is enabled (e.g. non-local files), so that Key_Del diff --git a/src/views/renamedialog.cpp b/src/views/renamedialog.cpp index df4827b3a..6309bfbdf 100644 --- a/src/views/renamedialog.cpp +++ b/src/views/renamedialog.cpp @@ -162,6 +162,11 @@ void RenameDialog::renameItem(const KFileItem &item, const QString& newName) KIO::Job * job = KIO::moveAs(oldUrl, newUrl, KIO::HideProgressInfo); KJobWidgets::setWindow(job, widget); KIO::FileUndoManager::self()->recordJob(KIO::FileUndoManager::Rename, {oldUrl}, newUrl, job); + + if (!job->error()) { + m_renamedItems << newUrl; + } + job->uiDelegate()->setAutoErrorHandlingEnabled(true); } @@ -223,6 +228,10 @@ void RenameDialog::renameItems() renameItem(item, newName); } } + + if (!m_items.empty()) { + emit renamingFinished(m_renamedItems); + } } QString RenameDialog::indexedName(const QString& name, int index, const QChar& indexPlaceHolder) diff --git a/src/views/renamedialog.h b/src/views/renamedialog.h index 3964c0a5c..7ead0ca9f 100644 --- a/src/views/renamedialog.h +++ b/src/views/renamedialog.h @@ -41,6 +41,9 @@ public: explicit RenameDialog(QWidget* parent, const KFileItemList& items); virtual ~RenameDialog(); +signals: + void renamingFinished(const QList<QUrl>& urls); + private slots: void slotAccepted(); void slotTextChanged(const QString& newName); @@ -63,6 +66,7 @@ private: private: bool m_renameOneItem; + QList<QUrl> m_renamedItems; QString m_newName; QLineEdit* m_lineEdit; KFileItemList m_items; |
