┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dolphincontextmenu.cpp5
-rw-r--r--src/dolphinmainwindow.cpp4
-rw-r--r--src/dolphinui.rc11
-rw-r--r--src/views/dolphinview.cpp18
-rw-r--r--src/views/dolphinview.h5
-rw-r--r--src/views/dolphinviewactionhandler.cpp17
-rw-r--r--src/views/dolphinviewactionhandler.h5
7 files changed, 62 insertions, 3 deletions
diff --git a/src/dolphincontextmenu.cpp b/src/dolphincontextmenu.cpp
index e80283c58..912caf859 100644
--- a/src/dolphincontextmenu.cpp
+++ b/src/dolphincontextmenu.cpp
@@ -392,9 +392,12 @@ void DolphinContextMenu::insertDefaultItemActions(const KFileItemListProperties&
{
const KActionCollection* collection = m_mainWindow->actionCollection();
- // Insert 'Cut', 'Copy' and 'Paste'
+ // Insert 'Cut', 'Copy', 'Copy location' and 'Paste'
addAction(collection->action(KStandardAction::name(KStandardAction::Cut)));
addAction(collection->action(KStandardAction::name(KStandardAction::Copy)));
+ QAction* copyPathAction = collection->action(QString("copy_location"));
+ copyPathAction->setEnabled(m_selectedItems.size() == 1);
+ addAction(copyPathAction);
addAction(createPasteAction());
addAction(m_mainWindow->actionCollection()->action(QStringLiteral("duplicate")));
diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp
index d45b77676..5741e8943 100644
--- a/src/dolphinmainwindow.cpp
+++ b/src/dolphinmainwindow.cpp
@@ -1129,6 +1129,7 @@ void DolphinMainWindow::updateControlMenu()
// Add "Edit" actions
bool added = addActionToMenu(ac->action(KStandardAction::name(KStandardAction::Undo)), menu) |
+ addActionToMenu(ac->action(QString("copy_location")), menu) |
addActionToMenu(ac->action(QStringLiteral("copy_to_inactive_split_view")), menu) |
addActionToMenu(ac->action(QStringLiteral("move_to_inactive_split_view")), menu) |
addActionToMenu(ac->action(KStandardAction::name(KStandardAction::SelectAll)), menu) |
@@ -1911,6 +1912,7 @@ void DolphinMainWindow::updateFileAndEditActions()
QAction* addToPlacesAction = col->action(QStringLiteral("add_to_places"));
QAction* copyToOtherViewAction = col->action(QStringLiteral("copy_to_inactive_split_view"));
QAction* moveToOtherViewAction = col->action(QStringLiteral("move_to_inactive_split_view"));
+ QAction* copyLocation = col->action(QString("copy_location"));
if (list.isEmpty()) {
stateChanged(QStringLiteral("has_no_selection"));
@@ -1918,6 +1920,7 @@ void DolphinMainWindow::updateFileAndEditActions()
addToPlacesAction->setEnabled(true);
copyToOtherViewAction->setEnabled(false);
moveToOtherViewAction->setEnabled(false);
+ copyLocation->setEnabled(false);
} else {
stateChanged(QStringLiteral("has_selection"));
@@ -1959,6 +1962,7 @@ void DolphinMainWindow::updateFileAndEditActions()
deleteAction->setEnabled(capabilitiesSource.supportsDeleting());
deleteWithTrashShortcut->setEnabled(capabilitiesSource.supportsDeleting() && !enableMoveToTrash);
cutAction->setEnabled(capabilitiesSource.supportsMoving());
+ copyLocation->setEnabled(list.length() == 1);
showTarget->setEnabled(list.length() == 1 && list.at(0).isLink());
duplicateAction->setEnabled(capabilitiesSource.supportsWriting());
}
diff --git a/src/dolphinui.rc b/src/dolphinui.rc
index acb2f1dcd..46a4bac51 100644
--- a/src/dolphinui.rc
+++ b/src/dolphinui.rc
@@ -1,5 +1,5 @@
<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
-<kpartgui name="dolphin" version="31">
+<kpartgui name="dolphin" version="32">
<MenuBar>
<Menu name="file">
<Action name="new_menu" />
@@ -20,6 +20,15 @@
<Action name="properties" />
</Menu>
<Menu name="edit">
+ <Action name="edit_undo" />
+ <Separator />
+ <Action name="edit_cut" />
+ <Action name="edit_copy" />
+ <Action name="copy_location" />
+ <Action name="edit_paste" />
+ <Separator />
+ <Action name="edit_find" />
+ <Separator />
<Action name="copy_to_inactive_split_view" />
<Action name="move_to_inactive_split_view" />
<Action name="edit_select_all" />
diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp
index 9af691927..54f2f721d 100644
--- a/src/views/dolphinview.cpp
+++ b/src/views/dolphinview.cpp
@@ -1949,3 +1949,21 @@ void DolphinView::forceUrlsSelection(const QUrl& current, const QList<QUrl>& sel
markUrlAsCurrent(current);
markUrlsAsSelected(selected);
}
+
+void DolphinView::copyPathToClipboard()
+{
+ const KFileItemList list = selectedItems();
+ if (list.isEmpty()) {
+ return;
+ }
+ const KFileItem& item = list.at(0);
+ QString path = item.localPath();
+ if (path.isEmpty()) {
+ path = item.url().toDisplayString();
+ }
+ QClipboard* clipboard = QApplication::clipboard();
+ if (clipboard == nullptr) {
+ return;
+ }
+ clipboard->setText(path);
+}
diff --git a/src/views/dolphinview.h b/src/views/dolphinview.h
index 4306b3eb7..91203b8e0 100644
--- a/src/views/dolphinview.h
+++ b/src/views/dolphinview.h
@@ -391,6 +391,11 @@ public slots:
void pasteIntoFolder();
/**
+ * Copies the path of the first selected KFileItem into Clipboard.
+ */
+ void copyPathToClipboard();
+
+ /**
* Creates duplicates of selected items, appending "copy"
* to the end.
*/
diff --git a/src/views/dolphinviewactionhandler.cpp b/src/views/dolphinviewactionhandler.cpp
index e89e2e62c..29bd530b4 100644
--- a/src/views/dolphinviewactionhandler.cpp
+++ b/src/views/dolphinviewactionhandler.cpp
@@ -34,7 +34,6 @@
#include <KNewFileMenu>
#include <KPropertiesDialog>
#include <KProtocolManager>
-
#include <QMenu>
#include <QPointer>
@@ -156,6 +155,17 @@ void DolphinViewActionHandler::createActions()
m_actionCollection->setDefaultShortcuts(propertiesAction, {Qt::ALT + Qt::Key_Return, Qt::ALT + Qt::Key_Enter});
connect(propertiesAction, &QAction::triggered, this, &DolphinViewActionHandler::slotProperties);
+ QAction *copyPathAction = m_actionCollection->addAction( QStringLiteral("copy_location") );
+ copyPathAction->setText(i18nc("@action:incontextmenu", "Copy location"));
+ copyPathAction->setWhatsThis(i18nc("@info:whatsthis copy_location",
+ "This will copy the path of the first selected item into the clipboard."
+ ));
+
+ copyPathAction->setIcon(QIcon::fromTheme(QStringLiteral("edit-copy")));
+ m_actionCollection->setDefaultShortcuts(copyPathAction, {Qt::CTRL + Qt::SHIFT + Qt::Key_C});
+ connect(copyPathAction, &QAction::triggered, this, &DolphinViewActionHandler::slotCopyPath);
+
+
// View menu
KToggleAction* iconsAction = iconsModeAction();
KToggleAction* compactAction = compactModeAction();
@@ -709,3 +719,8 @@ void DolphinViewActionHandler::slotProperties()
dialog->raise();
dialog->activateWindow();
}
+
+void DolphinViewActionHandler::slotCopyPath()
+{
+ m_currentView->copyPathToClipboard();
+}
diff --git a/src/views/dolphinviewactionhandler.h b/src/views/dolphinviewactionhandler.h
index 3228e7364..d6b0d3b84 100644
--- a/src/views/dolphinviewactionhandler.h
+++ b/src/views/dolphinviewactionhandler.h
@@ -219,6 +219,11 @@ private Q_SLOTS:
*/
void slotProperties();
+ /**
+ * Copies the path of the first selected KFileItem into Clipboard.
+ */
+ void slotCopyPath();
+
private:
/**
* Create all the actions.