forked from qt-creator/qt-creator
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:
@@ -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.
|
||||
|
@@ -136,6 +136,8 @@ private:
|
||||
|
||||
QRectF rangeMaxHandle(const QRectF &rect);
|
||||
|
||||
QPoint viewportCenter() const;
|
||||
|
||||
private:
|
||||
bool m_dragging;
|
||||
|
||||
|
Reference in New Issue
Block a user