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) 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(); viewport()->update();
} }
void GraphicsView::setZoomY(double zoom, const QPoint &pivot) 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(); viewport()->update();
} }
@@ -514,7 +522,14 @@ void GraphicsView::applyZoom(double x, double y, const QPoint &pivot)
m_transform = QTransform::fromScale(scaleX, scaleY); m_transform = QTransform::fromScale(scaleX, scaleY);
m_scene->setComponentTransform(m_transform); 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.valueAxisWidth - m_style.canvasMargin,
-m_style.timeAxisHeight - m_style.canvasMargin, -m_style.timeAxisHeight - m_style.canvasMargin,
m_style.canvasMargin, m_style.canvasMargin,
@@ -750,4 +765,10 @@ QRectF GraphicsView::rangeMaxHandle(const QRectF &rect)
return QRectF(QPointF(handle, bottom), size); return QRectF(QPointF(handle, bottom), size);
} }
QPoint GraphicsView::viewportCenter() const
{
QPoint viewCenter = viewport()->rect().center();
return viewport()->mapToGlobal(viewCenter);
}
} // End namespace QmlDesigner. } // End namespace QmlDesigner.

View File

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