forked from qt-creator/qt-creator
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:
@@ -48,6 +48,7 @@ public:
|
|||||||
QProcess::ExitStatus m_exitStatus = QProcess::NormalExit;
|
QProcess::ExitStatus m_exitStatus = QProcess::NormalExit;
|
||||||
QProcess::ProcessError m_error = QProcess::UnknownError;
|
QProcess::ProcessError m_error = QProcess::UnknownError;
|
||||||
QString m_errorString;
|
QString m_errorString;
|
||||||
|
bool m_canceledByUser = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class ControlSignal {
|
enum class ControlSignal {
|
||||||
|
@@ -940,6 +940,9 @@ void QtcProcessPrivate::sendControlSignal(ControlSignal controlSignal)
|
|||||||
if (!m_process || (m_state == QProcess::NotRunning))
|
if (!m_process || (m_state == QProcess::NotRunning))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (controlSignal == ControlSignal::Terminate || controlSignal == ControlSignal::Kill)
|
||||||
|
m_resultData.m_canceledByUser = true;
|
||||||
|
|
||||||
QMetaObject::invokeMethod(m_process.get(), [this, controlSignal] {
|
QMetaObject::invokeMethod(m_process.get(), [this, controlSignal] {
|
||||||
m_process->sendControlSignal(controlSignal);
|
m_process->sendControlSignal(controlSignal);
|
||||||
}, connectionType());
|
}, connectionType());
|
||||||
@@ -1958,7 +1961,9 @@ void QtcProcessPrivate::handleReadyRead(const QByteArray &outputData, const QByt
|
|||||||
void QtcProcessPrivate::handleDone(const ProcessResultData &data)
|
void QtcProcessPrivate::handleDone(const ProcessResultData &data)
|
||||||
{
|
{
|
||||||
m_killTimer.stop();
|
m_killTimer.stop();
|
||||||
|
const bool wasCanceled = m_resultData.m_canceledByUser;
|
||||||
m_resultData = data;
|
m_resultData = data;
|
||||||
|
m_resultData.m_canceledByUser = wasCanceled;
|
||||||
|
|
||||||
switch (m_state) {
|
switch (m_state) {
|
||||||
case QProcess::NotRunning:
|
case QProcess::NotRunning:
|
||||||
|
Reference in New Issue
Block a user