┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElvis Angelaccio <[email protected]>2017-09-17 11:56:42 +0200
committerElvis Angelaccio <[email protected]>2017-09-17 11:56:42 +0200
commit49396318f0f37f913a91bf02484a16e34fec6bf4 (patch)
tree8d8274df0e2b71aab201eb16679243cff573695d
parentd1b68db1a348f22eb8f6b6ffaae5097820385e83 (diff)
parent478f404b8abf924a0e3e21bbf1dd49aefbe47672 (diff)
Merge branch 'Applications/17.08'
-rw-r--r--src/dolphinremoveaction.cpp10
-rw-r--r--src/views/dolphinview.cpp22
-rw-r--r--src/views/dolphinview.h9
-rw-r--r--src/views/dolphinviewactionhandler.cpp7
-rw-r--r--src/views/renamedialog.cpp9
-rw-r--r--src/views/renamedialog.h4
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;