-
Notifications
You must be signed in to change notification settings - Fork 195
Calls order of q_invokable method #10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
rjcamatos
wants to merge
10,000
commits into
6.2
Choose a base branch
from
dev
base: 6.2
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
qtprojectorg
pushed a commit
that referenced
this pull request
Dec 8, 2023
Using std::binary_search has the requirement that the passed
range fulfils ordering requirements, which was not the case
for the cppKeywords array here.
As the QString doc says [1]:
> QStrings can be compared using overloaded operators such as operator<(),
> operator<=(), operator==(), operator>=(), and so on. Note that
> the comparison is based exclusively on the numeric Unicode
> values of the characters. It is very fast, but is not what a
> human would expect; (...)
Therefore, sort the array accordingly and add an assert to
ensure it will remain sorted.
Fixes an crash/assert when building qtdeclarative with
CXXFLAGS='-D_GLIBCXX_DEBUG':
/usr/include/c++/13/bits/stl_algo.h:2243:
In function:
bool std::binary_search(_FIter, _FIter, const _Tp&) [with _FIter = const
QString*; _Tp = QStringView]
Error: elements in iterator range [first, last) are not partitioned by the
value __val.
Objects involved in the operation:
iterator "first" @ 0x7ffc4a2c4f18 {
type = QString const* (constant iterator);
}
iterator "last" @ 0x7ffc4a2c4f10 {
type = QString const* (constant iterator);
}
Aborted (core dumped)
ninja: build stopped: subcommand failed.
GDB backtrace:
Program terminated with signal SIGABRT, Aborted.
#0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
44 ./nptl/pthread_kill.c: No such file or directory.
(gdb) bt
#0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
#1 0x00007f307e0a815f in __pthread_kill_internal (signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:78
#2 0x00007f307e05a472 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#3 0x00007f307e0444b2 in __GI_abort () at ./stdlib/abort.c:79
#4 0x00007f307e2a300d in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6
#5 0x00005639ff90471d in std::binary_search<QString const*, QStringView> (__first=0x5639ffa1a9c0 <QmltcVisitor::checkForNamingCollisionsWithCpp(QDeferredSharedPointer<QQmlJSScope const> const&)::cppKeywords>,
__last=0x5639ffa1b2c0 <guard variable for QmltcVisitor::checkForNamingCollisionsWithCpp(QDeferredSharedPointer<QQmlJSScope const> const&)::cppKeywords>, __val=...) at /usr/include/c++/13/bits/stl_algo.h:2243
#6 0x00005639ff8fb837 in operator() (__closure=0x7ffc4a2c52bf, word=...) at /home/michi/development/git/qt5/qtdeclarative/tools/qmltc/qmltcvisitor.cpp:764
#7 0x00005639ff8fb89e in operator() (__closure=0x7ffc4a2c52a0, name=..., errorPrefix=...) at /home/michi/development/git/qt5/qtdeclarative/tools/qmltc/qmltcvisitor.cpp:768
#8 0x00005639ff8fc99b in QmltcVisitor::checkForNamingCollisionsWithCpp (this=0x7ffc4a2c6070, type=...) at /home/michi/development/git/qt5/qtdeclarative/tools/qmltc/qmltcvisitor.cpp:787
#9 0x00005639ff8f9dea in QmltcVisitor::endVisit (this=0x7ffc4a2c6070, program=0x563a002e0628) at /home/michi/development/git/qt5/qtdeclarative/tools/qmltc/qmltcvisitor.cpp:341
#10 0x00007f307f6636fa in QQmlJS::AST::UiProgram::accept0 (this=0x563a002e0628, visitor=0x7ffc4a2c6070) at /home/michi/development/git/qt5/qtdeclarative/src/qml/parser/qqmljsast.cpp:1193
#11 0x00007f3080159b8f in QQmlJS::AST::Node::accept (this=0x563a002e0628, visitor=0x7ffc4a2c6070)
at /home/michi/development/git/qt5/qtbase/include/QtQml/6.7.0/QtQml/private/../../../../../../qtdeclarative/src/qml/parser/qqmljsast_p.h:272
#12 0x00007f3080212f4b in QQmlJSTypeResolver::init (this=0x7ffc4a2c5b50, visitor=0x7ffc4a2c6070, program=0x563a002e0628) at /home/michi/development/git/qt5/qtdeclarative/src/qmlcompiler/qqmljstyperesolver.cpp:173
#13 0x00005639ff8f0bd3 in QmltcTypeResolver::init (this=0x7ffc4a2c5b50, visitor=0x7ffc4a2c6070, program=0x563a002e0628) at /home/michi/development/git/qt5/qtdeclarative/tools/qmltc/qmltctyperesolver.cpp:19
#14 0x00005639ff8c02d4 in main (argc=23, argv=0x7ffc4a2c7a68) at /home/michi/development/git/qt5/qtdeclarative/tools/qmltc/main.cpp:269
[1] https://doc.qt.io/qt-6/qstring.html#comparing-strings
Change-Id: I82ebbcdca4ab90155b935f9af24b3a3821134563
Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
Morten Sørvig seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account. You have signed the CLA already but the status is still pending? Let us recheck it. |
qtprojectorg
pushed a commit
that referenced
this pull request
Sep 9, 2025
Use dimmer as a context object rather than the test itself, which
outlives it.
The backtrace was:
FAIL! : tst_QQuickPopup::Basic::fadeDimmer(modal) The computed value is expected to be greater than the baseline, but is not
Computed (opacityChangeCount): 2
Baseline (2) : 2
Loc: [/Users/mitch/dev/qt-dev2/qtdeclarative/tests/auto/quickcontrols/qquickpopup/tst_qquickpopup.cpp(2629)]
=================================================================
==68826==ERROR: AddressSanitizer: stack-use-after-scope on address 0x00016b7f7140 at pc 0x000104743c68 bp 0x00016b7ecfd0 sp 0x00016b7ecfc8
READ of size 4 at 0x00016b7f7140 thread T0
#0 0x000104743c64 in tst_QQuickPopup::fadeDimmer()::$_0::operator()() const tst_qquickpopup.cpp:2625
#1 0x000104743bc0 in QtPrivate::FunctorCall<std::__1::integer_sequence<unsigned long>, QtPrivate::List<>, void, tst_QQuickPopup::fadeDimmer()::$_0>::call(tst_QQuickPopup::fadeDimmer()::$_0&, void**)::'lambda'()::operator()() const qobjectdefs_impl.h:116
#2 0x000104743b64 in void QtPrivate::FunctorCallBase::call_internal<void, QtPrivate::FunctorCall<std::__1::integer_sequence<unsigned long>, QtPrivate::List<>, void, tst_QQuickPopup::fadeDimmer()::$_0>::call(tst_QQuickPopup::fadeDimmer()::$_0&, void**)::'lambda'()>(void**, QtPrivate::FunctorCall<std::__1::integer_sequence<unsigned long>, QtPrivate::List<>, void, tst_QQuickPopup::fadeDimmer()::$_0>::call(tst_QQuickPopup::fadeDimmer()::$_0&, void**)::'lambda'()&&) qobjectdefs_impl.h:65
#3 0x000104743ab4 in QtPrivate::FunctorCall<std::__1::integer_sequence<unsigned long>, QtPrivate::List<>, void, tst_QQuickPopup::fadeDimmer()::$_0>::call(tst_QQuickPopup::fadeDimmer()::$_0&, void**) qobjectdefs_impl.h:115
#4 0x000104743930 in void QtPrivate::FunctorCallable<tst_QQuickPopup::fadeDimmer()::$_0>::call<QtPrivate::List<>, void>(tst_QQuickPopup::fadeDimmer()::$_0&, void*, void**) qobjectdefs_impl.h:337
#5 0x000104743848 in QtPrivate::QCallableObject<tst_QQuickPopup::fadeDimmer()::$_0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) qobjectdefs_impl.h:547
#6 0x00011694273c in QtPrivate::QSlotObjectBase::call(QObject*, void**) qobjectdefs_impl.h:461
#7 0x000116e49454 in void doActivate<false>(QObject*, int, void**) qobject.cpp:4284
#8 0x000116e467a0 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) qobject.cpp:4344
#9 0x00010c1462d4 in QQuickItem::opacityChanged() moc_qquickitem.cpp:1019
#10 0x00010c1461c8 in QQuickItem::setOpacity(double) qquickitem.cpp:6517
#11 0x00010c168638 in QQuickItem::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) moc_qquickitem.cpp:850
#12 0x000113847100 in QQmlPropertyData::writeProperty(QObject*, void*, QFlags<QQmlPropertyData::WriteFlag>) const qqmlpropertydata_p.h:413
#13 0x000113c33468 in QQmlPropertyPrivate::write(QObject*, QQmlPropertyData const&, QVariant const&, QQmlRefPointer<QQmlContextData> const&, QFlags<QQmlPropertyData::WriteFlag>) qqmlproperty.cpp:1668
#14 0x000113c32638 in QQmlPropertyPrivate::writeValueProperty(QObject*, QQmlPropertyData const&, QQmlPropertyData const&, QVariant const&, QQmlRefPointer<QQmlContextData> const&, QFlags<QQmlPropertyData::WriteFlag>) qqmlproperty.cpp:1326
#15 0x000113c32390 in QQmlPropertyPrivate::writeValueProperty(QVariant const&, QFlags<QQmlPropertyData::WriteFlag>) qqmlproperty.cpp:1270
#16 0x000113c391b4 in QQmlPropertyPrivate::write(QQmlProperty const&, QVariant const&, QFlags<QQmlPropertyData::WriteFlag>) qqmlproperty.cpp:1947
#17 0x00010c9949ac in QQuickAnimationPropertyUpdater::setValue(double) qquickanimation.cpp:2740
#18 0x00010c992444 in QQuickBulkValueAnimator::updateCurrentTime(int) qquickanimation.cpp:2069
#19 0x000114345428 in QAbstractAnimationJob::setCurrentTime(int) qabstractanimationjob.cpp:481
#20 0x000114349c3c in QAbstractAnimationJob::setState(QAbstractAnimationJob::State) qabstractanimationjob.cpp:367
#21 0x00011434bc34 in QAbstractAnimationJob::start() qabstractanimationjob.cpp:514
#22 0x00010c9ff568 in QQuickBehavior::write(QVariant const&) qquickbehavior.cpp:419
#23 0x00010c9ff88c in non-virtual thunk to QQuickBehavior::write(QVariant const&) qquickbehavior.cpp
#24 0x000113f53b7c in QQmlInterceptorMetaObject::doIntercept(QMetaObject::Call, int, void**) qqmlvmemetaobject.cpp:392
#25 0x000113f532e4 in QQmlInterceptorMetaObject::intercept(QMetaObject::Call, int, void**) qqmlvmemetaobject_p.h:153
#26 0x000113f59788 in QQmlVMEMetaObject::metaCall(QObject*, QMetaObject::Call, int, void**) qqmlvmemetaobject.cpp:750
#27 0x0001138474d0 in void QQmlPropertyData::doMetacall<(QMetaObject::Call)2>(QObject*, int, void**) const qqmlpropertydata_p.h:395
#28 0x000113847128 in QQmlPropertyData::writeProperty(QObject*, void*, QFlags<QQmlPropertyData::WriteFlag>) const qqmlpropertydata_p.h:415
#29 0x000113c33468 in QQmlPropertyPrivate::write(QObject*, QQmlPropertyData const&, QVariant const&, QQmlRefPointer<QQmlContextData> const&, QFlags<QQmlPropertyData::WriteFlag>) qqmlproperty.cpp:1668
#30 0x000113c32638 in QQmlPropertyPrivate::writeValueProperty(QObject*, QQmlPropertyData const&, QQmlPropertyData const&, QVariant const&, QQmlRefPointer<QQmlContextData> const&, QFlags<QQmlPropertyData::WriteFlag>) qqmlproperty.cpp:1326
#31 0x000113c32390 in QQmlPropertyPrivate::writeValueProperty(QVariant const&, QFlags<QQmlPropertyData::WriteFlag>) qqmlproperty.cpp:1270
#32 0x000113c391b4 in QQmlPropertyPrivate::write(QQmlProperty const&, QVariant const&, QFlags<QQmlPropertyData::WriteFlag>) qqmlproperty.cpp:1947
#33 0x000113c38f84 in QQmlProperty::write(QVariant const&) const qqmlproperty.cpp:1863
#34 0x000113c39358 in QQmlProperty::write(QObject*, QString const&, QVariant const&) qqmlproperty.cpp:1880
#35 0x000107c1db04 in QQuickPopupPrivate::hideDimmer() qquickpopup.cpp:1290
#36 0x000107c16a68 in QQuickPopupPrivate::prepareExitTransition() qquickpopup.cpp:821
#37 0x000107c1e038 in QQuickPopupTransitionManager::transitionExit() qquickpopup.cpp:1326
#38 0x000107c23fd4 in QQuickPopup::setVisible(bool) qquickpopup.cpp:2496
#39 0x000107c104d8 in QQuickPopup::close() qquickpopup.cpp:1408
#40 0x000107c1ba80 in QQuickPopup::setParentItem(QQuickItem*) qquickpopup.cpp:2180
#41 0x000107c1b324 in QQuickPopupPrivate::itemDestroyed(QQuickItem*) qquickpopup.cpp:1063
#42 0x000107c1bb8c in non-virtual thunk to QQuickPopupPrivate::itemDestroyed(QQuickItem*) qquickpopup.cpp
#43 0x00010c117f70 in void QQuickItemPrivate::notifyChangeListeners<void (QQuickItemChangeListener::*)(QQuickItem*), QQuickItem*>(QFlags<QQuickItemPrivate::ChangeType>, void (QQuickItemChangeListener::*&&)(QQuickItem*), QQuickItem*&&) qquickitem_p.h:413
#44 0x00010c113d7c in QQuickItem::~QQuickItem() qquickitem.cpp:2420
#45 0x00010c50e3e8 in QQuickRootItem::~QQuickRootItem() qquickwindow_p.h:62
#46 0x00010c4ed840 in QQuickRootItem::~QQuickRootItem() qquickwindow_p.h:62
#47 0x00010c4ed86c in QQuickRootItem::~QQuickRootItem() qquickwindow_p.h:62
#48 0x00010c4da1c0 in QQuickWindow::~QQuickWindow() qquickwindow.cpp:1197
#49 0x00010c531f34 in QQuickWindowQmlImpl::~QQuickWindowQmlImpl() qquickwindowmodule.cpp:73
#50 0x00010cf2d4f4 in QQmlPrivate::QQmlElement<QQuickWindowQmlImpl>::~QQmlElement() qqmlprivate.h:104
#51 0x00010cf2d3e0 in QQmlPrivate::QQmlElement<QQuickWindowQmlImpl>::~QQmlElement() qqmlprivate.h:102
#52 0x00010cf2d40c in QQmlPrivate::QQmlElement<QQuickWindowQmlImpl>::~QQmlElement() qqmlprivate.h:102
#53 0x00010472efa8 in QScopedPointerDeleter<QObject>::cleanup(QObject*) qscopedpointer.h:24
#54 0x00010472eefc in QScopedPointer<QObject, QScopedPointerDeleter<QObject>>::~QScopedPointer() qscopedpointer.h:81
#55 0x00010466f0e8 in QScopedPointer<QObject, QScopedPointerDeleter<QObject>>::~QScopedPointer() qscopedpointer.h:79
#56 0x00010471246c in QQuickVisualTestUtils::QQuickApplicationHelper::~QQuickApplicationHelper() visualtestutils_p.h:192
#57 0x00010468ff88 in QQuickVisualTestUtils::QQuickApplicationHelper::~QQuickApplicationHelper() visualtestutils_p.h:192
#58 0x0001046a953c in tst_QQuickPopup::fadeDimmer() tst_qquickpopup.cpp:2635
[...]
Amends ef8bde8.
Pick-to: 6.8 6.9 6.10
Change-Id: Ie5c49b7d9ecd3c74f822590d296062b516563391
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
qtprojectorg
pushed a commit
that referenced
this pull request
Sep 12, 2025
Use dimmer as a context object rather than the test itself, which
outlives it.
The backtrace was:
FAIL! : tst_QQuickPopup::Basic::fadeDimmer(modal) The computed value is expected to be greater than the baseline, but is not
Computed (opacityChangeCount): 2
Baseline (2) : 2
Loc: [/Users/mitch/dev/qt-dev2/qtdeclarative/tests/auto/quickcontrols/qquickpopup/tst_qquickpopup.cpp(2629)]
=================================================================
==68826==ERROR: AddressSanitizer: stack-use-after-scope on address 0x00016b7f7140 at pc 0x000104743c68 bp 0x00016b7ecfd0 sp 0x00016b7ecfc8
READ of size 4 at 0x00016b7f7140 thread T0
#0 0x000104743c64 in tst_QQuickPopup::fadeDimmer()::$_0::operator()() const tst_qquickpopup.cpp:2625
#1 0x000104743bc0 in QtPrivate::FunctorCall<std::__1::integer_sequence<unsigned long>, QtPrivate::List<>, void, tst_QQuickPopup::fadeDimmer()::$_0>::call(tst_QQuickPopup::fadeDimmer()::$_0&, void**)::'lambda'()::operator()() const qobjectdefs_impl.h:116
#2 0x000104743b64 in void QtPrivate::FunctorCallBase::call_internal<void, QtPrivate::FunctorCall<std::__1::integer_sequence<unsigned long>, QtPrivate::List<>, void, tst_QQuickPopup::fadeDimmer()::$_0>::call(tst_QQuickPopup::fadeDimmer()::$_0&, void**)::'lambda'()>(void**, QtPrivate::FunctorCall<std::__1::integer_sequence<unsigned long>, QtPrivate::List<>, void, tst_QQuickPopup::fadeDimmer()::$_0>::call(tst_QQuickPopup::fadeDimmer()::$_0&, void**)::'lambda'()&&) qobjectdefs_impl.h:65
#3 0x000104743ab4 in QtPrivate::FunctorCall<std::__1::integer_sequence<unsigned long>, QtPrivate::List<>, void, tst_QQuickPopup::fadeDimmer()::$_0>::call(tst_QQuickPopup::fadeDimmer()::$_0&, void**) qobjectdefs_impl.h:115
#4 0x000104743930 in void QtPrivate::FunctorCallable<tst_QQuickPopup::fadeDimmer()::$_0>::call<QtPrivate::List<>, void>(tst_QQuickPopup::fadeDimmer()::$_0&, void*, void**) qobjectdefs_impl.h:337
#5 0x000104743848 in QtPrivate::QCallableObject<tst_QQuickPopup::fadeDimmer()::$_0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) qobjectdefs_impl.h:547
#6 0x00011694273c in QtPrivate::QSlotObjectBase::call(QObject*, void**) qobjectdefs_impl.h:461
#7 0x000116e49454 in void doActivate<false>(QObject*, int, void**) qobject.cpp:4284
#8 0x000116e467a0 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) qobject.cpp:4344
#9 0x00010c1462d4 in QQuickItem::opacityChanged() moc_qquickitem.cpp:1019
#10 0x00010c1461c8 in QQuickItem::setOpacity(double) qquickitem.cpp:6517
#11 0x00010c168638 in QQuickItem::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) moc_qquickitem.cpp:850
#12 0x000113847100 in QQmlPropertyData::writeProperty(QObject*, void*, QFlags<QQmlPropertyData::WriteFlag>) const qqmlpropertydata_p.h:413
#13 0x000113c33468 in QQmlPropertyPrivate::write(QObject*, QQmlPropertyData const&, QVariant const&, QQmlRefPointer<QQmlContextData> const&, QFlags<QQmlPropertyData::WriteFlag>) qqmlproperty.cpp:1668
#14 0x000113c32638 in QQmlPropertyPrivate::writeValueProperty(QObject*, QQmlPropertyData const&, QQmlPropertyData const&, QVariant const&, QQmlRefPointer<QQmlContextData> const&, QFlags<QQmlPropertyData::WriteFlag>) qqmlproperty.cpp:1326
#15 0x000113c32390 in QQmlPropertyPrivate::writeValueProperty(QVariant const&, QFlags<QQmlPropertyData::WriteFlag>) qqmlproperty.cpp:1270
#16 0x000113c391b4 in QQmlPropertyPrivate::write(QQmlProperty const&, QVariant const&, QFlags<QQmlPropertyData::WriteFlag>) qqmlproperty.cpp:1947
#17 0x00010c9949ac in QQuickAnimationPropertyUpdater::setValue(double) qquickanimation.cpp:2740
#18 0x00010c992444 in QQuickBulkValueAnimator::updateCurrentTime(int) qquickanimation.cpp:2069
#19 0x000114345428 in QAbstractAnimationJob::setCurrentTime(int) qabstractanimationjob.cpp:481
#20 0x000114349c3c in QAbstractAnimationJob::setState(QAbstractAnimationJob::State) qabstractanimationjob.cpp:367
#21 0x00011434bc34 in QAbstractAnimationJob::start() qabstractanimationjob.cpp:514
#22 0x00010c9ff568 in QQuickBehavior::write(QVariant const&) qquickbehavior.cpp:419
#23 0x00010c9ff88c in non-virtual thunk to QQuickBehavior::write(QVariant const&) qquickbehavior.cpp
#24 0x000113f53b7c in QQmlInterceptorMetaObject::doIntercept(QMetaObject::Call, int, void**) qqmlvmemetaobject.cpp:392
#25 0x000113f532e4 in QQmlInterceptorMetaObject::intercept(QMetaObject::Call, int, void**) qqmlvmemetaobject_p.h:153
#26 0x000113f59788 in QQmlVMEMetaObject::metaCall(QObject*, QMetaObject::Call, int, void**) qqmlvmemetaobject.cpp:750
#27 0x0001138474d0 in void QQmlPropertyData::doMetacall<(QMetaObject::Call)2>(QObject*, int, void**) const qqmlpropertydata_p.h:395
#28 0x000113847128 in QQmlPropertyData::writeProperty(QObject*, void*, QFlags<QQmlPropertyData::WriteFlag>) const qqmlpropertydata_p.h:415
#29 0x000113c33468 in QQmlPropertyPrivate::write(QObject*, QQmlPropertyData const&, QVariant const&, QQmlRefPointer<QQmlContextData> const&, QFlags<QQmlPropertyData::WriteFlag>) qqmlproperty.cpp:1668
#30 0x000113c32638 in QQmlPropertyPrivate::writeValueProperty(QObject*, QQmlPropertyData const&, QQmlPropertyData const&, QVariant const&, QQmlRefPointer<QQmlContextData> const&, QFlags<QQmlPropertyData::WriteFlag>) qqmlproperty.cpp:1326
#31 0x000113c32390 in QQmlPropertyPrivate::writeValueProperty(QVariant const&, QFlags<QQmlPropertyData::WriteFlag>) qqmlproperty.cpp:1270
#32 0x000113c391b4 in QQmlPropertyPrivate::write(QQmlProperty const&, QVariant const&, QFlags<QQmlPropertyData::WriteFlag>) qqmlproperty.cpp:1947
#33 0x000113c38f84 in QQmlProperty::write(QVariant const&) const qqmlproperty.cpp:1863
#34 0x000113c39358 in QQmlProperty::write(QObject*, QString const&, QVariant const&) qqmlproperty.cpp:1880
#35 0x000107c1db04 in QQuickPopupPrivate::hideDimmer() qquickpopup.cpp:1290
#36 0x000107c16a68 in QQuickPopupPrivate::prepareExitTransition() qquickpopup.cpp:821
#37 0x000107c1e038 in QQuickPopupTransitionManager::transitionExit() qquickpopup.cpp:1326
#38 0x000107c23fd4 in QQuickPopup::setVisible(bool) qquickpopup.cpp:2496
#39 0x000107c104d8 in QQuickPopup::close() qquickpopup.cpp:1408
#40 0x000107c1ba80 in QQuickPopup::setParentItem(QQuickItem*) qquickpopup.cpp:2180
#41 0x000107c1b324 in QQuickPopupPrivate::itemDestroyed(QQuickItem*) qquickpopup.cpp:1063
#42 0x000107c1bb8c in non-virtual thunk to QQuickPopupPrivate::itemDestroyed(QQuickItem*) qquickpopup.cpp
#43 0x00010c117f70 in void QQuickItemPrivate::notifyChangeListeners<void (QQuickItemChangeListener::*)(QQuickItem*), QQuickItem*>(QFlags<QQuickItemPrivate::ChangeType>, void (QQuickItemChangeListener::*&&)(QQuickItem*), QQuickItem*&&) qquickitem_p.h:413
#44 0x00010c113d7c in QQuickItem::~QQuickItem() qquickitem.cpp:2420
#45 0x00010c50e3e8 in QQuickRootItem::~QQuickRootItem() qquickwindow_p.h:62
#46 0x00010c4ed840 in QQuickRootItem::~QQuickRootItem() qquickwindow_p.h:62
#47 0x00010c4ed86c in QQuickRootItem::~QQuickRootItem() qquickwindow_p.h:62
#48 0x00010c4da1c0 in QQuickWindow::~QQuickWindow() qquickwindow.cpp:1197
#49 0x00010c531f34 in QQuickWindowQmlImpl::~QQuickWindowQmlImpl() qquickwindowmodule.cpp:73
#50 0x00010cf2d4f4 in QQmlPrivate::QQmlElement<QQuickWindowQmlImpl>::~QQmlElement() qqmlprivate.h:104
#51 0x00010cf2d3e0 in QQmlPrivate::QQmlElement<QQuickWindowQmlImpl>::~QQmlElement() qqmlprivate.h:102
#52 0x00010cf2d40c in QQmlPrivate::QQmlElement<QQuickWindowQmlImpl>::~QQmlElement() qqmlprivate.h:102
#53 0x00010472efa8 in QScopedPointerDeleter<QObject>::cleanup(QObject*) qscopedpointer.h:24
#54 0x00010472eefc in QScopedPointer<QObject, QScopedPointerDeleter<QObject>>::~QScopedPointer() qscopedpointer.h:81
#55 0x00010466f0e8 in QScopedPointer<QObject, QScopedPointerDeleter<QObject>>::~QScopedPointer() qscopedpointer.h:79
#56 0x00010471246c in QQuickVisualTestUtils::QQuickApplicationHelper::~QQuickApplicationHelper() visualtestutils_p.h:192
#57 0x00010468ff88 in QQuickVisualTestUtils::QQuickApplicationHelper::~QQuickApplicationHelper() visualtestutils_p.h:192
#58 0x0001046a953c in tst_QQuickPopup::fadeDimmer() tst_qquickpopup.cpp:2635
[...]
Amends ef8bde8.
Pick-to: 6.9 6.8
Change-Id: Ie5c49b7d9ecd3c74f822590d296062b516563391
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
(cherry picked from commit f8742ca)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
qtprojectorg
pushed a commit
that referenced
this pull request
Sep 12, 2025
Use dimmer as a context object rather than the test itself, which
outlives it.
The backtrace was:
FAIL! : tst_QQuickPopup::Basic::fadeDimmer(modal) The computed value is expected to be greater than the baseline, but is not
Computed (opacityChangeCount): 2
Baseline (2) : 2
Loc: [/Users/mitch/dev/qt-dev2/qtdeclarative/tests/auto/quickcontrols/qquickpopup/tst_qquickpopup.cpp(2629)]
=================================================================
==68826==ERROR: AddressSanitizer: stack-use-after-scope on address 0x00016b7f7140 at pc 0x000104743c68 bp 0x00016b7ecfd0 sp 0x00016b7ecfc8
READ of size 4 at 0x00016b7f7140 thread T0
#0 0x000104743c64 in tst_QQuickPopup::fadeDimmer()::$_0::operator()() const tst_qquickpopup.cpp:2625
#1 0x000104743bc0 in QtPrivate::FunctorCall<std::__1::integer_sequence<unsigned long>, QtPrivate::List<>, void, tst_QQuickPopup::fadeDimmer()::$_0>::call(tst_QQuickPopup::fadeDimmer()::$_0&, void**)::'lambda'()::operator()() const qobjectdefs_impl.h:116
#2 0x000104743b64 in void QtPrivate::FunctorCallBase::call_internal<void, QtPrivate::FunctorCall<std::__1::integer_sequence<unsigned long>, QtPrivate::List<>, void, tst_QQuickPopup::fadeDimmer()::$_0>::call(tst_QQuickPopup::fadeDimmer()::$_0&, void**)::'lambda'()>(void**, QtPrivate::FunctorCall<std::__1::integer_sequence<unsigned long>, QtPrivate::List<>, void, tst_QQuickPopup::fadeDimmer()::$_0>::call(tst_QQuickPopup::fadeDimmer()::$_0&, void**)::'lambda'()&&) qobjectdefs_impl.h:65
#3 0x000104743ab4 in QtPrivate::FunctorCall<std::__1::integer_sequence<unsigned long>, QtPrivate::List<>, void, tst_QQuickPopup::fadeDimmer()::$_0>::call(tst_QQuickPopup::fadeDimmer()::$_0&, void**) qobjectdefs_impl.h:115
#4 0x000104743930 in void QtPrivate::FunctorCallable<tst_QQuickPopup::fadeDimmer()::$_0>::call<QtPrivate::List<>, void>(tst_QQuickPopup::fadeDimmer()::$_0&, void*, void**) qobjectdefs_impl.h:337
#5 0x000104743848 in QtPrivate::QCallableObject<tst_QQuickPopup::fadeDimmer()::$_0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) qobjectdefs_impl.h:547
#6 0x00011694273c in QtPrivate::QSlotObjectBase::call(QObject*, void**) qobjectdefs_impl.h:461
#7 0x000116e49454 in void doActivate<false>(QObject*, int, void**) qobject.cpp:4284
#8 0x000116e467a0 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) qobject.cpp:4344
#9 0x00010c1462d4 in QQuickItem::opacityChanged() moc_qquickitem.cpp:1019
#10 0x00010c1461c8 in QQuickItem::setOpacity(double) qquickitem.cpp:6517
#11 0x00010c168638 in QQuickItem::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) moc_qquickitem.cpp:850
#12 0x000113847100 in QQmlPropertyData::writeProperty(QObject*, void*, QFlags<QQmlPropertyData::WriteFlag>) const qqmlpropertydata_p.h:413
#13 0x000113c33468 in QQmlPropertyPrivate::write(QObject*, QQmlPropertyData const&, QVariant const&, QQmlRefPointer<QQmlContextData> const&, QFlags<QQmlPropertyData::WriteFlag>) qqmlproperty.cpp:1668
#14 0x000113c32638 in QQmlPropertyPrivate::writeValueProperty(QObject*, QQmlPropertyData const&, QQmlPropertyData const&, QVariant const&, QQmlRefPointer<QQmlContextData> const&, QFlags<QQmlPropertyData::WriteFlag>) qqmlproperty.cpp:1326
#15 0x000113c32390 in QQmlPropertyPrivate::writeValueProperty(QVariant const&, QFlags<QQmlPropertyData::WriteFlag>) qqmlproperty.cpp:1270
#16 0x000113c391b4 in QQmlPropertyPrivate::write(QQmlProperty const&, QVariant const&, QFlags<QQmlPropertyData::WriteFlag>) qqmlproperty.cpp:1947
#17 0x00010c9949ac in QQuickAnimationPropertyUpdater::setValue(double) qquickanimation.cpp:2740
#18 0x00010c992444 in QQuickBulkValueAnimator::updateCurrentTime(int) qquickanimation.cpp:2069
#19 0x000114345428 in QAbstractAnimationJob::setCurrentTime(int) qabstractanimationjob.cpp:481
#20 0x000114349c3c in QAbstractAnimationJob::setState(QAbstractAnimationJob::State) qabstractanimationjob.cpp:367
#21 0x00011434bc34 in QAbstractAnimationJob::start() qabstractanimationjob.cpp:514
#22 0x00010c9ff568 in QQuickBehavior::write(QVariant const&) qquickbehavior.cpp:419
#23 0x00010c9ff88c in non-virtual thunk to QQuickBehavior::write(QVariant const&) qquickbehavior.cpp
#24 0x000113f53b7c in QQmlInterceptorMetaObject::doIntercept(QMetaObject::Call, int, void**) qqmlvmemetaobject.cpp:392
#25 0x000113f532e4 in QQmlInterceptorMetaObject::intercept(QMetaObject::Call, int, void**) qqmlvmemetaobject_p.h:153
#26 0x000113f59788 in QQmlVMEMetaObject::metaCall(QObject*, QMetaObject::Call, int, void**) qqmlvmemetaobject.cpp:750
#27 0x0001138474d0 in void QQmlPropertyData::doMetacall<(QMetaObject::Call)2>(QObject*, int, void**) const qqmlpropertydata_p.h:395
#28 0x000113847128 in QQmlPropertyData::writeProperty(QObject*, void*, QFlags<QQmlPropertyData::WriteFlag>) const qqmlpropertydata_p.h:415
#29 0x000113c33468 in QQmlPropertyPrivate::write(QObject*, QQmlPropertyData const&, QVariant const&, QQmlRefPointer<QQmlContextData> const&, QFlags<QQmlPropertyData::WriteFlag>) qqmlproperty.cpp:1668
#30 0x000113c32638 in QQmlPropertyPrivate::writeValueProperty(QObject*, QQmlPropertyData const&, QQmlPropertyData const&, QVariant const&, QQmlRefPointer<QQmlContextData> const&, QFlags<QQmlPropertyData::WriteFlag>) qqmlproperty.cpp:1326
#31 0x000113c32390 in QQmlPropertyPrivate::writeValueProperty(QVariant const&, QFlags<QQmlPropertyData::WriteFlag>) qqmlproperty.cpp:1270
#32 0x000113c391b4 in QQmlPropertyPrivate::write(QQmlProperty const&, QVariant const&, QFlags<QQmlPropertyData::WriteFlag>) qqmlproperty.cpp:1947
#33 0x000113c38f84 in QQmlProperty::write(QVariant const&) const qqmlproperty.cpp:1863
#34 0x000113c39358 in QQmlProperty::write(QObject*, QString const&, QVariant const&) qqmlproperty.cpp:1880
#35 0x000107c1db04 in QQuickPopupPrivate::hideDimmer() qquickpopup.cpp:1290
#36 0x000107c16a68 in QQuickPopupPrivate::prepareExitTransition() qquickpopup.cpp:821
#37 0x000107c1e038 in QQuickPopupTransitionManager::transitionExit() qquickpopup.cpp:1326
#38 0x000107c23fd4 in QQuickPopup::setVisible(bool) qquickpopup.cpp:2496
#39 0x000107c104d8 in QQuickPopup::close() qquickpopup.cpp:1408
#40 0x000107c1ba80 in QQuickPopup::setParentItem(QQuickItem*) qquickpopup.cpp:2180
#41 0x000107c1b324 in QQuickPopupPrivate::itemDestroyed(QQuickItem*) qquickpopup.cpp:1063
#42 0x000107c1bb8c in non-virtual thunk to QQuickPopupPrivate::itemDestroyed(QQuickItem*) qquickpopup.cpp
#43 0x00010c117f70 in void QQuickItemPrivate::notifyChangeListeners<void (QQuickItemChangeListener::*)(QQuickItem*), QQuickItem*>(QFlags<QQuickItemPrivate::ChangeType>, void (QQuickItemChangeListener::*&&)(QQuickItem*), QQuickItem*&&) qquickitem_p.h:413
#44 0x00010c113d7c in QQuickItem::~QQuickItem() qquickitem.cpp:2420
#45 0x00010c50e3e8 in QQuickRootItem::~QQuickRootItem() qquickwindow_p.h:62
#46 0x00010c4ed840 in QQuickRootItem::~QQuickRootItem() qquickwindow_p.h:62
#47 0x00010c4ed86c in QQuickRootItem::~QQuickRootItem() qquickwindow_p.h:62
#48 0x00010c4da1c0 in QQuickWindow::~QQuickWindow() qquickwindow.cpp:1197
#49 0x00010c531f34 in QQuickWindowQmlImpl::~QQuickWindowQmlImpl() qquickwindowmodule.cpp:73
#50 0x00010cf2d4f4 in QQmlPrivate::QQmlElement<QQuickWindowQmlImpl>::~QQmlElement() qqmlprivate.h:104
#51 0x00010cf2d3e0 in QQmlPrivate::QQmlElement<QQuickWindowQmlImpl>::~QQmlElement() qqmlprivate.h:102
#52 0x00010cf2d40c in QQmlPrivate::QQmlElement<QQuickWindowQmlImpl>::~QQmlElement() qqmlprivate.h:102
#53 0x00010472efa8 in QScopedPointerDeleter<QObject>::cleanup(QObject*) qscopedpointer.h:24
#54 0x00010472eefc in QScopedPointer<QObject, QScopedPointerDeleter<QObject>>::~QScopedPointer() qscopedpointer.h:81
#55 0x00010466f0e8 in QScopedPointer<QObject, QScopedPointerDeleter<QObject>>::~QScopedPointer() qscopedpointer.h:79
#56 0x00010471246c in QQuickVisualTestUtils::QQuickApplicationHelper::~QQuickApplicationHelper() visualtestutils_p.h:192
#57 0x00010468ff88 in QQuickVisualTestUtils::QQuickApplicationHelper::~QQuickApplicationHelper() visualtestutils_p.h:192
#58 0x0001046a953c in tst_QQuickPopup::fadeDimmer() tst_qquickpopup.cpp:2635
[...]
Amends ef8bde8.
Pick-to: 6.8
Change-Id: Ie5c49b7d9ecd3c74f822590d296062b516563391
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
(cherry picked from commit f8742ca)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit cc726a4)
It seems that we call registerTypes on both static and dynamic plugins, but qmlClearEnginePlugins only unregisters dynamic plugins. This could cause incomplete cleanups in tests like tst_customization where qmlClearEnginePlugins should unregister plugins in both dynamic and static builds. Allow QmlPlugin to also contain a static plugin instance, and adapt unloadPlugin() to also unregister types from static plugins. Task-number: QTBUG-133755 Change-Id: Idb5a8e2754600715d8c820a73ae35cbf8991967f Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
There does not seem to be an explanation for it, and it does not seem to break the CI. Remove the macos special casing. Change-Id: I94b8e3ff4129247c25e87d7401897b4871c3cdf6 Reviewed-by: Semih Yavuz <semih.yavuz@qt.io>
DEPENDENCIES is not a valid option for qt_internal_add_test(), it was likely mistaken with the option from qt_add_qml_module. Remove the option. Gets rid of CMake Error at qtdeclarative/tests/auto/qmlls/modules/cmake_install.cmake:51 (file): file INSTALL cannot find "qtdeclarative/tests/auto/qmlls/modules/DEPENDENCIES": No such file or directory. Call Stack (most recent call first): qtdeclarative/tests/auto/qmlls/cmake_install.cmake:67 (include) Amends cdd5cc9 Pick-to: 6.10 Fixes: QTBUG-141085 Change-Id: Idce92217375b753d4935be9c2441a7d439f867e4 Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
Fix the description: qmltypes files are made out of QML, not JSON. Pick-to: 6.10 6.8 Change-Id: I42df0adb06ffebc4e58f12db280dc496e1c69c38 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Alexei Cazacov <alexei.cazacov@qt.io>
…test In rare cases the mouse was lingering over the exact position of the scroll bar as a result of other tests moving the mouse, which would make the scrollbar never leave the active state, and hence keep reporting a non-0 opacity. We're programmatically activating the scroll bar via increment(), so we don't need the scroll bar to be interactive to do the test. Pick-to: 6.10 6.8 6.5 Change-Id: Id75b22d51277c3515fd4f448360bd576b45d69d8 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Change-Id: Id097b394eb38c791411730bb8624d9a1c508a785 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
The wheel event was stopping at a position where the cursor is very near the edge of one delegate; let's stop a bit sooner so that it's obviously inside. Change-Id: I76ce618ffe321aeb4ff125a9f4342e62221724a5 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
By not testing for these extra errors they get treated as if the request itself was a failure, rather than the server returning an error as a perfectly valid response. Amends 1faca90. Pick-to: 6.10 6.8 Fixes: QTBUG-141063 Change-Id: I3c7aee696ada58de8f1c2dcf7d4c941e644c6ab1 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
The fact that a qmlfir file needs to be written manually when using qmake was not really mentioned before. Pick-to: 6.10 6.8 6.5 Change-Id: I174ade01d5e8bd28626939f7257717070c4d220f Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
When we paint text with any other style than Normal, we will offset painting by up to 1 logical pixel. To avoid clipping the style, we need to make sure the bounding rect of the text also accounts for this. This does overestimate the bounding rect in cases where the dpr is not 1, but this is better than underestimating it. Pick-to: 6.10 6.8 Fixes: QTBUG-137404 Change-Id: I670a3709fcc6ac7fd6d58a8d524f534800cafdff Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
The setup was done, but the actual test was not. Amends commit 8f1bfc0 Change-Id: I5a1b423b6790e9136e437be6cde6f96b2d4d54bc Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Remove the redundant Highlights class and move its functionality directly into HighlightingVisitor. The redundant class was essentially just a wrapper around highlighted token container, which can be handled more directly. Adapt the tests. Pick-to: 6.10 6.8 Task-number: QTBUG-140645 Change-Id: I739c69ea35bb1bec4a2e4c242189dd440d5df39f Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
Rename Token struct to HighlightToken to better reflect its purpose and avoid confusion with other generic token types. Pick-to: 6.10 6.8 Task-number: QTBUG-140645 Change-Id: Ieba550aa3624eade3a3ce1c486dccdbfd2c67c22 Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
Introduce QmlHighlighting namespace for better organization. Move utility functions to nested Utils namespace. Update all references throughout the codebase accordingly. Pick-to: 6.10 6.8 Task-number: QTBUG-140645 Change-Id: I3ad4e5fdd4abdfcb746441acf29594711af13f90 Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
Make the highlighted token class protocol agnostic by removing protocol specific fields, and store custom highlighting types and modifiers instead. Move the logic that converts token types to protocol specific integers to encodeSemanticTokens. This simplifies HighlightingVisitor by removing protocol mapping dependency and makes the tests protocol agnostic too. (before we weren't testing QtC highlights). Pick-to: 6.10 6.8 Task-number: QTBUG-140645 Change-Id: Ia0e84b50941f84855c4a1525f97a0d21da0f3947 Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
Overriding the function only to then call the base implementation and nothing else is not very productive. Change-Id: Ib3cba0d38de652c94689b0bac5e878f629e35bd3 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
All the conversion back and forth only adds noise and overhead. Use an array of std::byte to trick the memory manager into believing that QV4::Heap::UrlObject is still trivial. Task-number: QTBUG-138545 Change-Id: Ic382741d441cfb8a7446d6c46ded77173325ce34 Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
There were two different error messages that mean the same thing. Change-Id: I656333ab089f345580e31d63cd8ce7412b223d04 Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io> Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
The tree view inserts items into their parent during expansion in QQmlTreeModelToTableModel::showModelChildItems. However, this causes a problem when a new item is inserted and the same parent (which is already expanded) is expanded again due to a change in its children, resulting in a double insertion: once during the row insertion, and other during expansion. This patch prevents triggering QQmlTreeModelToTableModel::showModelChildItems when the node was not previously expanded but becomes expanded during insertion (for example, when expand() is explicitly called due to child changes). Fixes: QTBUG-139344 Pick-to: 6.10 6.8 Change-Id: Id88158b2628445c1aaafeff01dd5c9ff22e3c502 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
When the source height or width is not an integer number of pixels, the texture size will be rounded up. This could cause the bottom/right edge of the texture to be omitted, since the target size for the image node was also not in whole pixels, and the pixel coverage for those edge pixels could become <= 50%. This patch rounds up the targetRect to match the texture size, so it will be rendered at exactly 1:1 when the scale factor is 1. Note that this only fixes the issue for integer scale factors, since the target size is calculated in updatePaintNode, which is not called when the scale changes. Fixes: QTBUG-136783 Pick-to: 6.10 6.8 Change-Id: I0d04e4efa65d4a77f842fc3093a143ceb6666608 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
Pick-to: 6.10 Task-number: QTBUG-140645 Change-Id: I002346ee4623d87dcf06484000a826958bbf2a64 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
This change fixes setting the background or foreground explicitly to the theme default. The value did not persist. Example case for background: The default m_hasBackground is false and background color is globalBackground that is 0xFFFAFAFA, so if user sets the background color to 0xFFFAFAFA the logic skips it by doing early out and doesn't set m_hasBackground to true. Fixes: QTBUG-140068 Change-Id: I26f1182d808354f34800dc62760e5498cbd77b3b Pick-to: 6.10 6.8 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Resetting foreground and background values did not propagate to children when the earlier value matched theme default. Stop pre-clearing m_hasX/m_customX in reset. Clearing these variables prevents propagating the values to children due to early exit conditions in the inherit functions. Clear only m_explicitX and call inherit with the parent's values. m_hasX/m_customX values are then cleared in the inherit function, if changed. This guarantees propagation to children even when the color is unchanged. Pick-to: 6.10 6.8 Change-Id: Ie4f7276d43afbfaf5b4d10ccf658f27000d640d9 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Because it's not important to the server what case the headers names has. Task-number: QTBUG-137203 Pick-to: 6.10 6.9 Change-Id: I4e030ec3a7f051d6d063f0bbc040d2d56b51fbea Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
QQuickTest::showView() already ensures that a window becomes visible. We don't need to repeat that manually in the test after calling it. Pick-to: 6.10 Change-Id: Id8cadeb619544ee7b871fdff98f4b93a8a0c52ed Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Use _qt_internal_collect_qml_import_paths() to collect import paths for qmlls, qmllint and qmlimportscanner. _qt_internal_collect_qml_import_paths was previously only used to collect import paths for qmlimportscanner. Adapt _qt_internal_collect_qml_import_paths to add the special qmllint import path, and remove the duplicate code for qmllint and qmlls's import path. Fixes QTBUG-141242 where the path of the QML module is not in the import path of qmlls when the QML module path is a subfolder of the build folder. Pick-to: 6.10 Fixes: QTBUG-141242 Fixes: QTBUG-141555 Change-Id: I9fa2cc091ca08be6df9da5d6cf4794c08d3dd0ce Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Iterate over all aliases that directly or indirectly points to the required property, and check whether it is in the root file scope. If it is in the root scope, than the required property can be satisfied by setting the alias, and we shouldn't warn about unsatisfied required properties int the QML component itself. Instead, we warn at the place where the QML component is instantiated if the alias is not set. Pick-to: 6.10 Task-number: QTBUG-141086 Change-Id: I9237d0afd2e427558ebc2b5cbc97beb5248ec6a3 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
It seems that the QML debugger framework cleanup does not happen correctly when QApplication is leaked. Instead of running into the asserts of QQmlDebugServerImpl::removeService and ~QObject (during destruction of QQuickProfilerAdapter), warn the user with qFatal() about the possible leak of QApplication. Task-number: QTBUG-139131 Change-Id: If0497b3d4de4a1dec1bf968760d9fa79eb24683e Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Qt Code should use file based includes. Change-Id: I19a5b583c0df9c2c418c322ee1221afa1517f77b Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
The message is markdown, so actually use bullet points to show a list of import paths. Previously, the single newlines got removed by Markdown renderers (Markdown requires two newlines to render a newline) which makes the list hard to read because all import paths were on the same line. Amends 299c449. Task-number: QTBUG-140915 Change-Id: I39fd4ddb653ba93bf92705788f51d378321015e4 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Task-number: QTBUG-142016 Change-Id: I50e435bd6343fddcee26973467b3029555c2f983 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
…rrelevant If a QEventPoint is clearly outside an item _and_ the bounds of all its children, or is simply outside the bounds of an item that clips its children, we can stop recursion, for purposes of QPointerEvent delivery, finding which items/handlers are hovered, or which could control the cursor shape. effectivelyClipsEventHandlingChildren() is also recursive, but at least the result gets cached. Task-number: QTBUG-140340 Task-number: QTBUG-115179 Change-Id: I085e38964de6993fa82ad3bd1256868125fde090 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Pick-to: 6.10 6.8 Change-Id: Idc096a96c3c6895b09a97b6ef2d644d8b0454b60 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
When running with Liquid Glass, a TextField/NSTextField have a more rounded appearance. As such, this patch will tweak the focus frame radius accordingly. Pick-to: 6.10 6.9 6.8 6.5 Change-Id: I7918e4de5ca71aea2b5c080e58341bb4fa53c147 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Styles need a way to set the default icon color for controls. Until
now, that was done like this:
icon.color: "tomato"
contentItem: IconLabel {
icon: control.icon
}
This breaks the use case of e.g. an Action that sets its own
icon.color, because the icon property of the control always takes
precedence (see 146bc95).
This patch adds a defaultIconColor property to IconLabel, which allows
styles to specify a color without overriding any potential action's
icon:
contentItem: IconLabel {
icon: control.icon
defaultIconColor: "tomato
}
If icon.color was explicitly set, it is used instead.
This does mean that overriding the contentItem will result in the
icon color being lost, but that is already the case for style
customizations in general.
All controls that set icon.color and using IconLabel to display their
icon are affected and are therefore adapted: Button, CheckDelegate,
DelayButton, ItemDelegate, MenuBarItem, MenuItem, RadioDelegate,
RoundButton, SwipeDelegate, SwitchDelegate, TabButton, ToolButton.
Add FlowPane to the shared folder of the baseline test and use it in
the tests that we touch. This fixes two issues:
- Using Pane as the background fixes text being invisible for some
styles.
- Using Flow provides the most space-efficient layouting of items now
that we have more than would fit in the old layout.
Task-number: QTBUG-87459
Change-Id: I455ce7202a46b7cfa7545650574e48ad72796675
Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
In QQuickAbstractButtonPrivate::updateEffectiveIcon we need to
resolve the icon's color so that QQuickIconLabel knows which of
defaultIconColor and icon.color should win.
In both QQuickAbstractButtonPrivate::updateEffectiveIcon and
QQuickAction::setIcon, we need to unconditionally set the icon
and be more strict about when we return early.
This fixes the case where setting "transparent" as the icon color
wouldn't result in the original image's colors being used, but
would instead result in the style's default icon color:
Button {
text: "Original icon color"
icon.source: "heart.svg"
icon.color: "transparent"
}
Button {
text: "Original icon color (action)"
action: Action {
icon.source: "heart.svg"
icon.color: "transparent"
}
}
Task-number: QTBUG-87459
Change-Id: Ic490e3b37a8174b8c034b84a1ad551a78088e44d
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
The error was: ld: open() failed, errno=21 Use similar CMake commands as e.g. the textrendering manual test. Amends dd31db7. Pick-to: 6.8 6.10 Change-Id: I7dac1567fd2e4269516f7d6c7db5812be3646e6d Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
Otherwise they use the implicit size of the image. Pick-to: 6.8 6.10 Change-Id: I29a57bd9339574e7107a5fe471f2d246d7f97b86 Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
Otherwise the text sits right against the icon, which is ugly. Pick-to: 6.8 6.10 Change-Id: Id20e7633c43183d9209b90893095940f2a7ffc59 Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
Focus behavior was changed in 4d1753b to give the buttonBox focus when a dialog is opened. This will fundamentally conflict with user projects that manually set the focus property. Further discussion will be needed to arrive on a good solution for when the focus property is manually set. For now, we can at least make sure that the new focus behavior is limited to cases where the buttonBox actually contains buttons (aka, not empty), with at least one of them being enabled. Fixes: QTBUG-141998 Change-Id: I704e6a707f5b579e5f4de7b6197abc2fc5dfdf3e Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi>
When sweeping chunks, we might end up allocating additional chunks in a custom destroy handler. This could cause the insertion of a new chunk into the chunk vetcor, in the worst case invalidating the iterators (in the slightly less worse case, we still have a chunk on which we don't call sweep, leading to meta-data corruption later on). Note that while the number of chunks can grow, it can't decrease. Therefore, we can fix the problem by replacing the iterator based partition with a size based one, which has additional checks in case the size has changed during the iteration. As a small optimization, wer run the loops without always checking for a size change first, and only afterwardts check for it (as allocating destroy handler aren't that common). Only afterwards we check if the size has changed, and rerun the loop on the remaining vector. Pick-to: 6.10 6.8 6.5 Initial-patch-by: Rafal Chomentowski <rafal.chomentowski@ge.com> Fixes: QTBUG-141963 Change-Id: If9429a4a9030ec64952426ac35c38d3ae250e18d Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
The event replay debug client can either replay the input events from a .qtd trace recorded using qmlprofiler, or it can accept individual events given as instances of QQmlProfilerEvent. Given the client we can test the service. Fixes: QTBUG-141569 Change-Id: I2f20a84fc35bdadec51f15bb5656becdb2343f3e Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
We can't drop the respective compilation units without re-opening QTBUG-128638 and QTBUG-128782. However, we can empty them out and force them to be re-evaluated. Since you can store arbitrary data in those libraries, this is important for a proper clearing of the component cache. You may hold on to a QObject that in turn holds on to other compilation units. Change-Id: Ie6bd3878c0d45086a7efade76ad5696bf8428acb Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io> Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
std::move some strings into place, check condition only once, use constFind() and constEnd() where applicable. Coverity-Id: 897291 Change-Id: Icad3a49bc1137bc42de14f064cac111134993a2d Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
Change-Id: Ibbc9cf3322f14eeb2ce17fd53238da393477cca6 Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
This commit slightly improves the topic. Now, the snippets on this page not only display "bad code" but do show how to do things properly. The formatting was also improved a bit. Task-number: QTBUG-141543 Pick-to: 6.10 Change-Id: Idc7a2bd8a4a86c96d9490c43d1b3dcf725b5581f Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
This clarifies where we actually want to return a referenced object and where we only hold a temporary reference to prevent it from getting deleted. Task-number: QTBUG-141963 Change-Id: Ied505d798fe9195b4296fa09b719efb17cbd1ea5 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
Avoid polluting the global namespace with these generic names. Pick-to: 6.10 Change-Id: I9126bea529789795323f1d7696f9c5490036e862 Reviewed-by: Hatem ElKharashy <hatem.elkharashy@qt.io>
Task-number: QTBUG-137318 Pick-to: 6.10 Change-Id: I3d5d9c35b214bc1c9878c7b81df32ceed1ac16fc Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
The second two arguments are width and height, not bottom-right coordinates. So after shifting the rectangle left and upwards, we need to add twice the margin to width and height, to have the same margin all the way around. Amends 8115731 Change-Id: I83797ffd460ee47599170090aefcda544c3e4483 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
We shouldn't poke into the internals of the model item like this and we should properly destroy the object including its context and attachment rather than leaving those around. Task-number: QTBUG-141963 Change-Id: Iddc835bbf8176b1a251f72f59d961f13308fc20a Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
This is a purely mechanical change. It adds accessor methods for the various members and makes the members private. Where necessary some code is reordered and some members are cached in locals. Task-number: QTBUG-141963 Change-Id: Ibc02764c33865896d146aff0950252cfee6d0732 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
It's modelData. Calling it "object" was rather confusing since the base class also has an "m_object" member which is however not the modelData but rather the delegate. Task-number: QTBUG-141963 Change-Id: Ib26f4549cd284654d3276b0b81d354e3c7d4c65a Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Coverity complained that the get<>() calls can throw an exception that percolates all the way to main(). There are several errors that combine to generate this warning, not all of them in our code. E.g., Coverity should really not have a problem understanding that get<> won't throw if we checked for holds_alternative before. The qHash() function ought to have been marked as noexcept (qHash() mustn't throw; QHash isn't really prepared for that), std::visit() ought to have been used, though I appreciate the verbosity that would generate. So first try whether using get_if() shuts Coverity up. Incidentally, this makes the code DRY, improving readability. Amends d226e24. Pick-to: 6.10 6.8 6.5 Coverity-Id: 895832 Change-Id: I0ed444cf96d3bfd3792351b66901af58d8180a76 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
In turn inline the isEmpty() method and make the clear() method purely virtual. Also, use qsizetype for the number of events and event types. Change-Id: I701aa27441489af28407cbae9123557a48a3a34e Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
If there are 2 or more methods with the same name but reciving diferent arguments the QJSEngine Pickup the First One declared.
Example:
methodxyz(string)
methodxyz(objptr*)
It picks up the first one passing as argument a string and not the one that i was expecting an object as it was send.