summaryrefslogtreecommitdiffstats
path: root/source/kde/kde/patch/plasma-desktop/b893a37fd9b3b5c28173c68ba963fb866a5ac0ed.patch
diff options
context:
space:
mode:
Diffstat (limited to 'source/kde/kde/patch/plasma-desktop/b893a37fd9b3b5c28173c68ba963fb866a5ac0ed.patch')
-rw-r--r--source/kde/kde/patch/plasma-desktop/b893a37fd9b3b5c28173c68ba963fb866a5ac0ed.patch142
1 files changed, 142 insertions, 0 deletions
diff --git a/source/kde/kde/patch/plasma-desktop/b893a37fd9b3b5c28173c68ba963fb866a5ac0ed.patch b/source/kde/kde/patch/plasma-desktop/b893a37fd9b3b5c28173c68ba963fb866a5ac0ed.patch
new file mode 100644
index 00000000..c602e704
--- /dev/null
+++ b/source/kde/kde/patch/plasma-desktop/b893a37fd9b3b5c28173c68ba963fb866a5ac0ed.patch
@@ -0,0 +1,142 @@
+From b893a37fd9b3b5c28173c68ba963fb866a5ac0ed Mon Sep 17 00:00:00 2001
+From: Fabio Bas <fabio.bas@officineinformatiche.net>
+Date: Mon, 18 Oct 2021 21:41:17 +0200
+Subject: [PATCH] Desktop as folder: restore functionality of the "delete"
+ action
+
+MR552 introduced RemoveAction but broke functionality of the "delete" action
+when both the "trash" and "delete" actions are shown in the menu by requiring
+the "shift" key being pressed for the action to work.
+
+BUG: 442765
+---
+ .../desktop/plugins/folder/foldermodel.cpp | 52 ++++++++++++-------
+ .../desktop/plugins/folder/foldermodel.h | 1 +
+ 2 files changed, 34 insertions(+), 19 deletions(-)
+
+diff --git a/containments/desktop/plugins/folder/foldermodel.cpp b/containments/desktop/plugins/folder/foldermodel.cpp
+index ee03f6de9..68f404fad 100644
+--- a/containments/desktop/plugins/folder/foldermodel.cpp
++++ b/containments/desktop/plugins/folder/foldermodel.cpp
+@@ -1599,6 +1599,7 @@ void FolderModel::createActions()
+
+ QAction *rename = KStandardAction::renameFile(this, &FolderModel::requestRename, this);
+ QAction *trash = KStandardAction::moveToTrash(this, &FolderModel::moveSelectedToTrash, this);
++ QAction *del = KStandardAction::deleteFile(this, &FolderModel::deleteSelected, this);
+ RemoveAction *remove = new RemoveAction(&m_actionCollection, this);
+
+ QAction *emptyTrash = new QAction(QIcon::fromTheme(QStringLiteral("trash-empty")), i18n("&Empty Trash"), this);
+@@ -1607,8 +1608,6 @@ void FolderModel::createActions()
+ QAction *restoreFromTrash = new QAction(i18nc("Restore from trash", "Restore"), this);
+ connect(restoreFromTrash, &QAction::triggered, this, &FolderModel::restoreSelectedFromTrash);
+
+- QAction *del = KStandardAction::deleteFile(this, &FolderModel::deleteSelected, this);
+-
+ QAction *actOpen = new QAction(QIcon::fromTheme(QStringLiteral("window-new")), i18n("&Open"), this);
+ connect(actOpen, &QAction::triggered, this, &FolderModel::openSelected);
+
+@@ -1803,20 +1802,20 @@ void FolderModel::openContextMenu(QQuickItem *visualParent, Qt::KeyboardModifier
+ menu->addSeparator();
+ menu->addAction(m_actionCollection.action(QStringLiteral("restoreFromTrash")));
+
+- KConfigGroup cg(KSharedConfig::openConfig(), "KDE");
+- bool showDeleteCommand = cg.readEntry("ShowDeleteCommand", false);
+-
+- if (showDeleteCommand) {
++ if (isDeleteCommandShown()) {
+ QAction *trashAction = m_actionCollection.action(QStringLiteral("trash"));
+ QAction *deleteAction = m_actionCollection.action(QStringLiteral("del"));
+- deleteAction->setVisible(showDeleteCommand);
+- trashAction->setVisible(showDeleteCommand);
+ menu->addAction(trashAction);
+ menu->addAction(deleteAction);
+ } else {
+ if (RemoveAction *removeAction = qobject_cast<RemoveAction *>(m_actionCollection.action(QStringLiteral("remove")))) {
+ removeAction->update();
+ menu->addAction(removeAction);
++
++ // Used to monitor Shift modifier usage while the menu is open, to
++ // swap the Trash and Delete actions.
++ menu->installEventFilter(removeAction);
++ QCoreApplication::instance()->installEventFilter(removeAction);
+ }
+ }
+
+@@ -1852,13 +1851,6 @@ void FolderModel::openContextMenu(QQuickItem *visualParent, Qt::KeyboardModifier
+ menu->windowHandle()->setTransientParent(visualParent->window());
+ }
+
+- // Used to monitor Shift modifier usage while the menu is open, to
+- // swap the Trash and Delete actions.
+- if (RemoveAction *removeAction = qobject_cast<RemoveAction *>(m_actionCollection.action(QStringLiteral("remove")))) {
+- menu->installEventFilter(removeAction);
+- QCoreApplication::instance()->installEventFilter(removeAction);
+- }
+-
+ menu->popup(m_menuPosition);
+ connect(menu, &QMenu::aboutToHide, [menu]() {
+ menu->deleteLater();
+@@ -2007,8 +1999,16 @@ void FolderModel::moveSelectedToTrash()
+ return;
+ }
+
+- if (RemoveAction *action = qobject_cast<RemoveAction *>(m_actionCollection.action(QStringLiteral("remove")))) {
+- if (action->proxyAction() != m_actionCollection.action(QStringLiteral("trash"))) {
++ if (!isDeleteCommandShown()) {
++ if (RemoveAction *action = qobject_cast<RemoveAction *>(m_actionCollection.action(QStringLiteral("remove")))) {
++ if (action->proxyAction() != m_actionCollection.action(QStringLiteral("trash"))) {
++ return;
++ }
++ }
++ }
++
++ if (QAction *action = m_actionCollection.action(QStringLiteral("trash"))) {
++ if (!action->isEnabled()) {
+ return;
+ }
+ }
+@@ -2029,8 +2029,16 @@ void FolderModel::deleteSelected()
+ return;
+ }
+
+- if (RemoveAction *action = qobject_cast<RemoveAction *>(m_actionCollection.action(QStringLiteral("remove")))) {
+- if (action->proxyAction() != m_actionCollection.action(QStringLiteral("del"))) {
++ if (!isDeleteCommandShown()) {
++ if (RemoveAction *action = qobject_cast<RemoveAction *>(m_actionCollection.action(QStringLiteral("remove")))) {
++ if (action->proxyAction() != m_actionCollection.action(QStringLiteral("del"))) {
++ return;
++ }
++ }
++ }
++
++ if (QAction *action = m_actionCollection.action(QStringLiteral("del"))) {
++ if (!action->isEnabled()) {
+ return;
+ }
+ }
+@@ -2107,3 +2115,9 @@ void FolderModel::createFolder()
+ m_newMenu->setPopupFiles(QList<QUrl>() << m_dirModel->dirLister()->url());
+ m_newMenu->createDirectory();
+ }
++
++bool FolderModel::isDeleteCommandShown()
++{
++ KConfigGroup cg(KSharedConfig::openConfig(), "KDE");
++ return cg.readEntry("ShowDeleteCommand", false);
++}
+diff --git a/containments/desktop/plugins/folder/foldermodel.h b/containments/desktop/plugins/folder/foldermodel.h
+index e6a908624..74fdaaec0 100644
+--- a/containments/desktop/plugins/folder/foldermodel.h
++++ b/containments/desktop/plugins/folder/foldermodel.h
+@@ -301,6 +301,7 @@ private:
+ void addDragImage(QDrag *drag, int x, int y);
+ void setStatus(Status status);
+ static bool isTrashEmpty();
++ static bool isDeleteCommandShown();
+ QList<QUrl> selectedUrls() const;
+ KDirModel *m_dirModel;
+ KDirWatch *m_dirWatch;
+--
+GitLab
+
+