Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuri Gorshenin <y@maps.me>2017-10-31 17:38:54 +0300
committermpimenov <mpimenov@users.noreply.github.com>2017-10-31 18:32:40 +0300
commite7bc9928eaa6ae8c041956f0f9b356c7e9e1190f (patch)
tree4f2848cb5556e8afc2a992a6e5b984e7863af080
parent44f92f69ce9f0af4def9d5e39a9c7792d2c9c9f9 (diff)
[search] Fixed viewport search.
-rw-r--r--map/framework.cpp24
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);
}