Proper cleanup of delta marker connections

This commit is contained in:
Jan Käberich 2020-12-10 13:23:25 +01:00
parent 37ed63fc6a
commit 79a990af47
2 changed files with 11 additions and 6 deletions

View File

@ -351,6 +351,15 @@ void TraceMarker::checkDeltaMarker()
}
}
void TraceMarker::deltaDeleted()
{
// the delta marker of this marker has been deleted, find new match
delta = nullptr;
qDebug() << "assigned delta deleted";
assignDeltaMarker(bestDeltaCandidate());
update();
}
std::set<TraceMarker::Type> TraceMarker::getSupportedTypes()
{
set<TraceMarker::Type> supported;
@ -447,12 +456,7 @@ void TraceMarker::assignDeltaMarker(TraceMarker *m)
// this marker has to be updated when the delta marker changes
connect(delta, &TraceMarker::rawDataChanged, this, &TraceMarker::update);
connect(delta, &TraceMarker::domainChanged, this, &TraceMarker::checkDeltaMarker);
connect(delta, &TraceMarker::deleted, [=](){
delta = nullptr;
qDebug() << "assigned delta deleted";
assignDeltaMarker(bestDeltaCandidate());
update();
});
connect(delta, &TraceMarker::deleted, this, &TraceMarker::deltaDeleted);
}
emit assignedDeltaChanged(this);
}

View File

@ -92,6 +92,7 @@ private slots:
void traceDataChanged();
void updateSymbol();
void checkDeltaMarker();
void deltaDeleted();
signals:
void rawDataChanged();
void domainChanged();