diff options
Diffstat (limited to 'source/kde/kde/patch/plasma-desktop/b893a37fd9b3b5c28173c68ba963fb866a5ac0ed.patch')
-rw-r--r-- | source/kde/kde/patch/plasma-desktop/b893a37fd9b3b5c28173c68ba963fb866a5ac0ed.patch | 142 |
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 000000000..c602e7046 --- /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 + + |