<feed xmlns='http://www.w3.org/2005/Atom'>
<title>qt/qtdeclarative.git/tests, branch v6.11.1</title>
<subtitle>Qt Declarative (Quick 2)
</subtitle>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/'/>
<entry>
<title>Really fix default alias property after alias sorting</title>
<updated>2026-05-03T05:57:54+00:00</updated>
<author>
<name>Fabian Kosmale</name>
<email>fabian.kosmale@qt.io</email>
</author>
<published>2026-04-30T12:18:54+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=4f28b5469dd8e847abb54b6fa0dd75c6ae0e2874'/>
<id>4f28b5469dd8e847abb54b6fa0dd75c6ae0e2874</id>
<content type='text'>
The condition for fixing up the alias property index was wrong. Instead
of checking the last list element, it was checking the first element
twice.
To avoid further mistakes and to make the logic easier to reason about,
use std::find and std::distance to compute the index, and rely on the
compiler to potentially optimize the loops.

Amends 5b775e96c067995bf21cdf5a3641c50d5b7b272d

Pick-to: 6.11 dev
Fixes: QTBUG-144701
Change-Id: I589378b6cbc8d68f550ff7ec67be9a420ebee4d5
Reviewed-by: Jani Heikkinen &lt;jani.heikkinen@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The condition for fixing up the alias property index was wrong. Instead
of checking the last list element, it was checking the first element
twice.
To avoid further mistakes and to make the logic easier to reason about,
use std::find and std::distance to compute the index, and rely on the
compiler to potentially optimize the loops.

Amends 5b775e96c067995bf21cdf5a3641c50d5b7b272d

Pick-to: 6.11 dev
Fixes: QTBUG-144701
Change-Id: I589378b6cbc8d68f550ff7ec67be9a420ebee4d5
Reviewed-by: Jani Heikkinen &lt;jani.heikkinen@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Windows: add QEXPECT_FAIL to tst_qquicktext spyWidth.size</title>
<updated>2026-04-26T17:33:44+00:00</updated>
<author>
<name>Elias Toivola</name>
<email>elias.toivola@qt.io</email>
</author>
<published>2026-03-26T14:57:25+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=f40646e435090cb045f51f99859119d4212c353e'/>
<id>f40646e435090cb045f51f99859119d4212c353e</id>
<content type='text'>
tst_qquicktext::contentSize(spyWidth.size()) fails consistently on
Windows. Instead of blacklisting it, add QEXPECT_FAIL to it. And remove
the test blacklists for other Windows compilers, as they also look to be
consistently failing and not flaky (QUIP 24).

Task-number: QTBUG-88646
Task-number: QTQAINFRA-7559
Pick-to: 6.8
Change-Id: I4e1519767b1804cbe09954d1f25ca11c6c478ac4
Reviewed-by: Mårten Nordheim &lt;marten.nordheim@qt.io&gt;
(cherry picked from commit c4179b8e121ef9caae8c11adddb8cad2dfc08662)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
tst_qquicktext::contentSize(spyWidth.size()) fails consistently on
Windows. Instead of blacklisting it, add QEXPECT_FAIL to it. And remove
the test blacklists for other Windows compilers, as they also look to be
consistently failing and not flaky (QUIP 24).

Task-number: QTBUG-88646
Task-number: QTQAINFRA-7559
Pick-to: 6.8
Change-Id: I4e1519767b1804cbe09954d1f25ca11c6c478ac4
Reviewed-by: Mårten Nordheim &lt;marten.nordheim@qt.io&gt;
(cherry picked from commit c4179b8e121ef9caae8c11adddb8cad2dfc08662)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>TableView: avoid unnecessary pooling on row/column insertion and removal</title>
<updated>2026-04-25T13:25:30+00:00</updated>
<author>
<name>Richard Moe Gustavsen</name>
<email>richard.gustavsen@qt.io</email>
</author>
<published>2026-04-14T13:27:36+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=c304697a43c8ca9d78fcf9fa8c0e5ff81ecfa015'/>
<id>c304697a43c8ca9d78fcf9fa8c0e5ff81ecfa015</id>
<content type='text'>
When a ViewportOnly rebuild is triggered in TableView by a row
or column insertion or removal, delegate items that survive the
operation (i.e. are not part of the removed range) should not
be pooled and reused. Instead they should simply stay in place
and have their context properties updated to reflect any shift
in flat index, row or column. This avoids a full pool cycle,
preserves any ongoing visual state such as animations, and
suppresses unnecessary pooled/reused signals.

To achieve this, released items are now staged in a temporary
m_releasedItems cache rather than moved directly to the reuse
pool. During the rebuild, resolveModelItem() first searches the
cache for an item whose QPersistentModelIndex matches the
requested cell. If found, the item is reclaimed directly.
Once the rebuild is complete, commitReleasedItems() transfers
any remaining cached items (those whose cells genuinely
disappeared) to the reuse pool, like before.

In order to achieve this, a new QPersistentModelIndex is stored
on each delegate item. That way we know which cell it originally
belonged to, even after changes to the model shifted its
row and column position.

A new auto-test, verifyThatOnlyRemovedRowsArePooled, is included
that verifies the new expected behaviour.

The changes in this patch also uncovered that the test model used
throughout in the test file was implemented with too many assumptions,
and therefore needed some TLC.

Fixes: QTBUG-116650
Fixes: QTBUG-134741
Change-Id: I0b935320b6e7dca215df438f5981a154a8c10385
Reviewed-by: SanthoshKumar Selvaraj &lt;santhosh.kumar.selvaraj@qt.io&gt;
(cherry picked from commit de4b7283c978ca384f6c8bf9f27387158804b601)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When a ViewportOnly rebuild is triggered in TableView by a row
or column insertion or removal, delegate items that survive the
operation (i.e. are not part of the removed range) should not
be pooled and reused. Instead they should simply stay in place
and have their context properties updated to reflect any shift
in flat index, row or column. This avoids a full pool cycle,
preserves any ongoing visual state such as animations, and
suppresses unnecessary pooled/reused signals.

To achieve this, released items are now staged in a temporary
m_releasedItems cache rather than moved directly to the reuse
pool. During the rebuild, resolveModelItem() first searches the
cache for an item whose QPersistentModelIndex matches the
requested cell. If found, the item is reclaimed directly.
Once the rebuild is complete, commitReleasedItems() transfers
any remaining cached items (those whose cells genuinely
disappeared) to the reuse pool, like before.

In order to achieve this, a new QPersistentModelIndex is stored
on each delegate item. That way we know which cell it originally
belonged to, even after changes to the model shifted its
row and column position.

A new auto-test, verifyThatOnlyRemovedRowsArePooled, is included
that verifies the new expected behaviour.

The changes in this patch also uncovered that the test model used
throughout in the test file was implemented with too many assumptions,
and therefore needed some TLC.

Fixes: QTBUG-116650
Fixes: QTBUG-134741
Change-Id: I0b935320b6e7dca215df438f5981a154a8c10385
Reviewed-by: SanthoshKumar Selvaraj &lt;santhosh.kumar.selvaraj@qt.io&gt;
(cherry picked from commit de4b7283c978ca384f6c8bf9f27387158804b601)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>QQuickWidget: Fix tab fence focus cycling</title>
<updated>2026-04-24T02:02:37+00:00</updated>
<author>
<name>Oliver Eftevaag</name>
<email>oliver.eftevaag@qt.io</email>
</author>
<published>2026-04-14T09:41:11+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=f12e362068fe1b77237e8b6f79dda76142c16306'/>
<id>f12e362068fe1b77237e8b6f79dda76142c16306</id>
<content type='text'>
When a QQuickPopup is open inside a QQuickWidget,
pressing Tab on the last focusable item in the popup would move
keyboard focus to a widget outside the QQuickWidget instead of cycling
back to the first item in the popup.

QQuickItem::nextPrevItemInTabFocusChain() has a parameter `warp` which
is used by QQuickWidgets and embedded windows. To prevent wrapping
between the first and last focusable items in the QML scene.

This was working as intentional, with the exception that it would ignore
cases when the current focused item is inside a tab fence. In such
cases, we still want the item to wrap, we just want it to wrap inside
the tab fence, which nextPrevItemInTabFocusChain() already takes into
consideration, as long as we don't return early when wrap=false.

Fix it by only returning early from wrap=false, when not inside a tab
fence.

Fixes: QTBUG-138101
Pick-to: 6.10 6.8
Change-Id: Iab0914161f0a80c3b0df0385cfb1fd0c0027ac7a
Reviewed-by: Doris Verria &lt;doris.verria@qt.io&gt;
(cherry picked from commit 77c3189bc00ebd302b5a211d039db49228dca105)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When a QQuickPopup is open inside a QQuickWidget,
pressing Tab on the last focusable item in the popup would move
keyboard focus to a widget outside the QQuickWidget instead of cycling
back to the first item in the popup.

QQuickItem::nextPrevItemInTabFocusChain() has a parameter `warp` which
is used by QQuickWidgets and embedded windows. To prevent wrapping
between the first and last focusable items in the QML scene.

This was working as intentional, with the exception that it would ignore
cases when the current focused item is inside a tab fence. In such
cases, we still want the item to wrap, we just want it to wrap inside
the tab fence, which nextPrevItemInTabFocusChain() already takes into
consideration, as long as we don't return early when wrap=false.

Fix it by only returning early from wrap=false, when not inside a tab
fence.

Fixes: QTBUG-138101
Pick-to: 6.10 6.8
Change-Id: Iab0914161f0a80c3b0df0385cfb1fd0c0027ac7a
Reviewed-by: Doris Verria &lt;doris.verria@qt.io&gt;
(cherry picked from commit 77c3189bc00ebd302b5a211d039db49228dca105)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Pass arguments to QMarginsF in the correct order</title>
<updated>2026-04-24T02:02:37+00:00</updated>
<author>
<name>Oliver Eftevaag</name>
<email>oliver.eftevaag@qt.io</email>
</author>
<published>2026-03-24T16:34:29+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=02b6f7744c0feef74a1b07d986001d48c37fe908'/>
<id>02b6f7744c0feef74a1b07d986001d48c37fe908</id>
<content type='text'>
QQuickPopupPrivate::windowInsets() returns a QMarginsF object.

The constructor used is
constexpr QMarginsF(qreal left, qreal top, qreal right, qreal bottom) noexcept;

The values passed for top and right were swapped. Fix it in this patch.

Add test that verifies that the margins are set in the correct order.

Pick-to: 6.8
Change-Id: I25af57ac5ee6ddd056dda310392f7f9b2633f302
Reviewed-by: Mitch Curtis &lt;mitch.curtis@qt.io&gt;
(cherry picked from commit b41c6899490135268d27ccfb0cf552f1379387e8)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
QQuickPopupPrivate::windowInsets() returns a QMarginsF object.

The constructor used is
constexpr QMarginsF(qreal left, qreal top, qreal right, qreal bottom) noexcept;

The values passed for top and right were swapped. Fix it in this patch.

Add test that verifies that the margins are set in the correct order.

Pick-to: 6.8
Change-Id: I25af57ac5ee6ddd056dda310392f7f9b2633f302
Reviewed-by: Mitch Curtis &lt;mitch.curtis@qt.io&gt;
(cherry picked from commit b41c6899490135268d27ccfb0cf552f1379387e8)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "qmltyperegistrar: write filename of resolved type, not foreign type"</title>
<updated>2026-04-23T18:44:25+00:00</updated>
<author>
<name>Olivier De Cannière</name>
<email>olivier.decanniere@qt.io</email>
</author>
<published>2026-04-23T12:32:48+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=72c81475f1028ff2bad04fef2206ae63b1697f53'/>
<id>72c81475f1028ff2bad04fef2206ae63b1697f53</id>
<content type='text'>
This reverts commit 439864b68e4dbc500b7eb941e3d0d48e538e8a78.

Reason for revert: Breaks qmlsc (QTBUG-145981)

Fixes: QTBUG-145981
Reopens: QTBUG-145611
Pick-to: dev
Change-Id: I9eff05139cd4659ce822a34a04b4ffe66813d310
Reviewed-by: Sami Shalayel &lt;sami.shalayel@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit 439864b68e4dbc500b7eb941e3d0d48e538e8a78.

Reason for revert: Breaks qmlsc (QTBUG-145981)

Fixes: QTBUG-145981
Reopens: QTBUG-145611
Pick-to: dev
Change-Id: I9eff05139cd4659ce822a34a04b4ffe66813d310
Reviewed-by: Sami Shalayel &lt;sami.shalayel@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "qmltyperegistrar: Update file and line only in TopLevel mode"</title>
<updated>2026-04-23T18:44:22+00:00</updated>
<author>
<name>Olivier De Cannière</name>
<email>olivier.decanniere@qt.io</email>
</author>
<published>2026-04-23T12:22:08+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=f843e84926a27b0baf7345e57bf7ac323f3c5711'/>
<id>f843e84926a27b0baf7345e57bf7ac323f3c5711</id>
<content type='text'>
This reverts commit d7666a15ce36f3e5e5ab5722da43c82124cba8b7.

Reason for revert: Breaks qmlsc (QTBUG-145981)

Task-number: QTBUG-145981
Reopens: QTBUG-145611
Pick-to: dev
Change-Id: I5bacc0b026fb79085e7e608de9b6634318880eb4
Reviewed-by: Sami Shalayel &lt;sami.shalayel@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit d7666a15ce36f3e5e5ab5722da43c82124cba8b7.

Reason for revert: Breaks qmlsc (QTBUG-145981)

Task-number: QTBUG-145981
Reopens: QTBUG-145611
Pick-to: dev
Change-Id: I5bacc0b026fb79085e7e608de9b6634318880eb4
Reviewed-by: Sami Shalayel &lt;sami.shalayel@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>QQuickText: fix inflated implicitWidth with maximumLineCount</title>
<updated>2026-04-23T04:57:09+00:00</updated>
<author>
<name>Vladimir Belyavsky</name>
<email>belyavskyv@gmail.com</email>
</author>
<published>2026-03-27T22:34:08+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=d7109e4336dbbf5c11bc7ee441ef4b6930c24180'/>
<id>d7109e4336dbbf5c11bc7ee441ef4b6930c24180</id>
<content type='text'>
When a Text element uses StyledText with &lt;br&gt; tags, maximumLineCount,
wrapMode: Wrap, and elide: ElideRight, constraining its width could
cause implicitWidth to grow far beyond the correct value.

The root cause is twofold:

1. The loop that creates unwrapped lines for implicit width calculation
used '&lt;=' instead of '&lt;', causing one extra line to be created and
finalized beyond maximumLineCount paragraphs.

2. The multiline-elide code path creates a trailing line via
createLine() to compute the elided text. That line is left unfinalized,
so endLayout() finalizes it at QFIXED_MAX width, inflating
maximumWidth(). Finalize it at zero width right after use.

Fixes: QTBUG-142933
Change-Id: I64bab9512b8400ed63a4dda709259488a2b49a21
Reviewed-by: Shawn Rutledge &lt;shawn.rutledge@qt.io&gt;
(cherry picked from commit 021778a0ad7d5758cee5f5592017e46b4e12171d)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When a Text element uses StyledText with &lt;br&gt; tags, maximumLineCount,
wrapMode: Wrap, and elide: ElideRight, constraining its width could
cause implicitWidth to grow far beyond the correct value.

The root cause is twofold:

1. The loop that creates unwrapped lines for implicit width calculation
used '&lt;=' instead of '&lt;', causing one extra line to be created and
finalized beyond maximumLineCount paragraphs.

2. The multiline-elide code path creates a trailing line via
createLine() to compute the elided text. That line is left unfinalized,
so endLayout() finalizes it at QFIXED_MAX width, inflating
maximumWidth(). Finalize it at zero width right after use.

Fixes: QTBUG-142933
Change-Id: I64bab9512b8400ed63a4dda709259488a2b49a21
Reviewed-by: Shawn Rutledge &lt;shawn.rutledge@qt.io&gt;
(cherry picked from commit 021778a0ad7d5758cee5f5592017e46b4e12171d)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>QQmlPropertyToPropertyBinding: Use JS type coercion</title>
<updated>2026-04-23T04:57:08+00:00</updated>
<author>
<name>Ulf Hermann</name>
<email>ulf.hermann@qt.io</email>
</author>
<published>2026-04-20T06:33:50+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=de25568e55fa2acd34dab63ef096477d3bd17a40'/>
<id>de25568e55fa2acd34dab63ef096477d3bd17a40</id>
<content type='text'>
When QAbstractItemModel::data() returns an invalid QVariant (representing
'undefined' in JS) for a role bound to a typed property like
'required property string foo', the property-to-property binding's write
was silently failing. This happened because writeValueProperty() only uses
QMetaType conversions which cannot convert an invalid QVariant to a
QString. The property kept its old value, and subsequent valid writes
of the same value would not trigger change signals.

Update QQmlPropertyToUnbindablePropertyBinding::update() to perform
proper type coercion using metaTypeToJS() and metaTypeFromJS().

Fixes: QTBUG-145016
Change-Id: I8421e813ddde50d4c252907045448b22a36a0a70
Reviewed-by: Olivier De Cannière &lt;olivier.decanniere@qt.io&gt;
(cherry picked from commit 7c8cb7eb67df93ef6232ef498c97f460e822a984)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When QAbstractItemModel::data() returns an invalid QVariant (representing
'undefined' in JS) for a role bound to a typed property like
'required property string foo', the property-to-property binding's write
was silently failing. This happened because writeValueProperty() only uses
QMetaType conversions which cannot convert an invalid QVariant to a
QString. The property kept its old value, and subsequent valid writes
of the same value would not trigger change signals.

Update QQmlPropertyToUnbindablePropertyBinding::update() to perform
proper type coercion using metaTypeToJS() and metaTypeFromJS().

Fixes: QTBUG-145016
Change-Id: I8421e813ddde50d4c252907045448b22a36a0a70
Reviewed-by: Olivier De Cannière &lt;olivier.decanniere@qt.io&gt;
(cherry picked from commit 7c8cb7eb67df93ef6232ef498c97f460e822a984)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>qmllint: support attached/grouped list object properties</title>
<updated>2026-04-22T19:17:23+00:00</updated>
<author>
<name>Sami Shalayel</name>
<email>sami.shalayel@qt.io</email>
</author>
<published>2026-03-06T09:45:17+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=60b850c1ce3029f7001078a9d2a1a92e65001bca'/>
<id>60b850c1ce3029f7001078a9d2a1a92e65001bca</id>
<content type='text'>
Support attached and grouped properties for UiArrayBindings, in the same
way as UiObjectBinding do. Extract the attached/grouped property code for
visit(UiObjectBinding*) and endvisit(UiObjectBinding*) into a helper and
use the helper for visit(UiArrayBinding*) and endvisit(UiArrayBinding*).

Amends the unknownPropertyDuplicateBinding.qml test that complains about
a missing grouped property not existing, and add a test that binds an
object list to an attached property.

Fixes: QTBUG-140138
Change-Id: I20a4ceafa152aedb4e56cc9a7a05ecff1828659a
Reviewed-by: Ulf Hermann &lt;ulf.hermann@qt.io&gt;
(cherry picked from commit 186bf1a4addff83a43735ba68a830c799384528d)
Reviewed-by: Olivier De Cannière &lt;olivier.decanniere@qt.io&gt;
Reviewed-by: Nicolas Fella &lt;nicolas.fella@kdab.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Support attached and grouped properties for UiArrayBindings, in the same
way as UiObjectBinding do. Extract the attached/grouped property code for
visit(UiObjectBinding*) and endvisit(UiObjectBinding*) into a helper and
use the helper for visit(UiArrayBinding*) and endvisit(UiArrayBinding*).

Amends the unknownPropertyDuplicateBinding.qml test that complains about
a missing grouped property not existing, and add a test that binds an
object list to an attached property.

Fixes: QTBUG-140138
Change-Id: I20a4ceafa152aedb4e56cc9a7a05ecff1828659a
Reviewed-by: Ulf Hermann &lt;ulf.hermann@qt.io&gt;
(cherry picked from commit 186bf1a4addff83a43735ba68a830c799384528d)
Reviewed-by: Olivier De Cannière &lt;olivier.decanniere@qt.io&gt;
Reviewed-by: Nicolas Fella &lt;nicolas.fella@kdab.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
