summaryrefslogtreecommitdiffstats
path: root/src/chartsqml2/declarativechart.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/chartsqml2/declarativechart.cpp')
-rw-r--r--src/chartsqml2/declarativechart.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/chartsqml2/declarativechart.cpp b/src/chartsqml2/declarativechart.cpp
index 67bf1864..8a55feb4 100644
--- a/src/chartsqml2/declarativechart.cpp
+++ b/src/chartsqml2/declarativechart.cpp
@@ -70,6 +70,7 @@
#include <QtCore/QTimer>
#include <QtCore/QThread>
#include <QtQuick/QQuickWindow>
+#include <QtWidgets/QGraphicsLayout>
#if QT_CONFIG(charts_datetime_axis)
#include <QtCharts/QDateTimeAxis>
@@ -79,7 +80,6 @@ QT_BEGIN_NAMESPACE
/*!
\qmltype ChartView
- \instantiates DeclarativeChart
\inqmlmodule QtCharts
\brief Manages the graphical representation of the chart's series, legends,
@@ -652,9 +652,12 @@ void DeclarativeChart::seriesAxisAttachHelper(QAbstractSeries *series, QAbstract
{
if (!series->attachedAxes().contains(axis)) {
// Remove & delete old axes that are not attached to any other series
+ // Detach old axis from series so that if it is shared with other series
+ // It can be deleted.
foreach (QAbstractAxis* oldAxis, m_chart->axes(orientation, series)) {
bool otherAttachments = false;
if (oldAxis != axis) {
+ series->detachAxis(oldAxis);
foreach (QAbstractSeries *oldSeries, m_chart->series()) {
if (oldSeries != series && oldSeries->attachedAxes().contains(oldAxis)) {
otherAttachments = true;
@@ -1551,6 +1554,10 @@ QPointF DeclarativeChart::mapToPosition(const QPointF &value, QAbstractSeries *s
void DeclarativeChart::setPlotArea(const QRectF &rect)
{
m_chart->setPlotArea(rect);
+
+ // If plotArea is set inside ChartView, contentGeometry is updated too early and we end up
+ // with incorrect plotArea. Invalidate the layout to correct the geometry.
+ m_chart->layout()->invalidate();
}
QT_END_NAMESPACE