mirror of https://github.com/qt/qtgraphs.git
Disable axis drag handler if not needed
Pick-to: 6.9
Fixes: QTBUG-135931
Change-Id: Idbc3b9d04fbde1985f0209964d9d1c0a60bb2f2f
Reviewed-by: Sami Varanka <sami.varanka@qt.io>
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
(cherry picked from commit 2666c118cc)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
10acb96af4
commit
3c26e37e5a
|
|
@ -57,14 +57,6 @@ AxisRenderer::AxisRenderer(QQuickItem *parent)
|
|||
{
|
||||
m_graph = qobject_cast<QGraphsView *>(parent);
|
||||
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() {}
|
||||
|
|
@ -316,6 +308,14 @@ void AxisRenderer::onGrabChanged(QPointingDevice::GrabTransition transition, QEv
|
|||
|
||||
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.
|
||||
bool vertical = true;
|
||||
if (m_graph->orientation() == Qt::Orientation::Horizontal)
|
||||
|
|
@ -1575,6 +1575,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
|
||||
double AxisRenderer::getValueStepsFromRange(double range)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -103,6 +103,8 @@ private:
|
|||
void updateDateTimeYAxisLabels(AxisProperties &ax, const QRectF rect);
|
||||
void updateDateTimeXAxisLabels(AxisProperties &ax, const QRectF rect);
|
||||
|
||||
void createDragHandler();
|
||||
void deleteDragHandler();
|
||||
void onTranslationChanged(QVector2D delta);
|
||||
void onGrabChanged(QPointingDevice::GrabTransition transition, QEventPoint point);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue