From 857b4e519b9ca3ba34634bfcd935274439982fee Mon Sep 17 00:00:00 2001 From: Tomi Korpipaa Date: Thu, 10 Jul 2025 12:23:07 +0300 Subject: [PATCH] Fix continuous updateLabels in bars MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This does not fix the continous synchData completely, but removes the unnecessary label updates. Another patch is needed to take care of the endless sync loop. Task-number: QTBUG-136174 Change-Id: I222deb86c25a4fafde73c550b0ae7151047a66e2 Reviewed-by: Kwanghyo Park Reviewed-by: Sakaria Pouke (cherry picked from commit f9fe3c37eed4e0c4fe594ae95fcf756b468d7034) Reviewed-by: Qt Cherry-pick Bot (cherry picked from commit 4c96f4b0c4e7ba1dfcfa7f7921f3d200c386f693) Reviewed-by: Tomi Korpipää --- src/graphs3d/qml/qquickgraphsbars.cpp | 10 +++++----- src/graphs3d/qml/qquickgraphsbars_p.h | 4 ++-- src/graphs3d/qml/qquickgraphsitem.cpp | 8 ++++---- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/graphs3d/qml/qquickgraphsbars.cpp b/src/graphs3d/qml/qquickgraphsbars.cpp index 8477da2f..12e6290b 100644 --- a/src/graphs3d/qml/qquickgraphsbars.cpp +++ b/src/graphs3d/qml/qquickgraphsbars.cpp @@ -775,9 +775,9 @@ void QQuickGraphsBars::synchData() m_changeTracker.barSeriesMarginChanged = false; } - if (m_axisRangeChanged) { - theme()->resetDirtyBits(); - m_axisRangeChanged = false; + if (m_changeTracker.axisRangeChanged) { + adjustAxisRanges(); + m_changeTracker.axisRangeChanged = false; } QQuickGraphsItem::synchData(); @@ -836,7 +836,7 @@ void QQuickGraphsBars::updateParameters() if (m_cachedBarThickness.isValid()) calculateSceneScalingFactors(); } - m_axisRangeChanged = true; + m_changeTracker.axisRangeChanged = true; setDataDirty(true); } @@ -2690,7 +2690,7 @@ void QQuickGraphsBars::updateBarSpecs(float thicknessRatio, QSizeF spacing, bool m_cachedBarSpacing = m_cachedBarThickness * 2 + spacing * 2; } - m_axisRangeChanged = true; + m_changeTracker.axisRangeChanged = true; m_changeTracker.selectedBarChanged = true; // Calculate here and at setting sample space diff --git a/src/graphs3d/qml/qquickgraphsbars_p.h b/src/graphs3d/qml/qquickgraphsbars_p.h index f598cfab..e86b9430 100644 --- a/src/graphs3d/qml/qquickgraphsbars_p.h +++ b/src/graphs3d/qml/qquickgraphsbars_p.h @@ -34,6 +34,7 @@ struct Bars3DChangeBitField bool itemChanged : 1; bool floorLevelChanged : 1; bool barSeriesMarginChanged : 1; + bool axisRangeChanged : 1; Bars3DChangeBitField() : multiSeriesScalingChanged(true) @@ -43,6 +44,7 @@ struct Bars3DChangeBitField , itemChanged(false) , floorLevelChanged(false) , barSeriesMarginChanged(false) + , axisRangeChanged(false) {} }; @@ -252,8 +254,6 @@ private: float m_heightNormalizer = 1.0f; float m_backgroundAdjustment = 0.0f; - bool m_axisRangeChanged = false; - QQuick3DModel *m_floorBackground = nullptr; QQuick3DNode *m_floorBackgroundScale = nullptr; QQuick3DNode *m_floorBackgroundRotation = nullptr; diff --git a/src/graphs3d/qml/qquickgraphsitem.cpp b/src/graphs3d/qml/qquickgraphsitem.cpp index 5a79ae91..8ae5a7e5 100644 --- a/src/graphs3d/qml/qquickgraphsitem.cpp +++ b/src/graphs3d/qml/qquickgraphsitem.cpp @@ -2664,7 +2664,7 @@ void QQuickGraphsItem::synchData() updateGridLineType(); else updateGrid(); - updateLabels(); + m_labelsNeedupdate = true; updateCustomData(); if (m_sliceView && isSliceEnabled()) { updateSliceGrid(); @@ -2678,7 +2678,7 @@ void QQuickGraphsItem::synchData() m_changeTracker.radialLabelOffsetChanged = false; } if (m_changeTracker.labelMarginChanged) { - updateLabels(); + m_labelsNeedupdate = true; m_changeTracker.labelMarginChanged = false; } @@ -2918,7 +2918,7 @@ void QQuickGraphsItem::synchData() m_titleLabelY->setProperty("labelFont", font); m_titleLabelZ->setProperty("labelFont", font); m_itemLabel->setProperty("labelFont", font); - updateLabels(); + m_labelsNeedupdate = true; if (m_sliceView && isSliceEnabled()) { changeLabelFont(m_sliceHorizontalLabelRepeater, font); @@ -3023,7 +3023,7 @@ void QQuickGraphsItem::synchData() updateGridLineType(); else updateGrid(); - updateLabels(); + m_labelsNeedupdate = true; if (m_sliceView && isSliceEnabled()) { updateSliceGrid(); updateSliceLabels();