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:
parent
653d5714a7
commit
27bfcde4ef
|
@ -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()
|
||||
|
|
Loading…
Reference in New Issue
Block a user