Terminal: External terminal if blocked by modal

Change-Id: I89ba438c7a9f4d593e849b9b7ca2daf202cca625
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Marcus Tillmanns
2023-05-25 10:56:07 +02:00
parent 0d95c68b21
commit 06365fa39f
6 changed files with 136 additions and 98 deletions

View File

@@ -4,7 +4,9 @@
#include "terminalprocessimpl.h"
#include "terminalwidget.h"
#include <QCoreApplication>
#include <utils/externalterminalprocessimpl.h>
#include <QApplication>
#include <QLocalServer>
#include <QLocalSocket>
#include <QLoggingCategory>
@@ -24,10 +26,16 @@ public:
ProcessStubCreator(TerminalProcessImpl *interface, TerminalPane *terminalPane)
: m_terminalPane(terminalPane)
, m_process(interface)
, m_interface(interface)
{}
expected_str<qint64> startStubProcess(const ProcessSetupData &setup) override
{
if (QApplication::activeModalWidget()) {
m_fallbackStubCreator = std::make_unique<Utils::ProcessStubCreator>(m_interface);
return m_fallbackStubCreator->startStubProcess(setup);
}
const Id id = Id::fromString(setup.m_commandLine.executable().toUserOutput());
TerminalWidget *terminal = m_terminalPane->stoppedTerminalWithId(id);
@@ -59,6 +67,8 @@ public:
TerminalPane *m_terminalPane;
TerminalProcessImpl *m_process;
TerminalInterface *m_interface;
std::unique_ptr<Utils::ProcessStubCreator> m_fallbackStubCreator;
};
TerminalProcessImpl::TerminalProcessImpl(TerminalPane *terminalPane)