ProcessResultData: Add a flag for forceful close

Whenever user calls terminate(), kill() or stop() this
sets the m_canceledByUser flag to true inside result().

Change-Id: Ic99642762868fd0a28193caa8ea05e165cb2a277
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Jarek Kobus
2022-10-10 11:55:33 +02:00
parent 9cb9bb0635
commit f0628c9b7d
2 changed files with 6 additions and 0 deletions

View File

@@ -48,6 +48,7 @@ public:
QProcess::ExitStatus m_exitStatus = QProcess::NormalExit;
QProcess::ProcessError m_error = QProcess::UnknownError;
QString m_errorString;
bool m_canceledByUser = false;
};
enum class ControlSignal {

View File

@@ -940,6 +940,9 @@ void QtcProcessPrivate::sendControlSignal(ControlSignal controlSignal)
if (!m_process || (m_state == QProcess::NotRunning))
return;
if (controlSignal == ControlSignal::Terminate || controlSignal == ControlSignal::Kill)
m_resultData.m_canceledByUser = true;
QMetaObject::invokeMethod(m_process.get(), [this, controlSignal] {
m_process->sendControlSignal(controlSignal);
}, connectionType());
@@ -1958,7 +1961,9 @@ void QtcProcessPrivate::handleReadyRead(const QByteArray &outputData, const QByt
void QtcProcessPrivate::handleDone(const ProcessResultData &data)
{
m_killTimer.stop();
const bool wasCanceled = m_resultData.m_canceledByUser;
m_resultData = data;
m_resultData.m_canceledByUser = wasCanceled;
switch (m_state) {
case QProcess::NotRunning: