diff --git a/drape_frontend/frontend_renderer.cpp b/drape_frontend/frontend_renderer.cpp index d8c9010db5..7260363d4e 100755 --- a/drape_frontend/frontend_renderer.cpp +++ b/drape_frontend/frontend_renderer.cpp @@ -816,10 +816,10 @@ void FrontendRenderer::OnResize(ScreenBase const & screen) bool const viewportChanged = !m2::IsEqualSize(m_lastReadedModelView.PixelRectIn3d(), viewportRect, kEps, kEps); m_myPositionController->UpdatePixelPosition(screen); - m_myPositionController->OnNewPixelRect(); if (viewportChanged) { + m_myPositionController->OnNewViewportRect(); m_viewport.SetViewport(0, 0, viewportRect.SizeX(), viewportRect.SizeY()); m_contextFactory->getDrawContext()->resize(viewportRect.SizeX(), viewportRect.SizeY()); m_framebuffer->SetSize(viewportRect.SizeX(), viewportRect.SizeY()); diff --git a/drape_frontend/my_position_controller.cpp b/drape_frontend/my_position_controller.cpp index 5d91c921d4..29bbf6e6c4 100644 --- a/drape_frontend/my_position_controller.cpp +++ b/drape_frontend/my_position_controller.cpp @@ -103,7 +103,7 @@ MyPositionController::~MyPositionController() { } -void MyPositionController::OnNewPixelRect() +void MyPositionController::OnNewViewportRect() { UpdateViewport(kDoNotChangeZoom); } diff --git a/drape_frontend/my_position_controller.hpp b/drape_frontend/my_position_controller.hpp index e93b6e9fff..f8516cdd88 100644 --- a/drape_frontend/my_position_controller.hpp +++ b/drape_frontend/my_position_controller.hpp @@ -47,7 +47,7 @@ public: bool isFirstLaunch, bool isRoutingActive); ~MyPositionController(); - void OnNewPixelRect(); + void OnNewViewportRect(); void UpdatePixelPosition(ScreenBase const & screen); void SetListener(ref_ptr listener); diff --git a/drape_frontend/screen_operations.cpp b/drape_frontend/screen_operations.cpp index acc083dedc..7e5dd93133 100644 --- a/drape_frontend/screen_operations.cpp +++ b/drape_frontend/screen_operations.cpp @@ -240,13 +240,10 @@ ScreenBase const ShrinkAndScaleInto(ScreenBase const & screen, m2::RectD boundRe bool ApplyScale(m2::PointD const & pixelScaleCenter, double factor, ScreenBase & screen) { m2::PointD const globalScaleCenter = screen.PtoG(screen.P3dtoP(pixelScaleCenter)); - m2::PointD const pixelCenterOffset = screen.PixelRect().Center() - screen.P3dtoP(pixelScaleCenter); ScreenBase tmp = screen; tmp.Scale(factor); - - m2::PointD newCenter = tmp.PtoG(tmp.GtoP(globalScaleCenter) + pixelCenterOffset); - tmp.SetOrg(newCenter); + tmp.MatchGandP3d(globalScaleCenter, pixelScaleCenter); if (!CheckMinScale(tmp)) return false;