Use the viewport center as pivot when zooming into the curve editor

Fixes: QDS-10128
Fixes: QDS-10129
Change-Id: I7959a7b83b04cbc95b0d541fd1de7b45b387e752
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Knud Dollereder
2023-06-22 14:02:53 +02:00
parent 4d51605866
commit 68d7aee492
2 changed files with 26 additions and 3 deletions

View File

@@ -252,13 +252,21 @@ void GraphicsView::setPinned(TreeItem *item)
void GraphicsView::setZoomX(double zoom, const QPoint &pivot)
{
applyZoom(zoom, m_zoomY, pivot);
if (pivot.isNull())
applyZoom(zoom, m_zoomY, viewportCenter());
else
applyZoom(zoom, m_zoomY, pivot);
viewport()->update();
}
void GraphicsView::setZoomY(double zoom, const QPoint &pivot)
{
applyZoom(m_zoomX, zoom, pivot);
if (pivot.isNull())
applyZoom(zoom, m_zoomY, viewportCenter());
else
applyZoom(zoom, m_zoomY, pivot);
viewport()->update();
}
@@ -514,7 +522,14 @@ void GraphicsView::applyZoom(double x, double y, const QPoint &pivot)
m_transform = QTransform::fromScale(scaleX, scaleY);
m_scene->setComponentTransform(m_transform);
QRectF sr = m_scene->rect().adjusted(
QRectF sr = m_scene->rect();
if (sr.isNull()) {
sr.setLeft(m_scene->animationRangeMin());
sr.setRight(m_scene->animationRangeMax());
sr = m_transform.mapRect(sr);
}
sr = sr.adjusted(
-m_style.valueAxisWidth - m_style.canvasMargin,
-m_style.timeAxisHeight - m_style.canvasMargin,
m_style.canvasMargin,
@@ -750,4 +765,10 @@ QRectF GraphicsView::rangeMaxHandle(const QRectF &rect)
return QRectF(QPointF(handle, bottom), size);
}
QPoint GraphicsView::viewportCenter() const
{
QPoint viewCenter = viewport()->rect().center();
return viewport()->mapToGlobal(viewCenter);
}
} // End namespace QmlDesigner.

View File

@@ -136,6 +136,8 @@ private:
QRectF rangeMaxHandle(const QRectF &rect);
QPoint viewportCenter() const;
private:
bool m_dragging;