mirror of https://github.com/qt/qtgraphs.git
Disable axis drag handler if not needed
Pick-to: 6.9 6.10 Fixes: QTBUG-135931 Change-Id: Idbc3b9d04fbde1985f0209964d9d1c0a60bb2f2f Reviewed-by: Sami Varanka <sami.varanka@qt.io> Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
This commit is contained in:
parent
9acdfa4045
commit
2666c118cc
|
|
@ -57,14 +57,6 @@ AxisRenderer::AxisRenderer(QQuickItem *parent)
|
||||||
{
|
{
|
||||||
m_graph = qobject_cast<QGraphsView *>(parent);
|
m_graph = qobject_cast<QGraphsView *>(parent);
|
||||||
setFlag(QQuickItem::ItemHasContents);
|
setFlag(QQuickItem::ItemHasContents);
|
||||||
|
|
||||||
m_dragHandler = new QQuickDragHandler(this);
|
|
||||||
m_dragHandler->setDragThreshold(10);
|
|
||||||
m_dragHandler->setTarget(nullptr);
|
|
||||||
connect(m_dragHandler, &QQuickDragHandler::translationChanged,
|
|
||||||
this, &AxisRenderer::onTranslationChanged);
|
|
||||||
connect(m_dragHandler, &QQuickDragHandler::grabChanged,
|
|
||||||
this, &AxisRenderer::onGrabChanged);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
AxisRenderer::~AxisRenderer() {}
|
AxisRenderer::~AxisRenderer() {}
|
||||||
|
|
@ -316,6 +308,14 @@ void AxisRenderer::onGrabChanged(QPointingDevice::GrabTransition transition, QEv
|
||||||
|
|
||||||
void AxisRenderer::handlePolish()
|
void AxisRenderer::handlePolish()
|
||||||
{
|
{
|
||||||
|
if (m_graph->panStyle() != QGraphsView::PanStyle::None
|
||||||
|
|| m_graph->zoomStyle() != QGraphsView::ZoomStyle::None || m_graph->zoomAreaEnabled()) {
|
||||||
|
if (!m_dragHandler)
|
||||||
|
createDragHandler();
|
||||||
|
} else if (m_dragHandler) {
|
||||||
|
deleteDragHandler();
|
||||||
|
}
|
||||||
|
|
||||||
// See if series is horizontal, so axis should also switch places.
|
// See if series is horizontal, so axis should also switch places.
|
||||||
bool vertical = true;
|
bool vertical = true;
|
||||||
if (m_graph->orientation() == Qt::Orientation::Horizontal)
|
if (m_graph->orientation() == Qt::Orientation::Horizontal)
|
||||||
|
|
@ -1597,6 +1597,28 @@ void AxisRenderer::updateDateTimeXAxisLabels(AxisProperties &ax, const QRectF re
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AxisRenderer::createDragHandler()
|
||||||
|
{
|
||||||
|
m_dragHandler = new QQuickDragHandler(this);
|
||||||
|
m_dragHandler->setDragThreshold(10);
|
||||||
|
m_dragHandler->setTarget(nullptr);
|
||||||
|
connect(m_dragHandler,
|
||||||
|
&QQuickDragHandler::translationChanged,
|
||||||
|
this,
|
||||||
|
&AxisRenderer::onTranslationChanged);
|
||||||
|
connect(m_dragHandler, &QQuickDragHandler::grabChanged, this, &AxisRenderer::onGrabChanged);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AxisRenderer::deleteDragHandler()
|
||||||
|
{
|
||||||
|
disconnect(m_dragHandler,
|
||||||
|
&QQuickDragHandler::translationChanged,
|
||||||
|
this,
|
||||||
|
&AxisRenderer::onTranslationChanged);
|
||||||
|
disconnect(m_dragHandler, &QQuickDragHandler::grabChanged, this, &AxisRenderer::onGrabChanged);
|
||||||
|
m_dragHandler->deleteLater();
|
||||||
|
}
|
||||||
|
|
||||||
// Calculate suitable major step based on range
|
// Calculate suitable major step based on range
|
||||||
double AxisRenderer::getValueStepsFromRange(double range)
|
double AxisRenderer::getValueStepsFromRange(double range)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -104,6 +104,8 @@ private:
|
||||||
void updateDateTimeYAxisLabels(AxisProperties &ax, const QRectF rect);
|
void updateDateTimeYAxisLabels(AxisProperties &ax, const QRectF rect);
|
||||||
void updateDateTimeXAxisLabels(AxisProperties &ax, const QRectF rect);
|
void updateDateTimeXAxisLabels(AxisProperties &ax, const QRectF rect);
|
||||||
|
|
||||||
|
void createDragHandler();
|
||||||
|
void deleteDragHandler();
|
||||||
void onTranslationChanged(QVector2D delta);
|
void onTranslationChanged(QVector2D delta);
|
||||||
void onGrabChanged(QPointingDevice::GrabTransition transition, QEventPoint point);
|
void onGrabChanged(QPointingDevice::GrabTransition transition, QEventPoint point);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue