[core] Fix remove passed points

Signed-off-by: gekeleda <git@davidgekeler.eu>
This commit is contained in:
gekeleda
2025-08-24 14:48:19 +02:00
parent 4d6cecd9ba
commit 265e94edc3
2 changed files with 5 additions and 2 deletions

View File

@@ -296,6 +296,7 @@ void BookmarkManager::DeleteUserMark(kml::MarkId markId)
CHECK_THREAD_CHECKER(m_threadChecker, ());
ASSERT(!IsBookmark(markId), ());
auto it = m_userMarks.find(markId);
ASSERT(it != m_userMarks.end(), ());
auto const groupId = it->second->GetGroupId();
GetGroup(groupId)->DetachUserMark(markId);
m_changesTracker.OnDeleteMark(markId);

View File

@@ -349,9 +349,11 @@ void RoutePointsLayout::SetFollowingMode(bool enabled)
void RoutePointsLayout::RemovePassedPoints()
{
for (auto markId : m_manager.GetUserMarkIds(UserMark::Type::ROUTING)) {
// Prevent recalculation of markIds at every iteration, since we are removing elements
auto markIds = m_manager.GetUserMarkIds(UserMark::Type::ROUTING);
for (auto markId : markIds) {
auto * mark = m_editSession.GetMarkForEdit<RouteMarkPoint>(markId);
if (mark->IsPassed())
if (mark && mark->IsPassed() && mark->GetRoutePointType() == RouteMarkType::Intermediate)
m_editSession.DeleteUserMark(mark->GetId());
}
}