forked from qt-creator/qt-creator
Pass this context object to the connect()
Otherwise when "this" instance gets deleted and the sender still exists, the lambda expression is still invoked for the deleted object. Task-number: QTCREATORBUG-20223 Change-Id: Ifd5c9e6ce1fe7fde71698c6683cdfcd7566e8d35 Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
@@ -304,7 +304,7 @@ void GitDiffEditorController::updateBranchList()
|
||||
VcsCommand *command = GitPlugin::client()->vcsExec(
|
||||
workingDirectory, {"branch", noColorOption, "-a", "--contains", revision}, nullptr,
|
||||
false, 0, workingDirectory);
|
||||
connect(command, &VcsCommand::stdOutText, [this](const QString &text) {
|
||||
connect(command, &VcsCommand::stdOutText, this, [this](const QString &text) {
|
||||
const QString remotePrefix = "remotes/";
|
||||
const QString localPrefix = "<Local>";
|
||||
const int prefixLength = remotePrefix.length();
|
||||
@@ -830,12 +830,12 @@ void GitClient::chunkActionsRequested(QMenu *menu, int fileIndex, int chunkIndex
|
||||
|
||||
menu->addSeparator();
|
||||
QAction *stageChunkAction = menu->addAction(tr("Stage Chunk"));
|
||||
connect(stageChunkAction, &QAction::triggered,
|
||||
connect(stageChunkAction, &QAction::triggered, this,
|
||||
[this, stageChunk, diffController, fileIndex, chunkIndex]() {
|
||||
stageChunk(diffController, fileIndex, chunkIndex, false);
|
||||
});
|
||||
QAction *unstageChunkAction = menu->addAction(tr("Unstage Chunk"));
|
||||
connect(unstageChunkAction, &QAction::triggered,
|
||||
connect(unstageChunkAction, &QAction::triggered, this,
|
||||
[this, stageChunk, diffController, fileIndex, chunkIndex]() {
|
||||
stageChunk(diffController, fileIndex, chunkIndex, true);
|
||||
});
|
||||
@@ -1001,7 +1001,7 @@ void GitClient::log(const QString &workingDirectory, const QString &fileName,
|
||||
if (!argWidget) {
|
||||
argWidget = new GitLogArgumentsWidget(settings(), editor->toolBar());
|
||||
argWidget->setBaseArguments(args);
|
||||
connect(argWidget, &VcsBaseEditorConfig::commandExecutionRequested,
|
||||
connect(argWidget, &VcsBaseEditorConfig::commandExecutionRequested, this,
|
||||
[=]() { this->log(workingDir, fileName, enableAnnotationContextMenu, args); });
|
||||
editor->setEditorConfig(argWidget);
|
||||
}
|
||||
@@ -1087,7 +1087,7 @@ VcsBaseEditorWidget *GitClient::annotate(
|
||||
if (!argWidget) {
|
||||
argWidget = new GitBlameArgumentsWidget(settings(), editor->toolBar());
|
||||
argWidget->setBaseArguments(extraOptions);
|
||||
connect(argWidget, &VcsBaseEditorConfig::commandExecutionRequested,
|
||||
connect(argWidget, &VcsBaseEditorConfig::commandExecutionRequested, this,
|
||||
[=] {
|
||||
const int line = VcsBaseEditor::lineNumberOfCurrentEditor();
|
||||
annotate(workingDir, file, revision, line, extraOptions);
|
||||
|
||||
Reference in New Issue
Block a user