1
0
mirror of https://invent.kde.org/system/dolphin synced 2024-07-04 17:30:55 +00:00

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
This commit is contained in:
Nate Graham 2021-08-31 09:09:14 -06:00
parent 653d5714a7
commit 27bfcde4ef
3 changed files with 15 additions and 7 deletions

View File

@ -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)

View File

@ -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()

View File

@ -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()