diff --git a/src/session/SessionController.cpp b/src/session/SessionController.cpp index c89b2ab22..a3bac0570 100644 --- a/src/session/SessionController.cpp +++ b/src/session/SessionController.cpp @@ -47,6 +47,7 @@ #include #include +#include #include #include @@ -1826,7 +1827,22 @@ void SessionController::showDisplayContextMenu(const QPoint &position) copy->setShortcut(Konsole::ACCEL | Qt::SHIFT | Qt::Key_C); #endif - QList toRemove; + const QUrl currentUrl = url().isLocalFile() ? url() : QUrl::fromLocalFile(QDir::homePath()); + KFileItem item(currentUrl); + + const auto old = popup->actions(); + + const KFileItemListProperties props({item}); + QScopedPointer ac(new KFileItemActions(popup)); + ac->setItemListProperties(props); + ac->insertOpenWithActionsTo(popup->actions().value(4, nullptr), popup, QStringList{qApp->desktopFileName()}); + + auto neu = popup->actions(); + for (auto* elm : old) { + neu.removeAll(elm); + } + + QList toRemove = std::move(neu); // prepend content-specific actions such as "Open Link", "Copy Email Address" etc QSharedPointer hotSpot = view()->filterActions(position); if (hotSpot != nullptr) {