Commit 27bfcde4 authored by Nate Graham's avatar Nate Graham
Browse files

Port to KTerminalLauncherJob

Dolphin still uses KToolInvocation::invokeTerminal() which is
deprecated and requires KInit. However Dolphin was ported away from
requiring it in other ways, so it is now possible to have Dolphin
running but not KInit, which breaks the "Open in Terminal"
functionality.

Using KTerminalLauncherJob fixes this. It was introduced in Frameworks
5.83, so the CMake dependency version is accordingly increased.

BUG: 441072
FIXED-IN: 21.12
parent 653d5714
Pipeline #77751 passed with stage
in 5 minutes and 33 seconds
......@@ -8,7 +8,7 @@ set (RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE
project(Dolphin VERSION ${RELEASE_SERVICE_VERSION})
set(QT_MIN_VERSION "5.15.0")
set(KF5_MIN_VERSION "5.82.0")
set(KF5_MIN_VERSION "5.83.0")
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
......
......@@ -56,10 +56,10 @@
#include <KStandardAction>
#include <KStartupInfo>
#include <KSycoca>
#include <KTerminalLauncherJob>
#include <KToggleAction>
#include <KToolBar>
#include <KToolBarPopupAction>
#include <KToolInvocation>
#include <KUrlComboBox>
#include <KUrlNavigator>
#include <KWindowSystem>
......@@ -1033,7 +1033,9 @@ void DolphinMainWindow::openTerminal()
const QUrl url = m_activeViewContainer->url();
if (url.isLocalFile()) {
KToolInvocation::invokeTerminal(QString(), {}, url.toLocalFile());
auto job = new KTerminalLauncherJob(QString());
job->setWorkingDirectory(url.toLocalFile());
job->start();
return;
}
......@@ -1047,14 +1049,18 @@ void DolphinMainWindow::openTerminal()
statUrl = job->mostLocalUrl();
}
KToolInvocation::invokeTerminal(QString(), {}, statUrl.isLocalFile() ? statUrl.toLocalFile() : QDir::homePath());
auto job = new KTerminalLauncherJob(QString());
job->setWorkingDirectory(statUrl.isLocalFile() ? statUrl.toLocalFile() : QDir::homePath());
job->start();
});
return;
}
// Nothing worked, just use $HOME
KToolInvocation::invokeTerminal(QString(), {}, QDir::homePath());
auto job = new KTerminalLauncherJob(QString());
job->setWorkingDirectory(QDir::homePath());
job->start();
}
void DolphinMainWindow::editSettings()
......
......@@ -32,7 +32,7 @@
#include <KPluginFactory>
#include <KIO/CommandLauncherJob>
#include <KSharedConfig>
#include <KToolInvocation>
#include <KTerminalLauncherJob>
#include <QActionGroup>
#include <QApplication>
......@@ -567,7 +567,9 @@ QString DolphinPart::localFilePathOrHome() const
void DolphinPart::slotOpenTerminal()
{
KToolInvocation::invokeTerminal(QString(), {}, localFilePathOrHome());
auto job = new KTerminalLauncherJob(QString());
job->setWorkingDirectory(localFilePathOrHome());
job->start();
}
void DolphinPart::slotFindFile()
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment