diff options
author | Daria Volvenkova <d.volvenkova@corp.mail.ru> | 2016-06-21 17:07:46 +0300 |
---|---|---|
committer | Vladimir Byko-Ianko <v.bykoianko@corp.mail.ru> | 2016-06-24 16:02:06 +0300 |
commit | 6d433ff0cafe85066601bea7dd7b82400d71a51a (patch) | |
tree | 472152f737314f702eb89a9826e60fe0cb3e4e00 /drape_frontend | |
parent | 99ebfac3a1a4e7a0bd77e5c155f62fb9545732bb (diff) |
Selected feature's overlays can't be displaced.
Diffstat (limited to 'drape_frontend')
-rw-r--r-- | drape_frontend/drape_engine.cpp | 4 | ||||
-rw-r--r-- | drape_frontend/drape_engine.hpp | 2 | ||||
-rwxr-xr-x | drape_frontend/frontend_renderer.cpp | 3 | ||||
-rw-r--r-- | drape_frontend/message_subclasses.hpp | 24 |
4 files changed, 18 insertions, 15 deletions
diff --git a/drape_frontend/drape_engine.cpp b/drape_frontend/drape_engine.cpp index ecd729ae7a..d45db5ef08 100644 --- a/drape_frontend/drape_engine.cpp +++ b/drape_frontend/drape_engine.cpp @@ -305,10 +305,10 @@ FeatureID DrapeEngine::GetVisiblePOI(m2::PointD const & glbPoint) return result; } -void DrapeEngine::SelectObject(SelectionShape::ESelectedObject obj, m2::PointD const & pt, bool isAnim) +void DrapeEngine::SelectObject(SelectionShape::ESelectedObject obj, m2::PointD const & pt, FeatureID const & featureId, bool isAnim) { m_threadCommutator->PostMessage(ThreadsCommutator::RenderThread, - make_unique_dp<SelectObjectMessage>(obj, pt, isAnim), + make_unique_dp<SelectObjectMessage>(obj, pt, featureId, isAnim), MessagePriority::High); } diff --git a/drape_frontend/drape_engine.hpp b/drape_frontend/drape_engine.hpp index 8799059452..421509a1ea 100644 --- a/drape_frontend/drape_engine.hpp +++ b/drape_frontend/drape_engine.hpp @@ -116,7 +116,7 @@ public: void SetUserPositionListener(TUserPositionChangedFn && fn); FeatureID GetVisiblePOI(m2::PointD const & glbPoint); - void SelectObject(SelectionShape::ESelectedObject obj, m2::PointD const & pt, bool isAnim); + void SelectObject(SelectionShape::ESelectedObject obj, m2::PointD const & pt, FeatureID const & featureID, bool isAnim); void DeselectObject(); bool GetMyPosition(m2::PointD & myPosition); SelectionShape::ESelectedObject GetSelectedObject(); diff --git a/drape_frontend/frontend_renderer.cpp b/drape_frontend/frontend_renderer.cpp index 1f1ffa9286..3b06a0adbf 100755 --- a/drape_frontend/frontend_renderer.cpp +++ b/drape_frontend/frontend_renderer.cpp @@ -440,10 +440,11 @@ void FrontendRenderer::AcceptMessage(ref_ptr<Message> message) case Message::SelectObject: { ref_ptr<SelectObjectMessage> msg = message; + m_overlayTree->SetSelectedFeature(msg->IsDismiss() ? FeatureID() : msg->GetFeatureID()); if (m_selectionShape == nullptr) { m_selectObjectMessage = make_unique_dp<SelectObjectMessage>(msg->GetSelectedObject(), msg->GetPosition(), - msg->IsAnim()); + msg->GetFeatureID(), msg->IsAnim()); break; } ProcessSelection(msg); diff --git a/drape_frontend/message_subclasses.hpp b/drape_frontend/message_subclasses.hpp index 4122e85397..49e327af05 100644 --- a/drape_frontend/message_subclasses.hpp +++ b/drape_frontend/message_subclasses.hpp @@ -471,31 +471,33 @@ class SelectObjectMessage : public Message { public: struct DismissTag {}; + SelectObjectMessage(DismissTag) - : SelectObjectMessage(SelectionShape::OBJECT_EMPTY, m2::PointD::Zero(), false, true) + : m_selected(SelectionShape::OBJECT_EMPTY) + , m_glbPoint(m2::PointD::Zero()) + , m_isAnim(false) + , m_isDismiss(true) {} - SelectObjectMessage(SelectionShape::ESelectedObject selectedObject, m2::PointD const & glbPoint, bool isAnim) - : SelectObjectMessage(selectedObject, glbPoint, isAnim, false) + SelectObjectMessage(SelectionShape::ESelectedObject selectedObject, m2::PointD const & glbPoint, FeatureID const & featureID, bool isAnim) + : m_selected(selectedObject) + , m_glbPoint(glbPoint) + , m_featureID(featureID) + , m_isAnim(isAnim) + , m_isDismiss(false) {} Type GetType() const override { return SelectObject; } m2::PointD const & GetPosition() const { return m_glbPoint; } SelectionShape::ESelectedObject GetSelectedObject() const { return m_selected; } + FeatureID const & GetFeatureID() const { return m_featureID; } bool IsAnim() const { return m_isAnim; } bool IsDismiss() const { return m_isDismiss; } private: - SelectObjectMessage(SelectionShape::ESelectedObject obj, m2::PointD const & pt, bool isAnim, bool isDismiss) - : m_selected(obj) - , m_glbPoint(pt) - , m_isAnim(isAnim) - , m_isDismiss(isDismiss) - {} - -private: SelectionShape::ESelectedObject m_selected; m2::PointD m_glbPoint; + FeatureID m_featureID; bool m_isAnim; bool m_isDismiss; }; |