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)
|
void GraphicsView::setZoomX(double zoom, const QPoint &pivot)
|
||||||
{
|
{
|
||||||
|
if (pivot.isNull())
|
||||||
|
applyZoom(zoom, m_zoomY, viewportCenter());
|
||||||
|
else
|
||||||
applyZoom(zoom, m_zoomY, pivot);
|
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.
|
||||||
|
@@ -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;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user