<feed xmlns='http://www.w3.org/2005/Atom'>
<title>qt/qtdeclarative.git, branch 6.10</title>
<subtitle>Qt Declarative (Quick 2)
</subtitle>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/'/>
<entry>
<title>Scenegraph: Nullify QQuickWindowPrivate::rhi on RHI destruction</title>
<updated>2026-04-01T02:58:26+00:00</updated>
<author>
<name>Vladimir Belyavsky</name>
<email>belyavskyv@gmail.com</email>
</author>
<published>2026-03-23T08:36:34+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=6cb7ca6b3df86f005b9718263bd66d25b0e3bfe2'/>
<id>6cb7ca6b3df86f005b9718263bd66d25b0e3bfe2</id>
<content type='text'>
After destroyRhi(), WindowData::rhi and the render thread's local rhi
pointer were set to nullptr, but QQuickWindowPrivate::rhi was left
dangling in several code paths:

- QSGGuiThreadRenderLoop::handleDeviceLoss()
- QSGGuiThreadRenderLoop::teardownGraphics()
- QSGRenderThread::teardownGraphics()

Any code that reads QQuickWindowPrivate::rhi after RHI destruction
(e.g. during item reparenting, Loader deactivation, or scene graph
re-initialization) could dereference the dangling pointer, leading
to use-after-free crashes.

Pick-to: 6.8
Change-Id: If4db2c97db4da10e4a419f0a30930ee37120f344
Reviewed-by: Laszlo Agocs &lt;laszlo.agocs@qt.io&gt;
(cherry picked from commit 6a2e413a5aad4044693960b3cf9a4ec308809a94)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
(cherry picked from commit 6b78da362f411315bd766d1ec6789de6b8f55bfd)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
After destroyRhi(), WindowData::rhi and the render thread's local rhi
pointer were set to nullptr, but QQuickWindowPrivate::rhi was left
dangling in several code paths:

- QSGGuiThreadRenderLoop::handleDeviceLoss()
- QSGGuiThreadRenderLoop::teardownGraphics()
- QSGRenderThread::teardownGraphics()

Any code that reads QQuickWindowPrivate::rhi after RHI destruction
(e.g. during item reparenting, Loader deactivation, or scene graph
re-initialization) could dereference the dangling pointer, leading
to use-after-free crashes.

Pick-to: 6.8
Change-Id: If4db2c97db4da10e4a419f0a30930ee37120f344
Reviewed-by: Laszlo Agocs &lt;laszlo.agocs@qt.io&gt;
(cherry picked from commit 6a2e413a5aad4044693960b3cf9a4ec308809a94)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
(cherry picked from commit 6b78da362f411315bd766d1ec6789de6b8f55bfd)
</pre>
</div>
</content>
</entry>
<entry>
<title>FlexboxLayout: Fix alignment issue with fillX</title>
<updated>2026-03-31T05:47:39+00:00</updated>
<author>
<name>Jan Arve Sæther</name>
<email>jan-arve.saether@qt.io</email>
</author>
<published>2026-03-29T09:34:26+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=b242282564ebbb6e5870d51d8709dde8e86a685e'/>
<id>b242282564ebbb6e5870d51d8709dde8e86a685e</id>
<content type='text'>
Before telling Yoga to stretch an item in the cross-axis, (by calling
setItemStretchAlongCrossSection()), the previous code only checked
whether fillX was set, regardless of the orientation of the FlexboxLayout

The correct is to check if the item wants to fill in the cross axis, so
it should be:

    if (layout_direction_is_horizontal &amp;&amp; item-&gt;fillHeight()
    || layout_direction_is_vertical &amp;&amp; item-&gt;fillWidth())

Task-number: QTBUG-142021
Change-Id: I23182fbac25c6aa6d3ac9c33c70b99f4018a8fa6
Reviewed-by: Thomas Hartmann &lt;thomas.hartmann@qt.io&gt;
Reviewed-by: SanthoshKumar Selvaraj &lt;santhosh.kumar.selvaraj@qt.io&gt;
(cherry picked from commit 98ef405b1bfe552899d21e5af4d4738871f6c535)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
(cherry picked from commit d96bec8bef10c2c0587417de2d69e378f7e0a1e3)
(cherry picked from commit f1197c8214903708a795392353b8120657a6a7e5)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Before telling Yoga to stretch an item in the cross-axis, (by calling
setItemStretchAlongCrossSection()), the previous code only checked
whether fillX was set, regardless of the orientation of the FlexboxLayout

The correct is to check if the item wants to fill in the cross axis, so
it should be:

    if (layout_direction_is_horizontal &amp;&amp; item-&gt;fillHeight()
    || layout_direction_is_vertical &amp;&amp; item-&gt;fillWidth())

Task-number: QTBUG-142021
Change-Id: I23182fbac25c6aa6d3ac9c33c70b99f4018a8fa6
Reviewed-by: Thomas Hartmann &lt;thomas.hartmann@qt.io&gt;
Reviewed-by: SanthoshKumar Selvaraj &lt;santhosh.kumar.selvaraj@qt.io&gt;
(cherry picked from commit 98ef405b1bfe552899d21e5af4d4738871f6c535)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
(cherry picked from commit d96bec8bef10c2c0587417de2d69e378f7e0a1e3)
(cherry picked from commit f1197c8214903708a795392353b8120657a6a7e5)
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix size hint calculation</title>
<updated>2026-03-31T05:47:39+00:00</updated>
<author>
<name>Jan Arve Sæther</name>
<email>jan-arve.saether@qt.io</email>
</author>
<published>2026-03-29T10:42:54+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=dc70b0a5f98cc1db0c551931542081a066831f18'/>
<id>dc70b0a5f98cc1db0c551931542081a066831f18</id>
<content type='text'>
This fixes some bugs when calculating size hints, notably:
* Include gaps
* minimum size hints was not calculated correctly (was always (0,0))
* maximum size hints was always infinite

size hints are now calculated differently depending on wrap or not (for
brevity, the following only describes it for direction == Row):

If it doesn't wrap:

minimumWidth:
  the sum of all childrens minimumWidths (+gap+margins)
minimumHeight:
  the maximum of all the childrens minimumHeights

preferredWidth:
  the sum of all childrens preferredWidths (+gap+margins)
preferredHeight:
  the maximum of all the childrens preferredHeights

maximumWidth:
  the sum of all childrens maximumWidths (+gap+margins)
maximumHeight:
  the maximum of all the childrens maximumHeights

Otherwise, if it wraps:

minimumWidth:
  the maximum of all the childrens minimumWidths
minimumHeight:
  the maximum of all the childrens minimumHeights

preferredWidth: (this might change in future)
  the sum of all childrens preferredWidths (+gap+margins)
preferredHeight:
  the maximum of all the childrens preferredHeights

maximumWidth:
  the sum of all childrens maximumWidths (+gap+margins)
maximumHeight:
  the sum of all childrens maximumHeights (+gap+margins)

Except from preferred size, the above is consistent with how e.g.
QLabel's size hints are

Task-number: QTBUG-141055
Change-Id: Idcdda62e9bafaf6cdc65438867a276b845c07f20
Reviewed-by: SanthoshKumar Selvaraj &lt;santhosh.kumar.selvaraj@qt.io&gt;
(cherry picked from commit 3a714efe0672ae1ba06f09864f64957560c69b91)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
(cherry picked from commit b3af589c3d71e6da37acfa982b52b5642c1032b1)
(cherry picked from commit f48ee57307317efa8e5ea498686a2f9e9b09024b)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This fixes some bugs when calculating size hints, notably:
* Include gaps
* minimum size hints was not calculated correctly (was always (0,0))
* maximum size hints was always infinite

size hints are now calculated differently depending on wrap or not (for
brevity, the following only describes it for direction == Row):

If it doesn't wrap:

minimumWidth:
  the sum of all childrens minimumWidths (+gap+margins)
minimumHeight:
  the maximum of all the childrens minimumHeights

preferredWidth:
  the sum of all childrens preferredWidths (+gap+margins)
preferredHeight:
  the maximum of all the childrens preferredHeights

maximumWidth:
  the sum of all childrens maximumWidths (+gap+margins)
maximumHeight:
  the maximum of all the childrens maximumHeights

Otherwise, if it wraps:

minimumWidth:
  the maximum of all the childrens minimumWidths
minimumHeight:
  the maximum of all the childrens minimumHeights

preferredWidth: (this might change in future)
  the sum of all childrens preferredWidths (+gap+margins)
preferredHeight:
  the maximum of all the childrens preferredHeights

maximumWidth:
  the sum of all childrens maximumWidths (+gap+margins)
maximumHeight:
  the sum of all childrens maximumHeights (+gap+margins)

Except from preferred size, the above is consistent with how e.g.
QLabel's size hints are

Task-number: QTBUG-141055
Change-Id: Idcdda62e9bafaf6cdc65438867a276b845c07f20
Reviewed-by: SanthoshKumar Selvaraj &lt;santhosh.kumar.selvaraj@qt.io&gt;
(cherry picked from commit 3a714efe0672ae1ba06f09864f64957560c69b91)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
(cherry picked from commit b3af589c3d71e6da37acfa982b52b5642c1032b1)
(cherry picked from commit f48ee57307317efa8e5ea498686a2f9e9b09024b)
</pre>
</div>
</content>
</entry>
<entry>
<title>QQmlSortFilterProxyModel: don't pass const Connection to disconnect()</title>
<updated>2026-03-28T08:16:23+00:00</updated>
<author>
<name>Marc Mutz</name>
<email>marc.mutz@qt.io</email>
</author>
<published>2026-03-20T20:17:20+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=791f5b09dd5d67f1f8267de7e2b62c47746c2d4b'/>
<id>791f5b09dd5d67f1f8267de7e2b62c47746c2d4b</id>
<content type='text'>
That overload will be deprecated, because the function modifies the
argument.

Amends 9efc1fb4ac7982f105a13781fccff74a61907601 (6.10).

Task-number: QTBUG-144929
Change-Id: Idcbdbaa53312f5556dfdeb2055c26540bc988fd6
Reviewed-by: Ulf Hermann &lt;ulf.hermann@qt.io&gt;
(cherry picked from commit 6229f8991d18b34f12caf1e1c9dce1b328d86b78)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
(cherry picked from commit 5b5fba0d6b4bd79ce8d3372ca074b3a8dec17597)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
That overload will be deprecated, because the function modifies the
argument.

Amends 9efc1fb4ac7982f105a13781fccff74a61907601 (6.10).

Task-number: QTBUG-144929
Change-Id: Idcbdbaa53312f5556dfdeb2055c26540bc988fd6
Reviewed-by: Ulf Hermann &lt;ulf.hermann@qt.io&gt;
(cherry picked from commit 6229f8991d18b34f12caf1e1c9dce1b328d86b78)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
(cherry picked from commit 5b5fba0d6b4bd79ce8d3372ca074b3a8dec17597)
</pre>
</div>
</content>
</entry>
<entry>
<title>QQmlTreeModelToTableModel: don't pass const Connection to disconnect()</title>
<updated>2026-03-28T08:16:17+00:00</updated>
<author>
<name>Marc Mutz</name>
<email>marc.mutz@qt.io</email>
</author>
<published>2026-03-20T20:17:20+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=7af9d0d2194c0237feb02eeac2e5309b21df3a85'/>
<id>7af9d0d2194c0237feb02eeac2e5309b21df3a85</id>
<content type='text'>
That overload will be deprecated, because the function modifies the
argument.

Amends cc0fb193cc65bd6b7f066a6d4a0adf1bdb5a702e.

Pick-to: 6.8
Task-number: QTBUG-144929
Change-Id: I3895b65baf87058fbabefbfda3733936a3dd18f0
Reviewed-by: Ulf Hermann &lt;ulf.hermann@qt.io&gt;
(cherry picked from commit f90616c9cf1a0820e38ad9cf67bf42fc6ab2a7e8)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
(cherry picked from commit 870c541fc3d125f5b13d05b079beb71d7eaed3f3)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
That overload will be deprecated, because the function modifies the
argument.

Amends cc0fb193cc65bd6b7f066a6d4a0adf1bdb5a702e.

Pick-to: 6.8
Task-number: QTBUG-144929
Change-Id: I3895b65baf87058fbabefbfda3733936a3dd18f0
Reviewed-by: Ulf Hermann &lt;ulf.hermann@qt.io&gt;
(cherry picked from commit f90616c9cf1a0820e38ad9cf67bf42fc6ab2a7e8)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
(cherry picked from commit 870c541fc3d125f5b13d05b079beb71d7eaed3f3)
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove per-library QT_NO_FOREACH</title>
<updated>2026-03-27T00:38:51+00:00</updated>
<author>
<name>Marc Mutz</name>
<email>marc.mutz@qt.io</email>
</author>
<published>2026-03-24T14:51:04+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=d3e6de6b6ad91f4d920f5ea554203a6c60649463'/>
<id>d3e6de6b6ad91f4d920f5ea554203a6c60649463</id>
<content type='text'>
Since 8edbcdbeb49630c207f3111d24b9c9e07029e333, the whole module is
marked as QT_NO_FOREACH, with only individual TUs #undef'ing the macro
until they, too, are ported.

Amends said commit (6.7).

Pick-to: 6.8
Task-number: QTBUG-115808
Change-Id: Ifc72ced05b6e6d929e3eb0ac5211688839d88e0c
Reviewed-by: Ulf Hermann &lt;ulf.hermann@qt.io&gt;
(cherry picked from commit bb6f2e742ee4d40e8ea8f58b7c9fc5e77400b4f9)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
(cherry picked from commit f59f6c8c7fcb09e2fa4cd869e35130ccbc034639)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Since 8edbcdbeb49630c207f3111d24b9c9e07029e333, the whole module is
marked as QT_NO_FOREACH, with only individual TUs #undef'ing the macro
until they, too, are ported.

Amends said commit (6.7).

Pick-to: 6.8
Task-number: QTBUG-115808
Change-Id: Ifc72ced05b6e6d929e3eb0ac5211688839d88e0c
Reviewed-by: Ulf Hermann &lt;ulf.hermann@qt.io&gt;
(cherry picked from commit bb6f2e742ee4d40e8ea8f58b7c9fc5e77400b4f9)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
(cherry picked from commit f59f6c8c7fcb09e2fa4cd869e35130ccbc034639)
</pre>
</div>
</content>
</entry>
<entry>
<title>quickwidget example: fix C++17-ism</title>
<updated>2026-03-27T00:38:32+00:00</updated>
<author>
<name>Marc Mutz</name>
<email>marc.mutz@qt.io</email>
</author>
<published>2026-03-23T19:32:51+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=5497a9c8cf91ea66d170be401dee24bfa98fd1f7'/>
<id>5497a9c8cf91ea66d170be401dee24bfa98fd1f7</id>
<content type='text'>
Implicit capture of this as part of [=] is deprecated in C++20, and
the replacement, [=,this] is C++20-only, so grab the nettle and list
all captured variables manually, which is the only formulation that
works without warnings in both dialects.

Amends a184f2e0abfa0daf9190b72901208373dd5c1f79 (6.4).

Pick-to: 6.8
Change-Id: Ia46b611bb2474799dcf4e2dd113a4dc6cb7fffdf
Reviewed-by: Laszlo Agocs &lt;laszlo.agocs@qt.io&gt;
(cherry picked from commit 7d545fe837b94b5cb1d1b2a960ed6f8a2f477a92)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
(cherry picked from commit aa4a1d4d41606110fd052d3fe5799a9ee74f7f7d)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Implicit capture of this as part of [=] is deprecated in C++20, and
the replacement, [=,this] is C++20-only, so grab the nettle and list
all captured variables manually, which is the only formulation that
works without warnings in both dialects.

Amends a184f2e0abfa0daf9190b72901208373dd5c1f79 (6.4).

Pick-to: 6.8
Change-Id: Ia46b611bb2474799dcf4e2dd113a4dc6cb7fffdf
Reviewed-by: Laszlo Agocs &lt;laszlo.agocs@qt.io&gt;
(cherry picked from commit 7d545fe837b94b5cb1d1b2a960ed6f8a2f477a92)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
(cherry picked from commit aa4a1d4d41606110fd052d3fe5799a9ee74f7f7d)
</pre>
</div>
</content>
</entry>
<entry>
<title>fix double lookup in QQmlMetaType::qmlRemoveModuleRegistration()</title>
<updated>2026-03-24T13:17:59+00:00</updated>
<author>
<name>Marc Mutz</name>
<email>marc.mutz@qt.io</email>
</author>
<published>2026-03-20T08:45:34+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=c1adc16e18f15fc7ed5d1923313f94a154699804'/>
<id>c1adc16e18f15fc7ed5d1923313f94a154699804</id>
<content type='text'>
We shouldn't do two lookups for the rare (as in: error) case that an
uri is registered twice, while the non-error case always needs two.

Thanksfully, the fix is very easy, as remove() already returns whether
something was removed, so just use that info instead of calling
contains() first.

Amends dfb4778f6ae2c21c4de2d34b58a6dad465af14b0 (5.15).

Pick-to: 6.8
Change-Id: I0ea166cd2c74e00fbfb49d1ef4bb241b5289d7a0
Reviewed-by: Ulf Hermann &lt;ulf.hermann@qt.io&gt;
(cherry picked from commit 43e299985dd0d478b6e08526c723cc2044ddf364)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
(cherry picked from commit 49d293a395ea9dc121ed3938ea982cfc52e0fda8)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We shouldn't do two lookups for the rare (as in: error) case that an
uri is registered twice, while the non-error case always needs two.

Thanksfully, the fix is very easy, as remove() already returns whether
something was removed, so just use that info instead of calling
contains() first.

Amends dfb4778f6ae2c21c4de2d34b58a6dad465af14b0 (5.15).

Pick-to: 6.8
Change-Id: I0ea166cd2c74e00fbfb49d1ef4bb241b5289d7a0
Reviewed-by: Ulf Hermann &lt;ulf.hermann@qt.io&gt;
(cherry picked from commit 43e299985dd0d478b6e08526c723cc2044ddf364)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
(cherry picked from commit 49d293a395ea9dc121ed3938ea982cfc52e0fda8)
</pre>
</div>
</content>
</entry>
<entry>
<title>QQuickDeliveryAgent: avoid mutable keys in hoverItems map</title>
<updated>2026-03-23T12:24:43+00:00</updated>
<author>
<name>Aurélien Brooke</name>
<email>aurelien@bahiasoft.fr</email>
</author>
<published>2026-03-03T19:15:41+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=1ee646729c9d22227f23caa06fff444833ff3c0c'/>
<id>1ee646729c9d22227f23caa06fff444833ff3c0c</id>
<content type='text'>
hoverItems was stored as QFlatMap&lt;QPointer&lt;QQuickItem&gt;, uint&gt;. During
hover delivery, a hovered item may be destroyed, which turns QPointer
keys into nullptr in-place. Since QFlatMap relies on key ordering,
mutating keys breaks the map invariant and triggers lower_bound() debug
assertions on find(). In release, the same precondition violation is
undefined behavior and can lead to missed lookups.

Store hover state in a QList&lt;HoverItemState&gt; instead, where
HoverItemState keeps a guarded QPointer&lt;QQuickItem&gt; and hoverId.
The number of hovered items is small, so linear lookup is acceptable
and avoids the map key invariant entirely.

Conflict resolution for 6.10: the replacement of QVector with QList in
941445ba18c8003948dc9bb9e257114ca13e12fb and the optimisation to reduce
QTransform usage in 81405bdeb45360809a97d12d2ad5ccbaf32af570 was not
picked back to 6.10 and required trivial adjustments.

Amends d5cd8ac31577f4feecb0934f30f58af25261b5b1 and
bbcc2657fa0dbf715e6db7d675662e4be94a1e04.

Pick-to: 6.8
Change-Id: Ia63b09c113c9ae78e35bda6d6fab58b807b0115a
Reviewed-by: Volker Hilsheimer &lt;volker.hilsheimer@qt.io&gt;
(cherry picked from commit 31f6e3b0b2323243b7ed7d0889f16be3de5cb595)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
(cherry picked from commit f40fb23903d18c33076679596c3b07702a7259bc)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
hoverItems was stored as QFlatMap&lt;QPointer&lt;QQuickItem&gt;, uint&gt;. During
hover delivery, a hovered item may be destroyed, which turns QPointer
keys into nullptr in-place. Since QFlatMap relies on key ordering,
mutating keys breaks the map invariant and triggers lower_bound() debug
assertions on find(). In release, the same precondition violation is
undefined behavior and can lead to missed lookups.

Store hover state in a QList&lt;HoverItemState&gt; instead, where
HoverItemState keeps a guarded QPointer&lt;QQuickItem&gt; and hoverId.
The number of hovered items is small, so linear lookup is acceptable
and avoids the map key invariant entirely.

Conflict resolution for 6.10: the replacement of QVector with QList in
941445ba18c8003948dc9bb9e257114ca13e12fb and the optimisation to reduce
QTransform usage in 81405bdeb45360809a97d12d2ad5ccbaf32af570 was not
picked back to 6.10 and required trivial adjustments.

Amends d5cd8ac31577f4feecb0934f30f58af25261b5b1 and
bbcc2657fa0dbf715e6db7d675662e4be94a1e04.

Pick-to: 6.8
Change-Id: Ia63b09c113c9ae78e35bda6d6fab58b807b0115a
Reviewed-by: Volker Hilsheimer &lt;volker.hilsheimer@qt.io&gt;
(cherry picked from commit 31f6e3b0b2323243b7ed7d0889f16be3de5cb595)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
(cherry picked from commit f40fb23903d18c33076679596c3b07702a7259bc)
</pre>
</div>
</content>
</entry>
<entry>
<title>qmlformat: Preserve comments inside array/object patterns and elisions</title>
<updated>2026-03-20T14:04:34+00:00</updated>
<author>
<name>Olivier De Cannière</name>
<email>olivier.decanniere@qt.io</email>
</author>
<published>2026-03-10T12:34:05+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=897e99bb44b1a67290825d00198b558e0c8cde3b'/>
<id>897e99bb44b1a67290825d00198b558e0c8cde3b</id>
<content type='text'>
We were not recording enough locations for the comments to attach to.

Record them and output the tokens with their attached comments so they
don't get lost.

Remove manual addition of elision commas in PatternElementList and rely
on normal ast visiting to reach the elision.

Amends d41f97e86702d8c5ac81a4246e1aab8dd965cbe4

Fixes: QTBUG-144812
Task-number: QTBUG-123386
Pick-to: 6.8
Change-Id: I4c942fc7567db990d0fd1734643911159c4ef8cf
Reviewed-by: Ulf Hermann &lt;ulf.hermann@qt.io&gt;
(cherry picked from commit 46e2de544c6374dc075747f50c938e48fb9f0505)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
(cherry picked from commit 8f65e87d426edf11ec009c2a25eac4e3c8361f4f)
Reviewed-by: Fabian Kosmale &lt;fabian.kosmale@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We were not recording enough locations for the comments to attach to.

Record them and output the tokens with their attached comments so they
don't get lost.

Remove manual addition of elision commas in PatternElementList and rely
on normal ast visiting to reach the elision.

Amends d41f97e86702d8c5ac81a4246e1aab8dd965cbe4

Fixes: QTBUG-144812
Task-number: QTBUG-123386
Pick-to: 6.8
Change-Id: I4c942fc7567db990d0fd1734643911159c4ef8cf
Reviewed-by: Ulf Hermann &lt;ulf.hermann@qt.io&gt;
(cherry picked from commit 46e2de544c6374dc075747f50c938e48fb9f0505)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
(cherry picked from commit 8f65e87d426edf11ec009c2a25eac4e3c8361f4f)
Reviewed-by: Fabian Kosmale &lt;fabian.kosmale@qt.io&gt;
</pre>
</div>
</content>
</entry>
</feed>
