diff options
author | Yuri Gorshenin <y@maps.me> | 2017-10-31 17:38:54 +0300 |
---|---|---|
committer | mpimenov <mpimenov@users.noreply.github.com> | 2017-10-31 18:32:40 +0300 |
commit | e7bc9928eaa6ae8c041956f0f9b356c7e9e1190f (patch) | |
tree | 4f2848cb5556e8afc2a992a6e5b984e7863af080 | |
parent | 44f92f69ce9f0af4def9d5e39a9c7792d2c9c9f9 (diff) |
[search] Fixed viewport search.
-rw-r--r-- | map/framework.cpp | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/map/framework.cpp b/map/framework.cpp index 73200457f9..fbb2a6923e 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -284,25 +284,25 @@ void Framework::OnUserPositionChanged(m2::PointD const & position, bool hasPosit void Framework::OnViewportChanged(ScreenBase const & screen) { - double constexpr kEps = 1.0E-4; - if (!screen.GlobalRect().EqualDxDy(m_currentModelView.GlobalRect(), kEps)) - UpdateUserViewportChanged(); - m_currentModelView = screen; + if (!m_isViewportInitialized) { m_isViewportInitialized = true; for (size_t i = 0; i < static_cast<size_t>(search::Mode::Count); i++) { auto & intent = m_searchIntents[i]; - if (intent.m_isDelayed) - { - intent.m_params.m_viewport = GetCurrentViewport(); - Search(intent); - } + // Viewport search will be triggered below, in UpdateUserViewportChanged(). + if (!intent.m_isDelayed || static_cast<search::Mode>(i) == search::Mode::Viewport) + continue; + SetViewportIfPossible(intent.m_params); + SetCurrentPositionIfPossible(intent.m_params); + Search(intent); } } + UpdateUserViewportChanged(); + m_trafficManager.UpdateViewport(m_currentModelView); m_localAdsManager.UpdateViewport(m_currentModelView); @@ -1329,10 +1329,12 @@ void Framework::SetCurrentCountryChangedListener(TCurrentCountryChanged const & void Framework::UpdateUserViewportChanged() { - if (!IsViewportSearchActive()) + if (!m_isViewportInitialized || !IsViewportSearchActive()) return; - auto & params = m_searchIntents[static_cast<size_t>(search::Mode::Viewport)].m_params; + // Copy is intended here, for correct checking of duplicating requests. + auto params = m_searchIntents[static_cast<size_t>(search::Mode::Viewport)].m_params; + SetViewportIfPossible(params); SetCurrentPositionIfPossible(params); Search(params); } |