<feed xmlns='http://www.w3.org/2005/Atom'>
<title>qt/qtdeclarative.git, branch dev</title>
<subtitle>Qt Declarative (Quick 2)
</subtitle>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/'/>
<entry>
<title>cmake: Drop &lt;= 3.18 support code</title>
<updated>2026-05-07T12:23:06+00:00</updated>
<author>
<name>Fabian Kosmale</name>
<email>fabian.kosmale@qt.io</email>
</author>
<published>2026-05-04T14:51:19+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=21bf4c34eb302e742df961775af5decdfed2c10a'/>
<id>21bf4c34eb302e742df961775af5decdfed2c10a</id>
<content type='text'>
This mainly simplifies the workarounds employed to guard against users
changing CMP0118 to OLD behind our backs.

Change-Id: I272670d9f13270b02306f9878dfb3201263c9ce0
Reviewed-by: Joerg Bornemann &lt;joerg.bornemann@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This mainly simplifies the workarounds employed to guard against users
changing CMP0118 to OLD behind our backs.

Change-Id: I272670d9f13270b02306f9878dfb3201263c9ce0
Reviewed-by: Joerg Bornemann &lt;joerg.bornemann@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Dialogs: Use generic QtQuick.Controls import in base fallback dialogs</title>
<updated>2026-05-07T11:52:33+00:00</updated>
<author>
<name>Morten Sørvig</name>
<email>morten.sorvig@qt.io</email>
</author>
<published>2026-04-14T16:05:46+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=9ebd2fbd7ea08333257f8566c3994870451f0888'/>
<id>9ebd2fbd7ea08333257f8566c3994870451f0888</id>
<content type='text'>
Commit f2920663dcd3 ("Dialogs: Only import the QQC2 module used by the
style") changed the base fallback dialog QML files to import
QtQuick.Controls.Basic instead of QtQuick.Controls. This hardcodes the
Basic style for the fallback, preventing the active style from being
picked up at runtime. Only the style-specific files (+Fusion/, +Material/, etc.) should hardcode their style module.

Revert the base fallback imports to use the generic QtQuick.Controls
module so the active style is applied correctly.

Fixes: QTBUG-133655
Pick-to: 6.8 6.11
Change-Id: Ia4b98e13858c411d0b78bdc16027093bf685ce2e
Reviewed-by: Oliver Eftevaag &lt;oliver.eftevaag@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Commit f2920663dcd3 ("Dialogs: Only import the QQC2 module used by the
style") changed the base fallback dialog QML files to import
QtQuick.Controls.Basic instead of QtQuick.Controls. This hardcodes the
Basic style for the fallback, preventing the active style from being
picked up at runtime. Only the style-specific files (+Fusion/, +Material/, etc.) should hardcode their style module.

Revert the base fallback imports to use the generic QtQuick.Controls
module so the active style is applied correctly.

Fixes: QTBUG-133655
Pick-to: 6.8 6.11
Change-Id: Ia4b98e13858c411d0b78bdc16027093bf685ce2e
Reviewed-by: Oliver Eftevaag &lt;oliver.eftevaag@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tst_qquickhoverhandler:touchDrag: set hover interval</title>
<updated>2026-05-07T11:52:14+00:00</updated>
<author>
<name>Morten Sørvig</name>
<email>morten.sorvig@qt.io</email>
</author>
<published>2026-04-27T10:43:03+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=a81892f79a47806ae0e01e8060ba9180e974d78e'/>
<id>a81892f79a47806ae0e01e8060ba9180e974d78e</id>
<content type='text'>
Stabilize touchDrag() by setting frameSynchronousHoverInterval
to 0. This ensures that the test does not accidentally
skip over updating the hover state, which can happen
with the default 100ms interval.

Change-Id: I8cecca2b93ef19bf37c8d76885a4b00758e1103e
Reviewed-by: Morten Johan Sørvig &lt;morten.sorvig@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Stabilize touchDrag() by setting frameSynchronousHoverInterval
to 0. This ensures that the test does not accidentally
skip over updating the hover state, which can happen
with the default 100ms interval.

Change-Id: I8cecca2b93ef19bf37c8d76885a4b00758e1103e
Reviewed-by: Morten Johan Sørvig &lt;morten.sorvig@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "QtQml: Store enum values in QV4::Value"</title>
<updated>2026-05-07T11:50:46+00:00</updated>
<author>
<name>Olivier De Cannière</name>
<email>olivier.decanniere@qt.io</email>
</author>
<published>2026-05-06T09:58:03+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=546b76044f71e9a482e717f0cd44533e5ec5a9b8'/>
<id>546b76044f71e9a482e717f0cd44533e5ec5a9b8</id>
<content type='text'>
This reverts commit e035c8adf2d1c7ef6d152c377994df1acc162975.

Reason for revert: Breaks enum value to int conversion

---

enum E { V = 0xFFFF'FFFF };
Q_ENUM(E)

Without patch:
console.log(E.V) -&gt; -1

With patch:
console.log(E.V) -&gt; -1
console.log(E.V) -&gt; 4294967295 (QV4_FORCE_INTERPRETER=1)

Fixes: QTBUG-146583
Change-Id: Idd6c21abeb791d568fd3982b4f1dc570d1020741
Reviewed-by: Fabian Kosmale &lt;fabian.kosmale@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit e035c8adf2d1c7ef6d152c377994df1acc162975.

Reason for revert: Breaks enum value to int conversion

---

enum E { V = 0xFFFF'FFFF };
Q_ENUM(E)

Without patch:
console.log(E.V) -&gt; -1

With patch:
console.log(E.V) -&gt; -1
console.log(E.V) -&gt; 4294967295 (QV4_FORCE_INTERPRETER=1)

Fixes: QTBUG-146583
Change-Id: Idd6c21abeb791d568fd3982b4f1dc570d1020741
Reviewed-by: Fabian Kosmale &lt;fabian.kosmale@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>StyleKit: add qtlabsstylekit-overview.qdoc</title>
<updated>2026-05-07T11:42:35+00:00</updated>
<author>
<name>Richard Moe Gustavsen</name>
<email>richard.gustavsen@qt.io</email>
</author>
<published>2026-03-30T09:07:48+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=a412104b5f911573dbe50ca6f663ca471888c7a6'/>
<id>a412104b5f911573dbe50ca6f663ca471888c7a6</id>
<content type='text'>
Add an overview page to the documentation that introduces
the main features that are available in StyleKit.

Pick-to: 6.11
Change-Id: Ib0a3146dec94e59fd016b22ae562185404b0f36e
Reviewed-by: Topi Reinio &lt;topi.reinio@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add an overview page to the documentation that introduces
the main features that are available in StyleKit.

Pick-to: 6.11
Change-Id: Ib0a3146dec94e59fd016b22ae562185404b0f36e
Reviewed-by: Topi Reinio &lt;topi.reinio@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Android: remove Kotlin Android plugin from Qt Quick for Android examples</title>
<updated>2026-05-07T05:41:46+00:00</updated>
<author>
<name>Rami Potinkara</name>
<email>rami.potinkara@qt.io</email>
</author>
<published>2026-05-05T04:57:59+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=43745b16d73433027a89d66ba42235bbbf88a74f'/>
<id>43745b16d73433027a89d66ba42235bbbf88a74f</id>
<content type='text'>
Amends: 34e1c8c25891b3c70f58e2e8bd7689e4d2e4c46f

Fixes: QTBUG-146555
Pick-to: 6.11
Change-Id: Ice363263467f3f0732eb73736ba46a8aa4d95b71
Reviewed-by: Olli Vuolteenaho &lt;olli.vuolteenaho@qt.io&gt;
Reviewed-by: Ville Voutilainen &lt;ville.voutilainen@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Amends: 34e1c8c25891b3c70f58e2e8bd7689e4d2e4c46f

Fixes: QTBUG-146555
Pick-to: 6.11
Change-Id: Ice363263467f3f0732eb73736ba46a8aa4d95b71
Reviewed-by: Olli Vuolteenaho &lt;olli.vuolteenaho@qt.io&gt;
Reviewed-by: Ville Voutilainen &lt;ville.voutilainen@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>QtQml: Name QQmlProperty QML value type as qmlProperty</title>
<updated>2026-05-06T22:45:12+00:00</updated>
<author>
<name>Pierre-Yves Siret</name>
<email>pierre-yves.siret@dice-engineering.com</email>
</author>
<published>2026-02-11T22:58:05+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=5d68f04578a1b004b39df408ecb8178db82f0a72'/>
<id>5d68f04578a1b004b39df408ecb8178db82f0a72</id>
<content type='text'>
QQmlProperty was previously exposed as an anonymous value type to QML.
Expose it as `qmlProperty` so it can be used as a property type instead
of `var`.
The need to refer to a QML property is already proven by various QML
apis having a target/property pair of properties, this patches allows
them to be bundled in a single property.
This can be leveraged by user code for cleaner alternative APIs and
as a potential exploration for Qt 7.

qmlProperty is currently not constructible from QML but can be build and
passed from C++ in business code or, more likely, with helper functions.
For now we don't change that, that can be proposed in a future patch.

Change-Id: I3bcbc7a7da54eaae956cf4edfcbb8d65252af4a4
Reviewed-by: Fabian Kosmale &lt;fabian.kosmale@qt.io&gt;
Reviewed-by: Ulf Hermann &lt;ulf.hermann@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
QQmlProperty was previously exposed as an anonymous value type to QML.
Expose it as `qmlProperty` so it can be used as a property type instead
of `var`.
The need to refer to a QML property is already proven by various QML
apis having a target/property pair of properties, this patches allows
them to be bundled in a single property.
This can be leveraged by user code for cleaner alternative APIs and
as a potential exploration for Qt 7.

qmlProperty is currently not constructible from QML but can be build and
passed from C++ in business code or, more likely, with helper functions.
For now we don't change that, that can be proposed in a future patch.

Change-Id: I3bcbc7a7da54eaae956cf4edfcbb8d65252af4a4
Reviewed-by: Fabian Kosmale &lt;fabian.kosmale@qt.io&gt;
Reviewed-by: Ulf Hermann &lt;ulf.hermann@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>QQuickDrag: fix binding loop and re-entrancy for Automatic drag type</title>
<updated>2026-05-06T20:17:39+00:00</updated>
<author>
<name>Shawn Rutledge</name>
<email>shawn.rutledge@qt.io</email>
</author>
<published>2026-04-21T08:22:40+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=ae6e67e4cf23af6dbceab5e62881864b3a38c867'/>
<id>ae6e67e4cf23af6dbceab5e62881864b3a38c867</id>
<content type='text'>
When Drag.dragType is Automatic and Drag.active is bound to e.g.
DragHandler.active, calling setActive(true) previously invoked
startDrag() immediately, which in turn called QDrag::exec(). That
exec() call enters a nested event loop, which is incompatible with
being called from within a QML binding or JS expression: the QML engine
is still mid-evaluation when exec() blocks, so when the pointer release
arrives in the nested loop, deactivates the DragHandler, and causes the
binding to re-trigger, the engine detects a binding loop.

Fix this by deferring the startDrag() call via Qt::QueuedConnection so
that the current JS frame unwinds completely before exec() runs from a
clean event-loop context. An 'if (d-&gt;active)' guard in the deferred
lambda handles the case where the drag is cancelled before the queued
call fires.

The executingNativeDrag flag is now set/cleared around exec() inside
startDrag() itself (covering both the Automatic binding path and direct
QML calls to Drag.startDrag()). It suppresses re-entrant setActive(false)
calls that arrive via DragHandler deactivation while exec() is blocking,
since startDrag() already handles all cleanup when exec() returns.

Pick-to: 6.11
Fixes: QTBUG-144006
Change-Id: I9bf6a4e6f3edea7e12e187b5756ab483c462696a
Reviewed-by: Fabian Kosmale &lt;fabian.kosmale@qt.io&gt;
Reviewed-by: Konsta Alajärvi &lt;konsta.alajarvi@qt.io&gt;
Reviewed-by: Oliver Eftevaag &lt;oliver.eftevaag@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When Drag.dragType is Automatic and Drag.active is bound to e.g.
DragHandler.active, calling setActive(true) previously invoked
startDrag() immediately, which in turn called QDrag::exec(). That
exec() call enters a nested event loop, which is incompatible with
being called from within a QML binding or JS expression: the QML engine
is still mid-evaluation when exec() blocks, so when the pointer release
arrives in the nested loop, deactivates the DragHandler, and causes the
binding to re-trigger, the engine detects a binding loop.

Fix this by deferring the startDrag() call via Qt::QueuedConnection so
that the current JS frame unwinds completely before exec() runs from a
clean event-loop context. An 'if (d-&gt;active)' guard in the deferred
lambda handles the case where the drag is cancelled before the queued
call fires.

The executingNativeDrag flag is now set/cleared around exec() inside
startDrag() itself (covering both the Automatic binding path and direct
QML calls to Drag.startDrag()). It suppresses re-entrant setActive(false)
calls that arrive via DragHandler deactivation while exec() is blocking,
since startDrag() already handles all cleanup when exec() returns.

Pick-to: 6.11
Fixes: QTBUG-144006
Change-Id: I9bf6a4e6f3edea7e12e187b5756ab483c462696a
Reviewed-by: Fabian Kosmale &lt;fabian.kosmale@qt.io&gt;
Reviewed-by: Konsta Alajärvi &lt;konsta.alajarvi@qt.io&gt;
Reviewed-by: Oliver Eftevaag &lt;oliver.eftevaag@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Silence some static code checker complaints in qsg*</title>
<updated>2026-05-06T13:27:28+00:00</updated>
<author>
<name>Laszlo Agocs</name>
<email>laszlo.agocs@qt.io</email>
</author>
<published>2026-05-05T10:29:45+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=c570680474bcd5f098e1fda4c05bb46885e5bc3a'/>
<id>c570680474bcd5f098e1fda4c05bb46885e5bc3a</id>
<content type='text'>
Pick-to: 6.11 6.8
Axivion-Id: qt_Essentials_qtquick_dev_linux:SV1543
Axivion-Id: qt_Essentials_qtquick_dev_linux:SV1544
Axivion-Id: qt_Essentials_qtquick_dev_linux:SV1549
Axivion-Id: qt_Essentials_qtquick_dev_linux:SV1741
Axivion-Id: qt_Essentials_qtquick_dev_linux:SV1803
Axivion-Id: qt_Essentials_qtquick_dev_linux:SV3062
Axivion-Id: qt_Essentials_qtquick_dev_linux:SV3128
Axivion-Id: qt_Essentials_qtquick_dev_linux:SV3129
Axivion-Id: qt_Essentials_qtquick_dev_linux:SV3130
Axivion-Id: qt_Essentials_qtquick_dev_linux:SV3134
Axivion-Id: qt_Essentials_qtquick_dev_linux:SV3135
Axivion-Id: qt_Essentials_qtquick_dev_linux:SV3136
Axivion-Id: qt_Essentials_qtquick_dev_linux:SV3137
Change-Id: I4427a85cfa6050d43ccd74bd354af3301c802151
Reviewed-by: Christian Strømme &lt;christian.stromme@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pick-to: 6.11 6.8
Axivion-Id: qt_Essentials_qtquick_dev_linux:SV1543
Axivion-Id: qt_Essentials_qtquick_dev_linux:SV1544
Axivion-Id: qt_Essentials_qtquick_dev_linux:SV1549
Axivion-Id: qt_Essentials_qtquick_dev_linux:SV1741
Axivion-Id: qt_Essentials_qtquick_dev_linux:SV1803
Axivion-Id: qt_Essentials_qtquick_dev_linux:SV3062
Axivion-Id: qt_Essentials_qtquick_dev_linux:SV3128
Axivion-Id: qt_Essentials_qtquick_dev_linux:SV3129
Axivion-Id: qt_Essentials_qtquick_dev_linux:SV3130
Axivion-Id: qt_Essentials_qtquick_dev_linux:SV3134
Axivion-Id: qt_Essentials_qtquick_dev_linux:SV3135
Axivion-Id: qt_Essentials_qtquick_dev_linux:SV3136
Axivion-Id: qt_Essentials_qtquick_dev_linux:SV3137
Change-Id: I4427a85cfa6050d43ccd74bd354af3301c802151
Reviewed-by: Christian Strømme &lt;christian.stromme@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>QQuickTableView: respect QAIM::buddy() when editing cells</title>
<updated>2026-05-06T08:16:25+00:00</updated>
<author>
<name>Richard Moe Gustavsen</name>
<email>richard.gustavsen@qt.io</email>
</author>
<published>2026-04-20T11:38:10+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=b2af284eac4aa0e936c42c4c62a9fe14c9ab6916'/>
<id>b2af284eac4aa0e936c42c4c62a9fe14c9ab6916</id>
<content type='text'>
When edit() is called, consult QAbstractItemModel::buddy() first to
resolve the target index. This allows the model to redirect editing
to a sibling cell, matching the behavior of other Qt item views like
QTreeView and QTableView.

The included test verifies that we now respect the buddy.
The checkEditAfterReorder() test also had to be modifed slightly.
It assigned a QVariant(QSharedPointer(QAIM)) as model to TableView,
and not the expected QVariant(QAIM). This strangly works in most
cases, but will now cause a warning in canEdit() since the variant
cannot be casted directly to a QAIM.

Pick-to: 6.11
Change-Id: I01092228019c91212c601f104f5f2fa3274e74e0
Reviewed-by: Fabian Kosmale &lt;fabian.kosmale@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When edit() is called, consult QAbstractItemModel::buddy() first to
resolve the target index. This allows the model to redirect editing
to a sibling cell, matching the behavior of other Qt item views like
QTreeView and QTableView.

The included test verifies that we now respect the buddy.
The checkEditAfterReorder() test also had to be modifed slightly.
It assigned a QVariant(QSharedPointer(QAIM)) as model to TableView,
and not the expected QVariant(QAIM). This strangly works in most
cases, but will now cause a warning in canEdit() since the variant
cannot be casted directly to a QAIM.

Pick-to: 6.11
Change-Id: I01092228019c91212c601f104f5f2fa3274e74e0
Reviewed-by: Fabian Kosmale &lt;fabian.kosmale@qt.io&gt;
</pre>
</div>
</content>
</entry>
</feed>
