<feed xmlns='http://www.w3.org/2005/Atom'>
<title>qt/qtcharts.git/tests/auto/qxyseries/tst_qxyseries.cpp, branch dev</title>
<subtitle>QtCharts module
</subtitle>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtcharts.git/'/>
<entry>
<title>Enable strict mode 6.11 in qtcharts</title>
<updated>2026-05-06T03:43:09+00:00</updated>
<author>
<name>Tomi Korpipaa</name>
<email>tomi.korpipaa@qt.io</email>
</author>
<published>2026-03-27T10:34:50+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtcharts.git/commit/?id=00393d5d9251fc85be401a89088edfb2a122b972'/>
<id>00393d5d9251fc85be401a89088edfb2a122b972</id>
<content type='text'>
Task-number: QTBUG-145281
Pick-to: 6.11
Change-Id: I7e95cd63d537648de1977ad7ee4ae92c0ff1c4af
Reviewed-by: Miikka Heikkinen &lt;miikka.heikkinen@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Task-number: QTBUG-145281
Pick-to: 6.11
Change-Id: I7e95cd63d537648de1977ad7ee4ae92c0ff1c4af
Reviewed-by: Miikka Heikkinen &lt;miikka.heikkinen@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>QXYSeries: properly handle selected points in replace(QList&lt;QPointF&gt;)</title>
<updated>2025-06-05T09:08:59+00:00</updated>
<author>
<name>Ivan Solovev</name>
<email>ivan.solovev@qt.io</email>
</author>
<published>2025-06-04T09:26:00+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtcharts.git/commit/?id=159994409d7669b9d37e6e8aaebe67646267cedb'/>
<id>159994409d7669b9d37e6e8aaebe67646267cedb</id>
<content type='text'>
The replace() overload taking a list of points did not consider the
fact that the new list can be shorter than the original.
If some points were selected before the replace() call, and there
are no points with such indexes in the new list, then selectedPoints()
was still reporting non-existent indexes.

This patch updates the logic of replace(QList&lt;QPointF&gt;) to also make
sure that all the non-existent indexes are removed from the set
that keeps track of the selected points.

Amends 86f3ac473a3583a9103838a77c39b516b6f139b5.

Fixes: QTBUG-132790
Pick-to: 6.10 6.9 6.8 6.5
Change-Id: Ief1d1791d09302b4f22ff65c978f6f7d60741ee3
Reviewed-by: Miikka Heikkinen &lt;miikka.heikkinen@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The replace() overload taking a list of points did not consider the
fact that the new list can be shorter than the original.
If some points were selected before the replace() call, and there
are no points with such indexes in the new list, then selectedPoints()
was still reporting non-existent indexes.

This patch updates the logic of replace(QList&lt;QPointF&gt;) to also make
sure that all the non-existent indexes are removed from the set
that keeps track of the selected points.

Amends 86f3ac473a3583a9103838a77c39b516b6f139b5.

Fixes: QTBUG-132790
Pick-to: 6.10 6.9 6.8 6.5
Change-Id: Ief1d1791d09302b4f22ff65c978f6f7d60741ee3
Reviewed-by: Miikka Heikkinen &lt;miikka.heikkinen@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Mark the module as free of Q_FOREACH, except where it isn't</title>
<updated>2023-08-18T10:30:49+00:00</updated>
<author>
<name>Marc Mutz</name>
<email>marc.mutz@qt.io</email>
</author>
<published>2023-08-07T08:14:49+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtcharts.git/commit/?id=11ea4943beb40aa60dfde1d50a4d931b9818ce3d'/>
<id>11ea4943beb40aa60dfde1d50a4d931b9818ce3d</id>
<content type='text'>
The density of Q_FOREACH uses is exremely high here, too high for this
author, unfamiliar with this code, to tackle in a short amount of
time. Even if they're not concentrated in just a few TUs, we need to
make progress on a global QT_NO_FOREACH default, so grab the nettle
and stick to our strategy:

Mark the whole module with QT_NO_FOREACH, to prevent new uses from
creeping in, and whitelist the affected TUs by #undef'ing
QT_NO_FOREACH locally, at the top of each file. For TUs that are part
of a larger executable, this requires these files to be compiled
separately, so add them to NO_PCH_SOURCES (which implies
NO_UNITY_BUILD_SOURCES, too). Created QTBUG-115824 to keep track of
this, and other such follow-up changes in this module.

Task-number: QTBUG-115824
Change-Id: I7d3d11f5313b14f866557583c2e4e18bba893e58
Reviewed-by: Miikka Heikkinen &lt;miikka.heikkinen@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The density of Q_FOREACH uses is exremely high here, too high for this
author, unfamiliar with this code, to tackle in a short amount of
time. Even if they're not concentrated in just a few TUs, we need to
make progress on a global QT_NO_FOREACH default, so grab the nettle
and stick to our strategy:

Mark the whole module with QT_NO_FOREACH, to prevent new uses from
creeping in, and whitelist the affected TUs by #undef'ing
QT_NO_FOREACH locally, at the top of each file. For TUs that are part
of a larger executable, this requires these files to be compiled
separately, so add them to NO_PCH_SOURCES (which implies
NO_UNITY_BUILD_SOURCES, too). Created QTBUG-115824 to keep track of
this, and other such follow-up changes in this module.

Task-number: QTBUG-115824
Change-Id: I7d3d11f5313b14f866557583c2e4e18bba893e58
Reviewed-by: Miikka Heikkinen &lt;miikka.heikkinen@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Port from container::count() and length() to size() - V4</title>
<updated>2022-10-10T19:07:06+00:00</updated>
<author>
<name>Marc Mutz</name>
<email>marc.mutz@qt.io</email>
</author>
<published>2022-10-05T05:40:56+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtcharts.git/commit/?id=0d3d51f9f4e95d8937d159452a51adee84a6ddb9'/>
<id>0d3d51f9f4e95d8937d159452a51adee84a6ddb9</id>
<content type='text'>
This is a semantic patch using ClangTidyTransformator as in
qtbase/df9d882d41b741fef7c5beeddb0abe9d904443d8, but extended to
handle typedefs and accesses through pointers, too:

    const std::string o = "object";

    auto hasTypeIgnoringPointer = [](auto type) { return anyOf(hasType(type), hasType(pointsTo(type))); };

    auto derivedFromAnyOfClasses = [&amp;](ArrayRef&lt;StringRef&gt; classes) {
        auto exprOfDeclaredType = [&amp;](auto decl) {
            return expr(hasTypeIgnoringPointer(hasUnqualifiedDesugaredType(recordType(hasDeclaration(decl))))).bind(o);
        };
        return exprOfDeclaredType(cxxRecordDecl(isSameOrDerivedFrom(hasAnyName(classes))));
    };

    auto renameMethod = [&amp;] (ArrayRef&lt;StringRef&gt; classes,
                            StringRef from, StringRef to) {
        return makeRule(cxxMemberCallExpr(on(derivedFromAnyOfClasses(classes)),
                            callee(cxxMethodDecl(hasName(from), parameterCountIs(0)))),
                        changeTo(cat(access(o, cat(to)), "()")),
                        cat("use '", to, "' instead of '", from, "'"));
    };

    renameMethod(&lt;classes&gt;, "count", "size");
    renameMethod(&lt;classes&gt;, "length", "size");

a.k.a qt-port-to-std-compatible-api V4 with config Scope: 'Container'.

Change-Id: I8187f4b3a16ff78f2a5e5a9158d9437f06a43252
Reviewed-by: Miikka Heikkinen &lt;miikka.heikkinen@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is a semantic patch using ClangTidyTransformator as in
qtbase/df9d882d41b741fef7c5beeddb0abe9d904443d8, but extended to
handle typedefs and accesses through pointers, too:

    const std::string o = "object";

    auto hasTypeIgnoringPointer = [](auto type) { return anyOf(hasType(type), hasType(pointsTo(type))); };

    auto derivedFromAnyOfClasses = [&amp;](ArrayRef&lt;StringRef&gt; classes) {
        auto exprOfDeclaredType = [&amp;](auto decl) {
            return expr(hasTypeIgnoringPointer(hasUnqualifiedDesugaredType(recordType(hasDeclaration(decl))))).bind(o);
        };
        return exprOfDeclaredType(cxxRecordDecl(isSameOrDerivedFrom(hasAnyName(classes))));
    };

    auto renameMethod = [&amp;] (ArrayRef&lt;StringRef&gt; classes,
                            StringRef from, StringRef to) {
        return makeRule(cxxMemberCallExpr(on(derivedFromAnyOfClasses(classes)),
                            callee(cxxMethodDecl(hasName(from), parameterCountIs(0)))),
                        changeTo(cat(access(o, cat(to)), "()")),
                        cat("use '", to, "' instead of '", from, "'"));
    };

    renameMethod(&lt;classes&gt;, "count", "size");
    renameMethod(&lt;classes&gt;, "length", "size");

a.k.a qt-port-to-std-compatible-api V4 with config Scope: 'Container'.

Change-Id: I8187f4b3a16ff78f2a5e5a9158d9437f06a43252
Reviewed-by: Miikka Heikkinen &lt;miikka.heikkinen@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Use SPDX license identifiers</title>
<updated>2022-06-16T08:24:16+00:00</updated>
<author>
<name>Lucie Gérard</name>
<email>lucie.gerard@qt.io</email>
</author>
<published>2022-06-10T12:30:14+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtcharts.git/commit/?id=64e73727869ee6792e70f5aaa71dc4ad37c20fc0'/>
<id>64e73727869ee6792e70f5aaa71dc4ad37c20fc0</id>
<content type='text'>
Replace the current license disclaimer in files by
a SPDX-License-Identifier.
License files are organized under LICENSES directory.

Pick-to: 6.4
Task-number: QTBUG-67283
Change-Id: Ibb797d52859b5c504f7300f4a5dc956a7b44ac11
Reviewed-by: Jörg Bornemann &lt;joerg.bornemann@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Replace the current license disclaimer in files by
a SPDX-License-Identifier.
License files are organized under LICENSES directory.

Pick-to: 6.4
Task-number: QTBUG-67283
Change-Id: Ibb797d52859b5c504f7300f4a5dc956a7b44ac11
Reviewed-by: Jörg Bornemann &lt;joerg.bornemann@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Use QList instead of QVector</title>
<updated>2020-06-26T07:07:14+00:00</updated>
<author>
<name>Jarek Kobus</name>
<email>jaroslaw.kobus@qt.io</email>
</author>
<published>2020-06-23T16:15:52+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtcharts.git/commit/?id=10b3639bf28e384cec0eba882de1e73e91462a2e'/>
<id>10b3639bf28e384cec0eba882de1e73e91462a2e</id>
<content type='text'>
Notice the following API changes:

-void QXYSeries::replace(QVector&lt;QPointF&gt; points);
+void QXYSeries::replace(const QList&lt;QPointF&gt; &amp;points);

-bool QAbstractBarSeries::append(QVector&lt;QBarSet *&gt; sets);
+bool QAbstractBarSeries::append(const QList&lt;QBarSet *&gt; &amp;sets);

-void QAbstractBarSeries::barsetsAdded(QVector&lt;QBarSet *&gt; sets);
+void QAbstractBarSeries::barsetsAdded(const QList&lt;QBarSet *&gt; &amp;sets);

-void QAbstractBarSeries::barsetsRemoved(QVector&lt;QBarSet *&gt; sets);
+void QAbstractBarSeries::barsetsRemoved(const QList&lt;QBarSet *&gt; &amp;sets);

-bool QBoxPlotSeries::append(QVector&lt;QBoxSet *&gt; boxes);
+bool QBoxPlotSeries::append(const QList&lt;QBoxSet *&gt; &amp;boxes);

-bool QBoxPlotSeries::append(QVector&lt;QBoxSet *&gt; boxes);
+bool QBoxPlotSeries::append(const QList&lt;QBoxSet *&gt; &amp;boxes);

-void QBoxPlotSeries::boxsetsAdded(QVector&lt;QBoxSet *&gt; sets);
+void QBoxPlotSeries::boxsetsAdded(const QList&lt;QBoxSet *&gt; &amp;sets);

-void QBoxPlotSeries::boxsetsRemoved(QVector&lt;QBoxSet *&gt; sets);
+void QBoxPlotSeries::boxsetsRemoved(const QList&lt;QBoxSet *&gt; &amp;sets);

-bool QPieSeries::append(QVector&lt;QPieSlice *&gt; slices);
+bool QPieSeries::append(const QList&lt;QPieSlice *&gt; &amp;slices);

-QPieSlice *QPieSeries::append(QString label, qreal value);
+QPieSlice *QPieSeries::append(const QString &amp;label, qreal value);

-void QPieSeries::added(QVector&lt;QPieSlice *&gt; slices);
+void QPieSeries::added(const QList&lt;QPieSlice *&gt; &amp;slices);

-void QPieSeries::removed(QVector&lt;QPieSlice *&gt; slices);
+void QPieSeries::removed(const QList&lt;QPieSlice *&gt; &amp;slices);

These should be source compatible changes.

Task-number: QTBUG-84469
Change-Id: I153796e9d8244c8e22819993ef26aa91e7b71f99
Reviewed-by: Sona Kurazyan &lt;sona.kurazyan@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Notice the following API changes:

-void QXYSeries::replace(QVector&lt;QPointF&gt; points);
+void QXYSeries::replace(const QList&lt;QPointF&gt; &amp;points);

-bool QAbstractBarSeries::append(QVector&lt;QBarSet *&gt; sets);
+bool QAbstractBarSeries::append(const QList&lt;QBarSet *&gt; &amp;sets);

-void QAbstractBarSeries::barsetsAdded(QVector&lt;QBarSet *&gt; sets);
+void QAbstractBarSeries::barsetsAdded(const QList&lt;QBarSet *&gt; &amp;sets);

-void QAbstractBarSeries::barsetsRemoved(QVector&lt;QBarSet *&gt; sets);
+void QAbstractBarSeries::barsetsRemoved(const QList&lt;QBarSet *&gt; &amp;sets);

-bool QBoxPlotSeries::append(QVector&lt;QBoxSet *&gt; boxes);
+bool QBoxPlotSeries::append(const QList&lt;QBoxSet *&gt; &amp;boxes);

-bool QBoxPlotSeries::append(QVector&lt;QBoxSet *&gt; boxes);
+bool QBoxPlotSeries::append(const QList&lt;QBoxSet *&gt; &amp;boxes);

-void QBoxPlotSeries::boxsetsAdded(QVector&lt;QBoxSet *&gt; sets);
+void QBoxPlotSeries::boxsetsAdded(const QList&lt;QBoxSet *&gt; &amp;sets);

-void QBoxPlotSeries::boxsetsRemoved(QVector&lt;QBoxSet *&gt; sets);
+void QBoxPlotSeries::boxsetsRemoved(const QList&lt;QBoxSet *&gt; &amp;sets);

-bool QPieSeries::append(QVector&lt;QPieSlice *&gt; slices);
+bool QPieSeries::append(const QList&lt;QPieSlice *&gt; &amp;slices);

-QPieSlice *QPieSeries::append(QString label, qreal value);
+QPieSlice *QPieSeries::append(const QString &amp;label, qreal value);

-void QPieSeries::added(QVector&lt;QPieSlice *&gt; slices);
+void QPieSeries::added(const QList&lt;QPieSlice *&gt; &amp;slices);

-void QPieSeries::removed(QVector&lt;QPieSlice *&gt; slices);
+void QPieSeries::removed(const QList&lt;QPieSlice *&gt; &amp;slices);

These should be source compatible changes.

Task-number: QTBUG-84469
Change-Id: I153796e9d8244c8e22819993ef26aa91e7b71f99
Reviewed-by: Sona Kurazyan &lt;sona.kurazyan@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Don't use deprecated QTest::qWaitForWindowShown()</title>
<updated>2018-02-28T12:55:31+00:00</updated>
<author>
<name>Kari Oikarinen</name>
<email>kari.oikarinen@qt.io</email>
</author>
<published>2018-02-28T12:46:25+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtcharts.git/commit/?id=cde00a642be6512cbdb7ae03293d62b6639301f7'/>
<id>cde00a642be6512cbdb7ae03293d62b6639301f7</id>
<content type='text'>
Use QTest::qWaitForWindowExposed() instead. Also wrap it in QVERIFY, so that
failed waits fail immediately.

Change-Id: I658d2faa89c42bd190de4bf53179b26b8f5d1b6c
Reviewed-by: Miikka Heikkinen &lt;miikka.heikkinen@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Use QTest::qWaitForWindowExposed() instead. Also wrap it in QVERIFY, so that
failed waits fail immediately.

Change-Id: I658d2faa89c42bd190de4bf53179b26b8f5d1b6c
Reviewed-by: Miikka Heikkinen &lt;miikka.heikkinen@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Update to new QRandomGenerator API</title>
<updated>2017-11-03T09:13:37+00:00</updated>
<author>
<name>Thiago Macieira</name>
<email>thiago.macieira@intel.com</email>
</author>
<published>2017-09-21T19:21:34+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtcharts.git/commit/?id=567b5bc67e54f496027da2e6d99aa7b39d64a606'/>
<id>567b5bc67e54f496027da2e6d99aa7b39d64a606</id>
<content type='text'>
Change-Id: I69f37f9304f24709a823fffd14e676c097712329
Reviewed-by: Miikka Heikkinen &lt;miikka.heikkinen@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change-Id: I69f37f9304f24709a823fffd14e676c097712329
Reviewed-by: Miikka Heikkinen &lt;miikka.heikkinen@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Use QRandomGenerator instead of q?rand</title>
<updated>2017-07-04T11:46:00+00:00</updated>
<author>
<name>Thiago Macieira</name>
<email>thiago.macieira@intel.com</email>
</author>
<published>2017-06-12T23:01:04+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtcharts.git/commit/?id=dbb55fba566fd3878b5ef76a2216f0c3f961147f'/>
<id>dbb55fba566fd3878b5ef76a2216f0c3f961147f</id>
<content type='text'>
Change-Id: Icd0e0d4b27cb4e5eb892fffd14b5285d43f4afbf
Reviewed-by: Lars Knoll &lt;lars.knoll@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change-Id: Icd0e0d4b27cb4e5eb892fffd14b5285d43f4afbf
Reviewed-by: Lars Knoll &lt;lars.knoll@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove 200x200 minimum size from chart</title>
<updated>2016-10-04T12:58:45+00:00</updated>
<author>
<name>Miikka Heikkinen</name>
<email>miikka.heikkinen@qt.io</email>
</author>
<published>2016-09-30T11:02:43+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtcharts.git/commit/?id=2c3935a76fbadd5714882795f39ce59049aafb63'/>
<id>2c3935a76fbadd5714882795f39ce59049aafb63</id>
<content type='text'>
There was no reason for enforcing the 200x200 minimum size for the
chart, as the minimum size already took into account various chart
element minimum sizes. Legend and chart title also no longer
contribute to the minimum size if they are not visible.

Some autotests that simulated mouse events were relying on this
minimum size, so added explicit resizes to some of them.

Task-number: QTBUG-56238
Change-Id: I515b4992a39acbc02bfbc81f225d6b6939adcf91
Reviewed-by: Tomi Korpipää &lt;tomi.korpipaa@qt.io&gt;
Reviewed-by: Mika Salmela &lt;mika.salmela@qt.io&gt;
Reviewed-by: Miikka Heikkinen &lt;miikka.heikkinen@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
There was no reason for enforcing the 200x200 minimum size for the
chart, as the minimum size already took into account various chart
element minimum sizes. Legend and chart title also no longer
contribute to the minimum size if they are not visible.

Some autotests that simulated mouse events were relying on this
minimum size, so added explicit resizes to some of them.

Task-number: QTBUG-56238
Change-Id: I515b4992a39acbc02bfbc81f225d6b6939adcf91
Reviewed-by: Tomi Korpipää &lt;tomi.korpipaa@qt.io&gt;
Reviewed-by: Mika Salmela &lt;mika.salmela@qt.io&gt;
Reviewed-by: Miikka Heikkinen &lt;miikka.heikkinen@qt.io&gt;
</pre>
</div>
</content>
</entry>
</feed>
