From fff5161deebca8d984ebd78f83acf63100ab571f Mon Sep 17 00:00:00 2001 From: Roman Tsisyk Date: Thu, 23 Nov 2023 08:03:50 +0200 Subject: [PATCH 1/2] [map] Fix the viewport when opening a geo: link Re-add lost trackVisibleViewport=true from the original implementation. Closes #6641 Signed-off-by: Roman Tsisyk --- map/framework.cpp | 6 +++--- map/framework.hpp | 3 ++- map/mwm_url.cpp | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/map/framework.cpp b/map/framework.cpp index ef9ce01b99..3876c62d2c 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -959,11 +959,11 @@ m2::PointD const & Framework::GetViewportCenter() const return m_currentModelView.GetOrg(); } -void Framework::SetViewportCenter(m2::PointD const & pt, int zoomLevel /* = -1 */, - bool isAnim /* = true */) +void Framework::SetViewportCenter(m2::PointD const & pt, int zoomLevel /* = -1 */, bool isAnim /* = true */, + bool trackVisibleViewport /* = false */) { if (m_drapeEngine != nullptr) - m_drapeEngine->SetModelViewCenter(pt, zoomLevel, isAnim, false /* trackVisibleViewport */); + m_drapeEngine->SetModelViewCenter(pt, zoomLevel, isAnim, trackVisibleViewport); } m2::RectD Framework::GetCurrentViewport() const diff --git a/map/framework.hpp b/map/framework.hpp index 209ef7b530..e411e7d9a8 100644 --- a/map/framework.hpp +++ b/map/framework.hpp @@ -497,7 +497,8 @@ public: m2::PointD GetVisiblePixelCenter() const; m2::PointD const & GetViewportCenter() const; - void SetViewportCenter(m2::PointD const & pt, int zoomLevel = -1, bool isAnim = true); + void SetViewportCenter(m2::PointD const & pt, int zoomLevel = -1, bool isAnim = true, + bool trackVisibleViewport = false); m2::RectD GetCurrentViewport() const; void SetVisibleViewport(m2::RectD const & rect); diff --git a/map/mwm_url.cpp b/map/mwm_url.cpp index 2c45631ad8..2cfcd120af 100644 --- a/map/mwm_url.cpp +++ b/map/mwm_url.cpp @@ -461,7 +461,7 @@ void ParsedMapApi::ExecuteMapApiRequest(Framework & fm) // ShowRect function interferes with ActivateMapSelection and we have strange behaviour as a result. // Use more obvious SetModelViewCenter here. - fm.SetViewportCenter(center, zoomLevel, true); + fm.SetViewportCenter(center, zoomLevel, true, true); // Don't show the place page in case of multiple points. if (m_mapPoints.size() > 1) -- 2.45.3 From 3de66e4fd0c5acbf58a782b943429c5bc221ce3c Mon Sep 17 00:00:00 2001 From: Roman Tsisyk Date: Sat, 25 Nov 2023 00:19:11 +0300 Subject: [PATCH 2/2] Update map/mwm_url.cpp Co-authored-by: Viktor Govako Signed-off-by: Roman Tsisyk --- map/mwm_url.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/map/mwm_url.cpp b/map/mwm_url.cpp index 2cfcd120af..c694794749 100644 --- a/map/mwm_url.cpp +++ b/map/mwm_url.cpp @@ -461,7 +461,9 @@ void ParsedMapApi::ExecuteMapApiRequest(Framework & fm) // ShowRect function interferes with ActivateMapSelection and we have strange behaviour as a result. // Use more obvious SetModelViewCenter here. - fm.SetViewportCenter(center, zoomLevel, true, true); + /// @todo Funny, but animation is still present, but now centering works fine. + /// Looks like there is one more set viewport call somewhere. + fm.SetViewportCenter(center, zoomLevel, false /* isAnim */, true /* trackVisibleViewport */); // Don't show the place page in case of multiple points. if (m_mapPoints.size() > 1) -- 2.45.3