From 30ef90c3221ced0241a18f6f0ffe676b4480f900 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Mon, 23 Oct 2023 11:29:47 +0200 Subject: [PATCH] Terminal: add finished signal Change-Id: I9d560d1f1bbaa94ae75420002744073a1e8fad1a Reviewed-by: Marcus Tillmanns --- src/plugins/terminal/terminalwidget.cpp | 10 +++++----- src/plugins/terminal/terminalwidget.h | 1 + 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/plugins/terminal/terminalwidget.cpp b/src/plugins/terminal/terminalwidget.cpp index 604a0d82bc8..44b55c85960 100644 --- a/src/plugins/terminal/terminalwidget.cpp +++ b/src/plugins/terminal/terminalwidget.cpp @@ -151,10 +151,10 @@ void TerminalWidget::setupPty() connect(m_process.get(), &Process::done, this, [this] { QString errorMessage; + const int exitCode = QTC_GUARD(m_process) ? m_process->exitCode() : -1; if (m_process) { - if (m_process->exitCode() != 0) { - errorMessage - = Tr::tr("Terminal process exited with code %1").arg(m_process->exitCode()); + if (exitCode != 0) { + errorMessage = Tr::tr("Terminal process exited with code %1").arg(exitCode); if (!m_process->errorString().isEmpty()) errorMessage += QString(" (%1)").arg(m_process->errorString()); @@ -181,14 +181,14 @@ void TerminalWidget::setupPty() writeToTerminal(msg, true); } else { - QString exitMsg = Tr::tr("Process exited with code: %1") - .arg(m_process ? m_process->exitCode() : -1); + QString exitMsg = Tr::tr("Process exited with code: %1").arg(exitCode); QByteArray msg = QString("\r\n%1").arg(exitMsg).toUtf8(); writeToTerminal(msg, true); } } else if (!errorMessage.isEmpty()) { Core::MessageManager::writeFlashing(errorMessage); } + emit finised(exitCode); }); connect(m_process.get(), &Process::started, this, [this] { diff --git a/src/plugins/terminal/terminalwidget.h b/src/plugins/terminal/terminalwidget.h index e30366bf0cc..c19bc608b6e 100644 --- a/src/plugins/terminal/terminalwidget.h +++ b/src/plugins/terminal/terminalwidget.h @@ -50,6 +50,7 @@ public: signals: void started(qint64 pid); + void finised(int exitCode); void cwdChanged(const Utils::FilePath &cwd); void commandChanged(const Utils::CommandLine &cmd); void titleChanged();