diff --git a/android/jni/com/mapswithme/maps/Framework.cpp b/android/jni/com/mapswithme/maps/Framework.cpp index ffdc39a2a7..8613a3d0f1 100644 --- a/android/jni/com/mapswithme/maps/Framework.cpp +++ b/android/jni/com/mapswithme/maps/Framework.cpp @@ -1356,9 +1356,10 @@ JNIEXPORT jobject JNICALL Java_com_mapswithme_maps_Framework_nativeDeleteBookmarkFromMapObject(JNIEnv * env, jclass) { place_page::Info & info = g_framework->GetPlacePageInfo(); - auto const & bac = info.GetBookmarkAndCategory(); + auto const bac = info.GetBookmarkAndCategory(); + BookmarkCategory * category = frm()->GetBmCategory(bac.m_categoryIndex); + frm()->ResetBookmarkInfo(*static_cast(category->GetUserMark(bac.m_bookmarkIndex)), info); bookmarks_helper::RemoveBookmark(bac.m_categoryIndex, bac.m_bookmarkIndex); - info.SetBac({}); return usermark_helper::CreateMapObject(env, info); } diff --git a/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp b/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp index 9e3aea88d4..bd5225a739 100644 --- a/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp +++ b/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp @@ -107,8 +107,13 @@ Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeAddBookmarkToLastE BookmarkData bmkData(ToNativeString(env, name), f->LastEditedBMType()); size_t const lastEditedCategory = f->LastEditedBMCategory(); size_t const createdBookmarkIndex = f->AddBookmark(lastEditedCategory, glbPoint, bmkData); + place_page::Info & info = g_framework->GetPlacePageInfo(); - info.SetBac({createdBookmarkIndex, lastEditedCategory}); + BookmarkCategory * category = f->GetBmCategory(lastEditedCategory); + f->FillBookmarkInfo(*static_cast(category->GetUserMark(createdBookmarkIndex)), + {static_cast(createdBookmarkIndex), + static_cast(lastEditedCategory)}, info); + return usermark_helper::CreateMapObject(env, info); } diff --git a/iphone/Maps/UI/PlacePage/MWMPlacePageData.mm b/iphone/Maps/UI/PlacePage/MWMPlacePageData.mm index aa507b8210..05c8ca335a 100644 --- a/iphone/Maps/UI/PlacePage/MWMPlacePageData.mm +++ b/iphone/Maps/UI/PlacePage/MWMPlacePageData.mm @@ -485,25 +485,22 @@ using namespace place_page; auto category = f.GetBmCategory(categoryIndex); NSAssert(category, @"Category can't be nullptr!"); - { - auto bookmark = static_cast(category->GetUserMark(bookmarkIndex)); - f.FillBookmarkInfo(*bookmark, {bookmarkIndex, categoryIndex}, m_info); - category->NotifyChanges(); - } + auto bookmark = static_cast(category->GetUserMark(bookmarkIndex)); + f.FillBookmarkInfo(*bookmark, {bookmarkIndex, categoryIndex}, m_info); + category->NotifyChanges(); m_sections.insert(m_sections.begin() + 1, Sections::Bookmark); } else { - auto const & bac = m_info.GetBookmarkAndCategory(); + auto const bac = m_info.GetBookmarkAndCategory(); auto category = bmManager.GetBmCategory(bac.m_categoryIndex); + f.ResetBookmarkInfo(*static_cast(category->GetUserMark(bac.m_bookmarkIndex)), + m_info); NSAssert(category, @"Category can't be nullptr!"); - { - category->DeleteUserMark(bac.m_bookmarkIndex); - category->NotifyChanges(); - } + category->DeleteUserMark(bac.m_bookmarkIndex); + category->NotifyChanges(); category->SaveToKMLFile(); - m_info.SetBac({}); m_sections.erase(remove(m_sections.begin(), m_sections.end(), Sections::Bookmark)); } } diff --git a/map/bookmark.hpp b/map/bookmark.hpp index b52ece69ad..630251e4e9 100644 --- a/map/bookmark.hpp +++ b/map/bookmark.hpp @@ -166,13 +166,15 @@ protected: struct BookmarkAndCategory { BookmarkAndCategory() = default; - BookmarkAndCategory(size_t bookmarkIndex, size_t categoryIndex) : m_bookmarkIndex(bookmarkIndex), - m_categoryIndex(categoryIndex) {} + BookmarkAndCategory(size_t bookmarkIndex, size_t categoryIndex) + : m_bookmarkIndex(bookmarkIndex) + , m_categoryIndex(categoryIndex) + {} bool IsValid() const { return m_bookmarkIndex != numeric_limits::max() && - m_categoryIndex != numeric_limits::max(); + m_categoryIndex != numeric_limits::max(); }; size_t m_bookmarkIndex = numeric_limits::max(); diff --git a/map/framework.cpp b/map/framework.cpp index 45223439db..5b2c128fcb 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -770,11 +770,19 @@ bool Framework::DeleteBmCategory(size_t index) void Framework::FillBookmarkInfo(Bookmark const & bmk, BookmarkAndCategory const & bac, place_page::Info & info) const { - info.SetBac(bac); BookmarkCategory * cat = GetBmCategory(bac.m_categoryIndex); info.SetBookmarkCategoryName(cat->GetName()); BookmarkData const & data = static_cast(cat->GetUserMark(bac.m_bookmarkIndex))->GetData(); info.SetBookmarkData(data); + info.SetBac(bac); + FillPointInfo(bmk.GetPivot(), {} /* customTitle */, info); +} + +void Framework::ResetBookmarkInfo(Bookmark const & bmk, place_page::Info & info) const +{ + info.SetBookmarkCategoryName(""); + info.SetBookmarkData({}); + info.SetBac({}); FillPointInfo(bmk.GetPivot(), {} /* customTitle */, info); } diff --git a/map/framework.hpp b/map/framework.hpp index 6fc6be2709..e6c0b875bf 100644 --- a/map/framework.hpp +++ b/map/framework.hpp @@ -674,6 +674,7 @@ private: public: void FillBookmarkInfo(Bookmark const & bmk, BookmarkAndCategory const & bac, place_page::Info & info) const; + void ResetBookmarkInfo(Bookmark const & bmk, place_page::Info & info) const; /// @returns address of nearby building with house number in approx 1km distance. search::AddressInfo GetAddressInfoAtPoint(m2::PointD const & pt) const; diff --git a/map/place_page_info.cpp b/map/place_page_info.cpp index 1d7757a575..4037ce727c 100644 --- a/map/place_page_info.cpp +++ b/map/place_page_info.cpp @@ -163,8 +163,7 @@ void Info::SetCustomNameWithCoordinates(m2::PointD const & mercator, std::string void Info::SetBac(BookmarkAndCategory const & bac) { m_bac = bac; - if (!bac.IsValid()) - m_uiSubtitle = FormatSubtitle(true /* withType */); + m_uiSubtitle = FormatSubtitle(IsFeature() /* withType */); } bool Info::ShouldShowEditPlace() const