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
project(Dolphin VERSION ${RELEASE_SERVICE_VERSION})
set(QT_MIN_VERSION "5.15.0")
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)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
#include <KStandardAction>
#include <KStartupInfo>
#include <KSycoca>
#include <KStandardAction>
#include <KStartupInfo>
#include <KSycoca>
+#include <KTerminalLauncherJob>
#include <KToggleAction>
#include <KToolBar>
#include <KToolBarPopupAction>
#include <KToggleAction>
#include <KToolBar>
#include <KToolBarPopupAction>
-#include <KToolInvocation>
#include <KUrlComboBox>
#include <KUrlNavigator>
#include <KWindowSystem>
#include <KUrlComboBox>
#include <KUrlNavigator>
#include <KWindowSystem>
const QUrl url = m_activeViewContainer->url();
if (url.isLocalFile()) {
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();
statUrl = job->mostLocalUrl();
}
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
});
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()
}
void DolphinMainWindow::editSettings()
#include <KPluginFactory>
#include <KIO/CommandLauncherJob>
#include <KSharedConfig>
#include <KPluginFactory>
#include <KIO/CommandLauncherJob>
#include <KSharedConfig>
-#include <KToolInvocation>
+#include <KTerminalLauncherJob>
#include <QActionGroup>
#include <QApplication>
#include <QActionGroup>
#include <QApplication>
void DolphinPart::slotOpenTerminal()
{
void DolphinPart::slotOpenTerminal()
{
- KToolInvocation::invokeTerminal(QString(), {}, localFilePathOrHome());
+ auto job = new KTerminalLauncherJob(QString());
+ job->setWorkingDirectory(localFilePathOrHome());
+ job->start();
}
void DolphinPart::slotFindFile()
}
void DolphinPart::slotFindFile()