| 3414 | } |
| 3415 | |
| 3416 | void BookmarkManager::MarksChangesTracker::InferVisibility(BookmarkCategory * const group) |
| 3417 | { |
| 3418 | kml::CategoryData const & categoryData = group->GetCategoryData(); |
| 3419 | if (categoryData.m_compilationIds.empty()) |
| 3420 | return; |
| 3421 | ankerl::unordered_dense::set<kml::MarkGroupId> visibility; |
| 3422 | visibility.reserve(categoryData.m_compilationIds.size()); |
| 3423 | for (kml::MarkGroupId const compilationId : categoryData.m_compilationIds) |
| 3424 | { |
| 3425 | auto const compilation = m_bmManager->m_compilations.find(compilationId); |
| 3426 | CHECK(compilation != m_bmManager->m_compilations.end(), ()); |
| 3427 | if (compilation->second->IsVisible()) |
| 3428 | visibility.emplace(compilationId); |
| 3429 | } |
| 3430 | auto const groupId = group->GetID(); |
| 3431 | for (kml::MarkId const userMark : m_bmManager->GetUserMarkIds(groupId)) |
| 3432 | { |
| 3433 | if (!BookmarkManager::IsBookmark(userMark)) |
| 3434 | continue; |
| 3435 | Bookmark * const bookmark = m_bmManager->GetBookmarkForEdit(userMark); |
| 3436 | bool isVisible = false; |
| 3437 | if (bookmark->GetCompilations().empty()) |
| 3438 | { |
| 3439 | // Bookmarks that not belong to any compilation have to be visible. |
| 3440 | // They can be hidden only by changing parental BookmarkCategory visibility to false. |
| 3441 | isVisible = true; |
| 3442 | } |
| 3443 | else |
| 3444 | { |
| 3445 | for (kml::MarkGroupId const compilationId : bookmark->GetCompilations()) |
| 3446 | { |
| 3447 | if (visibility.count(compilationId) != 0) |
| 3448 | { |
| 3449 | isVisible = true; |
| 3450 | break; |
| 3451 | } |
| 3452 | } |
| 3453 | } |
| 3454 | bookmark->SetIsVisible(isVisible); |
| 3455 | } |
| 3456 | } |
| 3457 | |
| 3458 | void BookmarkManager::MarksChangesTracker::OnAttachBookmark(kml::MarkId markId, kml::MarkGroupId catId) |
| 3459 | { |
nothing calls this directly
no test coverage detected