diff --git a/map/bookmark_manager.cpp b/map/bookmark_manager.cpp index cc94efbfa4..fe9f2bc18d 100644 --- a/map/bookmark_manager.cpp +++ b/map/bookmark_manager.cpp @@ -20,7 +20,6 @@ BookmarkManager::BookmarkManager(Framework & f) : m_framework(f) - , m_activeMark(NULL) , m_bmScreen(0) , m_lastScale(1.0) , m_cache(NULL) @@ -308,17 +307,10 @@ bool BookmarkManager::DeleteBmCategory(size_t index) void BookmarkManager::ActivateMark(UserMark const * mark) { - if (m_activeMark != NULL) - { - m_activeMark->Diactivate(); - m_activeMark = NULL; - } - - if (mark == NULL) - return; - - m_activeMark = mark; - m_activeMark->Activate(); + for_each(m_categories.begin(), m_categories.end(), bind(&UserMarkContainer::DiactivateMark, _1)); + for_each(m_userMarkLayers.begin(), m_userMarkLayers.end(), bind(&UserMarkContainer::DiactivateMark, _1)); + if (mark != NULL) + mark->Activate(); } UserMark const * BookmarkManager::FindNearestUserMark(const m2::AnyRectD & rect) diff --git a/map/bookmark_manager.hpp b/map/bookmark_manager.hpp index 1f1debd6e6..6a6ff0e3d7 100644 --- a/map/bookmark_manager.hpp +++ b/map/bookmark_manager.hpp @@ -17,7 +17,6 @@ class BookmarkManager : private noncopyable Framework & m_framework; vector m_userMarkLayers; - UserMark const * m_activeMark; graphics::Screen * m_bmScreen; mutable double m_lastScale; diff --git a/map/user_mark.cpp b/map/user_mark.cpp index 045b5b5896..ac46f5848a 100644 --- a/map/user_mark.cpp +++ b/map/user_mark.cpp @@ -31,8 +31,3 @@ void UserMark::Activate() const { m_container->ActivateMark(this); } - -void UserMark::Diactivate() const -{ - m_container->DiactivateMark(); -} diff --git a/map/user_mark.hpp b/map/user_mark.hpp index 67ba5b8615..84099e4f46 100644 --- a/map/user_mark.hpp +++ b/map/user_mark.hpp @@ -39,7 +39,6 @@ public: protected: friend class BookmarkManager; void Activate() const; - void Diactivate() const; protected: m2::PointD m_ptOrg; diff --git a/map/user_mark_container.cpp b/map/user_mark_container.cpp index 3f47021cd9..fd52268421 100644 --- a/map/user_mark_container.cpp +++ b/map/user_mark_container.cpp @@ -120,8 +120,11 @@ void UserMarkContainer::ActivateMark(UserMark const * mark) void UserMarkContainer::DiactivateMark() { - KillActivationAnim(); - m_activeMark = NULL; + if (m_activeMark != NULL) + { + KillActivationAnim(); + m_activeMark = NULL; + } } void UserMarkContainer::Clear()