delete m_scrollAndZoomAnimation;
}
+QPointF MapView::center()
+{
+ return mapToScene(m_viewCenterPoint) - m_centerHorizontalShiftPoint;
+}
+
void MapView::centerToSceneCoordinates(const SceneCoordinate &coordinate, bool isUserDragAction)
{
qDebug() << __PRETTY_FUNCTION__ << "coordinate" << coordinate;
QPointF target = coordinate.toPointF();
m_lastSetScenePosition = coordinate;
- if (!isUserDragAction)
+// if (!isUserDragAction)
target += m_centerHorizontalShiftPoint;
centerOn(target);
m_time.start();
m_index++;
- emit viewScrolled(SceneCoordinate(m_internalScenePosition.x(), m_internalScenePosition.y()),
- true);
+ QPointF viewCenterPoint = m_internalScenePosition - m_centerHorizontalShiftPoint;
+
+ emit viewScrolled(SceneCoordinate(viewCenterPoint.x(), viewCenterPoint.y()), true);
m_lastMouseEventScenePosition = mapToScene(event->pos()).toPoint();
m_lastMouseEventViewPosition = event->pos();
m_scroller->setEasingCurve(QEasingCurve::OutCirc);
m_scroller->setDuration(KINETIC_SCROLL_TIME_MS);
- m_scroller->setStartValue(SceneCoordinate(m_internalScenePosition.x(),
- m_internalScenePosition.y()));
- QPointF endValue = QPointF(m_internalScenePosition) + effectSceneDistance;
+ QPointF centerPoint = center();
+ m_scroller->setStartValue(SceneCoordinate(centerPoint.x(), centerPoint.y()));
+ QPointF endValue = centerPoint + effectSceneDistance;
m_scroller->setEndValue(SceneCoordinate(endValue.x(), endValue.y()));
m_scroller->setKineticScrollFlag(true);
m_scroller->start();
m_kineticMaxViewDistance = qMax(width(), height()) * KINETIC_MAX_VIEW_DISTANCE_FACTOR;
+ m_viewCenterPoint.setX(event->size().width() / 2);
+ m_viewCenterPoint.setY(event->size().height() / 2);
+
emit viewResized(event->size());
if (m_centerShiftAnimation) {
int mapVisibleWidth = event->size().width() - PANEL_WIDTH - PANEL_BAR_WIDTH;
- int mapViewMiddle = event->size().width() / 2;
- int shiftFromMiddle = mapViewMiddle - (mapVisibleWidth / 2);
+ int shiftFromMiddle = m_viewCenterPoint.x() - (mapVisibleWidth / 2);
m_centerShiftAnimation->setEndValue(shiftFromMiddle);
updateCenterShift();
}