forked from qt-creator/qt-creator
Terminal: Fix Id
m_commandLine is not useful to distinguish terminals as it may contain wrapper scripts with temporary arguments that make each invocation of a target spawn a new terminal window. Instead use the provided "shell name". Also make sure to use the actual target name as the shell name in runcontrol. Fixes: QTCREATORBUG-32197 Change-Id: I8c0760be375d559391dbd831080aa7153786f411 Reviewed-by: Cristian Adam <cristian.adam@qt.io>
This commit is contained in:
@@ -1586,7 +1586,8 @@ void SimpleTargetRunnerPrivate::start()
|
|||||||
m_stopRequested = false;
|
m_stopRequested = false;
|
||||||
|
|
||||||
QVariantHash extraData = m_extraData;
|
QVariantHash extraData = m_extraData;
|
||||||
extraData[TERMINAL_SHELL_NAME] = m_command.executable().fileName();
|
extraData[TERMINAL_SHELL_NAME]
|
||||||
|
= q->runControl()->target()->activeRunConfiguration()->displayName();
|
||||||
|
|
||||||
m_process.setCommand(cmdLine);
|
m_process.setCommand(cmdLine);
|
||||||
m_process.setEnvironment(env);
|
m_process.setEnvironment(env);
|
||||||
|
@@ -35,7 +35,12 @@ public:
|
|||||||
return m_fallbackStubCreator->startStubProcess(setup);
|
return m_fallbackStubCreator->startStubProcess(setup);
|
||||||
}
|
}
|
||||||
|
|
||||||
const Id id = Id::fromString(setup.m_commandLine.toUserOutput());
|
const QString shellName
|
||||||
|
= setup.m_extraData
|
||||||
|
.value(TERMINAL_SHELL_NAME, setup.m_commandLine.executable().fileName())
|
||||||
|
.toString();
|
||||||
|
|
||||||
|
const Id id = Id::fromString(shellName);
|
||||||
|
|
||||||
TerminalWidget *terminal = m_terminalPane->stoppedTerminalWithId(id);
|
TerminalWidget *terminal = m_terminalPane->stoppedTerminalWithId(id);
|
||||||
|
|
||||||
@@ -45,14 +50,10 @@ public:
|
|||||||
|
|
||||||
if (!terminal) {
|
if (!terminal) {
|
||||||
terminal = new TerminalWidget(nullptr, openParameters);
|
terminal = new TerminalWidget(nullptr, openParameters);
|
||||||
|
terminal->setShellName(shellName);
|
||||||
terminal->setShellName(
|
|
||||||
setup.m_extraData
|
|
||||||
.value(TERMINAL_SHELL_NAME, setup.m_commandLine.executable().fileName())
|
|
||||||
.toString());
|
|
||||||
|
|
||||||
m_terminalPane->addTerminal(terminal, "App");
|
m_terminalPane->addTerminal(terminal, "App");
|
||||||
} else {
|
} else {
|
||||||
|
terminal->setShellName(shellName);
|
||||||
terminal->restart(openParameters);
|
terminal->restart(openParameters);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user