From 7a52d0eec0d07c51cf93843783b1a5acca94883f Mon Sep 17 00:00:00 2001 From: Daria Volvenkova Date: Tue, 19 May 2020 12:51:11 +0300 Subject: [PATCH] [guides on map] Close gallery on any movement, notify about about new active guide after opening of the PP. --- map/framework.cpp | 8 +++++++- map/guides_manager.cpp | 19 +++++++------------ map/guides_manager.hpp | 2 +- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/map/framework.cpp b/map/framework.cpp index 8151a6c2f6..88c0ed168f 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -2448,6 +2448,9 @@ void Framework::ActivateMapSelection(std::optional const & inf m_onPlacePageOpen(); else LOG(LWARNING, ("m_onPlacePageOpen has not been set up.")); + + if (info->GetSelectedObject() == df::SelectionShape::OBJECT_GUIDE) + m_guidesManager.OnGuideSelected(); } void Framework::DeactivateMapSelection(bool notifyUI) @@ -2569,7 +2572,10 @@ void Framework::OnTapEvent(place_page::BuildInfo const & buildInfo) } if (m_currentPlacePageInfo->IsGuide() && prevIsGuide) + { + m_guidesManager.OnGuideSelected(); return; + } ActivateMapSelection(m_currentPlacePageInfo); } @@ -2631,7 +2637,7 @@ void Framework::BuildTrackPlacePage(BookmarkManager::TrackSelectionInfo const & void Framework::BuildGuidePlacePage(GuideMark const & guideMark, place_page::Info & info) { - m_guidesManager.OnGuideSelected(guideMark); + m_guidesManager.SetActiveGuide(guideMark.GetGuideId()); info.SetSelectedObject(df::SelectionShape::OBJECT_GUIDE); info.SetIsGuide(true); } diff --git a/map/guides_manager.cpp b/map/guides_manager.cpp index acba15cd97..60894ea163 100644 --- a/map/guides_manager.cpp +++ b/map/guides_manager.cpp @@ -56,6 +56,8 @@ void GuidesManager::UpdateViewport(ScreenBase const & screen) if (screen.GlobalRect().GetLocalRect().IsEmptyInterior()) return; + m_closeGallery(); + if (IsRequestParamsInitialized()) { auto const scaleStronglyChanged = @@ -77,8 +79,6 @@ void GuidesManager::UpdateViewport(ScreenBase const & screen) } } - m_closeGallery(); - m_screen = screen; m_zoom = zoom; @@ -235,7 +235,10 @@ GuidesManager::GuidesGallery GuidesManager::GetGallery() const return gallery; } -std::string GuidesManager::GetActiveGuide() const { return m_activeGuide; } +std::string GuidesManager::GetActiveGuide() const +{ + return m_activeGuide; +} void GuidesManager::SetActiveGuide(std::string const & guideId) { @@ -309,16 +312,8 @@ void GuidesManager::OnClusterSelected(GuidesClusterMark const & mark, ScreenBase true /* isAnim */); } -void GuidesManager::OnGuideSelected(GuideMark const & mark) +void GuidesManager::OnGuideSelected() { - if (mark.GetGuideId() == m_activeGuide) - return; - - auto es = m_bmManager->GetEditSession(); - es.ClearGroup(UserMark::Type::GUIDE_SELECTION); - es.CreateUserMark(mark.GetPivot()); - - m_activeGuide = mark.GetGuideId(); if (m_onGalleryChanged) m_onGalleryChanged(false /* reload */); } diff --git a/map/guides_manager.hpp b/map/guides_manager.hpp index d513942780..ef5cc5a44b 100644 --- a/map/guides_manager.hpp +++ b/map/guides_manager.hpp @@ -107,7 +107,7 @@ public: void SetApiDelegate(std::unique_ptr apiDelegate); void OnClusterSelected(GuidesClusterMark const & mark, ScreenBase const & screen); - void OnGuideSelected(GuideMark const & mark); + void OnGuideSelected(); private: void ChangeState(GuidesState newState);