Skip to content

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
wants to merge 10,000 commits into
base: 6.2
Choose a base branch
from
Open

Calls order of q_invokable method #10

wants to merge 10,000 commits into from

Conversation

rjcamatos
Copy link

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.

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 <[email protected]>
Reviewed-by: Ulf Hermann <[email protected]>
Copy link

cla-assistant bot commented Nov 15, 2024

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.
0 out of 15 committers have signed the CLA.

❌ Elias Toivola
❌ jarkkokoivikko-code-q
❌ ec1oud
❌ aavit
❌ Inkane
❌ dfaure-kdab
❌ kkoehne
❌ eskilblomfeldt
❌ semlanik
❌ mitchcurtis
❌ Minimonium
❌ Petrivirkkunen
❌ samishalayel
❌ alpqr
❌ dorisverria1


Elias Toivola 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.

MohammadHossein Qanbari and others added 28 commits April 3, 2025 18:21
The QQuickBasicStyle class is no longer necessary since the Basic style
now supports palettes. This class was retained temporarily to allow
users who had customized the `.qml` files sufficient time to migrate
their changes. Enough time has now passed for migration, making it
appropriate to deprecate and remove this class.

See also this commit 57f0da5

Task-number: QTBUG-135207
Task-number: QTBUG-63369
Change-Id: Ida7cd3d7bc63d307a1b99d667fdf3ad14f156132
Reviewed-by: Mitch Curtis <[email protected]>
Since StandardKey.HelpContents has two key bindings (at least on ubuntu)
then setting `sequences` removes the warning.

Change-Id: If4fb733fe562f1fc56af0d53ae029fa3bd32c0e0
Reviewed-by: Santhosh Kumar <[email protected]>
In SVG, two subsequent identical gradient stops means a hard
transition to the color of the second at that position. However,
this is not the case in Qt and because of the way we sort the
gradient stops, the order of the two identical stops will be
wrong.

This is addressed by adding an epsilon to identical stops in
Qt Svg, but the epsilon is FLT_EPSILON, which is around 1e-7.
The default output precision for doubles in Qt is 6, so when
storing the numbers to file, the epsilon would be lost, the
two positions would be considered identical and the reordering
would happen.

This caused a visual error when running svgtoqml on the
paint-grad-16-t.svg test.

Pick-to: 6.8 6.9
Change-Id: I857958512c3de7dc843a705893b4c2d7d2a36fd4
Reviewed-by: Eirik Aavitsland <[email protected]>
The miterLimit in Qt Quick Shapes is an int, so if we generate
fractional numbers in the QML file, that will lead to a parser
error.

This was reproducible by running svgtoqml on
paint-stroke-07-t.svg.

Pick-to: 6.8 6.9
Change-Id: Ia03cbba7f70f687dc93ac20b86314dae1fbc30d3
Reviewed-by: Eirik Aavitsland <[email protected]>
We need a generalized way of doing animations to simplify
adding animations for other properties. In order to be
as expressive as possible we need to just pass the
animation info on to the generator and let it handle it.
If there are multiple animations affecting the same property
at the same time, we just instantiate them in Qt Quick
and let its engine handle the conflict.

This means that the only way to implement special SMIL
conflict behavior such as add/replace is to create specialized
animation classes in Qt Quick. We can do this at a later
stage if it becomes a priority.

The main use case of having multiple animations affecting
a property at different times should be covered by this
implementation, it should be easy to expand to new types,
and it should be easy to add stuff like easing curves to
it.

Change-Id: I927ea2cef214a300ae8fae3f76ee87fb5d505b3d
Reviewed-by: Hatem ElKharashy <[email protected]>
The tst_customization suffers from severe performance issues in static builds.
Memory is not properly released between test cases, causing the number of composite
singletons to grow continuously and leading to dramatically increased execution times.

Task-number: QTBUG-133755
Change-Id: I5bb23d69602ade942adf2c6c2a029b8612ad2e9a
Reviewed-by: Fabian Kosmale <[email protected]>
This commit should make implementing small PropertyPasses easier:
instead of having to create a new class and registering the PropertyPass
into the PassManager, create a Builder that creates a PropertyPass from
lambdas and registers it into the pass manager.

This avoids having to create a new class inheriting from PropertyPass
for each check that will be added with QTBUG-129307.

Also add a method to PassManagerPrivate to be able to register
propertypasses on builtin objects. This is needed to warn about usages
of 'eval()' in a later commit.

Task-number: QTBUG-129307
Change-Id: If3ea8d092acae4733aacd62ca7769011f0a7633c
Reviewed-by: Fabian Kosmale <[email protected]>
Complain about usages of Eval in qmllint, and make the
qqmljstypepropagator analyze eval calls.

Task-number: QTBUG-129307
Change-Id: I577612220383c624e960db60ed755e0f2dbc59aa
Reviewed-by: Fabian Kosmale <[email protected]>
Reviewed-by: Ulf Hermann <[email protected]>
It turns out that <> characters need to be escaped in the dot format.
They are emitted by the `SetUnwindHandler <null>` instruction.

Change-Id: I279cd29cde8501007e388b027c4fe2e9e18ce38c
Reviewed-by: Olivier De Cannière <[email protected]>
Added an example of combining QThread and QAbstractItemModel - a feat
that our customers ask every now and then

Task-number: QTBUG-135351
Pick-to: 6.8 6.9
Change-Id: I476e7121361e4d85c2d87eb663f0389a337a3085
Reviewed-by: Fabian Kosmale <[email protected]>
Previously, the basic style did not respect the system's dark mode
settings because the palette initialized by QQuickBasicTheme lacked
definitions for dark mode colors.

This commit updates the palette initialization to dynamically set colors
based on the current system color scheme. Additionally, the palette is
reinitialized whenever the system color scheme changes.

The controls gallery example has been updated to demonstrate the new
functionality.

[ChangeLog][Controls][Basic] Basic style supports dark mode now.

Fixes: QTBUG-135207
Change-Id: I2d6a74b407a7981905a9b86e97004cf0609a4bf0
Reviewed-by: Mitch Curtis <[email protected]>
It references setData instead of data.

Pick-to: 6.9
Change-Id: I831fa1d18164396cfc5c5d284b1a1953b798cd26
Reviewed-by: Matthias Rauter <[email protected]>
Some objects have to,from properties instead of minimumValue,
maximumValue properties.

Switch to to,from if minimum,maximum-Value does not exist

Change-Id: Ibb8e2ae3214c5fe654420a5b338d66e8fdae8c6e
Reviewed-by: Jan Arve Sæther <[email protected]>
The useLegacyPackaging option is not needed anymore starting from Qt
6.9. It was removed from the examples in
88660cd and
686400f after the merging of
0db5b424cdaede8724886e8a1eda1380382d9aaf.

Pick-to: 6.9
Change-Id: Ied3a7db2b0590870e4900bfe2d1c39ca600b91c0
Reviewed-by: Nicholas Bennett <[email protected]>
Because it's an example project, not a subdir project that adds other
example projects.

Amends 0b23a68

Pick-to: 6.8 6.9
Change-Id: Iaaab440d1b6e75d89f0948083e275b2d7e7009ef
Reviewed-by: Alexey Edelev <[email protected]>
Add NO_PRIVATE_MODULE to the creation flags of module that don't have
any private headers. There's no point in creating private modules for
them.

Amends e053cef

Task-number: QTBUG-132526
Change-Id: I16caacdbe2af297a1a8c980725b542dd20080041
Reviewed-by: Alexey Edelev <[email protected]>
file(INSTALL) was using QT_DEPLOY_PREFIX instead of
CMAKE_INSTALL_PREFIX for the destination path, which ends up adding
$ENV{DESTDIR} twice to the path.

Change the code to use CMAKE_INSTALL_PREFIX directly.

Noticed this while investigating usage of QT_DEPLOY_PREFIX and double
DESTDIR paths for the QTBUG-135620 issue.

Amends 72e5cfe
Augments b6fd319

Pick-to: 6.8 6.9
Task-number: QTBUG-109553
Task-number: QTBUG-117948
Change-Id: I1973305f9e81f922e05ffb71429f007bbf902222
Reviewed-by: Alexey Edelev <[email protected]>
…om menu

Since 3b598b6 TextArea comes with a built-in
context menu. Here we demonstrate how to add extra menu items to the end.

Pick-to: 6.9
Task-number: QTBUG-35598
Task-number: QTBUG-134903
Change-Id: I1e3d8c044939521aaa076486630e3b879130dfd1
Reviewed-by: Mitch Curtis <[email protected]>
df97b6b2de6282bd6422f1e531a42475dadc980d in Qt Base added an
assert which detected this.

This patch adds an early return if we're about to divide by zero,
similar to 7ca1222. It also
amends that patch to move the start point == end point check
to pathArc(), since it's called from more places.

Fixes: QTBUG-135387
Pick-to: 5.15 6.5 6.8 6.9
Change-Id: If9c5655d5e736825e98d3e93201bf889a1785e49
Reviewed-by: Eskil Abrahamsen Blomfeldt <[email protected]>
And reduce a few duplicate checks throughout our tests.

Pick-to: 6.8 6.9
Change-Id: I31610f07eb548282ade5573af56ffef18d33cd66
Reviewed-by: Oliver Eftevaag <[email protected]>
This fixes the linked bug, but also generally makes sense,
as there shouldn't be a use case where two menus are open at once.

Adjust the documentation to reflect the current state of
context menus and use best practices.

[ChangeLog][Controls][Important Behavior Changes] All non-sub-menus
are now closed when a menu is opened. This is to fix an issue
(QTBUG-134903) where duplicate menus are shown when opening a custom
non-ContextMenu on a text editing control like TextField or TextArea.
This means that rather than two context menus incorrectly being opened,
an extra one will briefly be visible before immediately being closed.
For information on how to avoid this, please see the "Context menus"
section of Menu's documentation.

Fixes: QTBUG-134903
Pick-to: 6.9
Change-Id: I158295b72176935c2dc8072a72a4df66678be824
Reviewed-by: Shawn Rutledge <[email protected]>
…ions

Signal handler in QML can be bound to a Javascript expression.
For example:

```
onHello: console.log(10)
```

Where "onHello" is a Signal Handler.

When this is the case a certain amount of code will be generated
for the Signal Handler, performing some setup routines and executing the
provided expression, generally in a way that is somewhat equivalent to
the same expression being executed as the body of a function call.

It is possible to bind a Signal Handler to a anonymous function, say:

```
onHello: function () { ... }
```

Or:

```
onHello: () => { ... }
```

When this is the case, if the usual process was followed, executing the
Signal Handler would simply produce an anonymous function, but would
never actually call it.
Instead, when such a literal function expression is bound to a Signal
Handler, it is treated specially.

In particular, while the code generation will generally behave similarly,
on execution of the Signal Handler, the expression will be directly
called while the "wrapping" function that was generated around the
expression is ignored.

While this works correctly in many cases, it can misbehave on certain
occasions.

For example, an arrow function doesn't generally set up its own
context for a call, instead borrowing from the outer context at the time
of creation.

When making such a call to an arrow function, in a QML context, it is
then possible to execute code in an environment that wasn't properly set
up for it.

In particular, if the body of the arrow function introduces a
`LoadLocal` instruction, which assumes, when interpreted, an available
`CallContext`, it is possible to try and access memory that was never
correctly set up.

It is, for example, possible to do so by usage of `arguments`, a special
reference that allows access to a pack of arguments in all non-arrow
functions, which will produce a `LoadLocal` instruction when accessed,
for example:

```
onHello: () => { console.log(arguments) }
```

Internally, when generating code for a JavaScript program or expression,
an analysis is performed to understand whether the special "arguments"
reference is being used. When that is the case and the context in which
the reference is used is under a context where the reference can exist, a
local variable for "arguments" is injected and a "LoadLocal" instruction
is later generated to access it.

The analysis considers a binding scope as being able to provide the
"arguments" reference, something that is generally true due to the
"wrapping" that is performed when generating an expression for the
binding, and which needs to be guaranteed in certain cases.

While this breaks down in the face of directly calling the "inner"
function in a Signal Handler binding, such that the analysis might
itself not be thorough enough in those cases, at the time the analysis
is performed we cannot currently know whether the binding we are dealing
with is that of a Signal Handler.

Furthermore, we don't always bypass the "wrapping" function in a Signal
Handler, as there are other cases where this can create issues, for
example the usage of "this" in an arrow function.
When this is the case, instead of directly calling the "inner" function,
the normal "wrapping" function is called to perform setup routines and
obtain the function itself by executing the bound expression,
subsequently calling the function obtained in this way.

To avoid the issue with the usage of "arguments", we re-use the same
methodology, ensuring that when the special "arguments" object is
referenced we never bypass the setup provided by the binding expression.

This ensures that the arrow function will be created in a context where
`arguments` is present and where the necessary setup for the call is
performed.

The special object will be always be empty in that context, which aligns
the behavior to that of non-signal bindings.

To do so, an additional case was added to the code in `writeFunction`
that sets up a binding expression to later skip to its inner function.

A few test cases were added to inspect usages of the "arguments" special
reference under binding contexts.

Fixes: QTBUG-134215
Change-Id: Ib7fdfee91709358f2ee465b1926809ca4617d6f6
Reviewed-by: Ulf Hermann <[email protected]>
Change-Id: I1acf4d47977d3965c891701c5057f5f1718f8286
Reviewed-by: Qt Submodule Update Bot <[email protected]>
This test was always hard to read: it does multiple interactions in
sequence with different sets of property values on TextEdit; and the
single "clicks" argument controlled clicks both before and after the
drag-selection in the middle. At the end, there is also a shift-click.
So we make those steps more explicit. Hopefully it's a little more
maintainable now.

We now wait for the window to be active, in case it helps with
stability.

Pick-to: 6.9 6.8
Task-number: QTBUG-129947
Change-Id: I534c97fc8a3dde87b1b68126c6524fab8fd699ab
Reviewed-by: Frederic Lefebvre <[email protected]>
Reviewed-by: Audun Sutterud <[email protected]>
Reviewed-by: Axel Spoerl <[email protected]>
Change-Id: I346e7c6257d42c3af0d17a81e7405d9445e9feae
Reviewed-by: Oliver Eftevaag <[email protected]>
The plugin importer needs to collect a list of all QML plugins; for that
it traverses the list of all plugins, and checks both their meta-data
and whether the returned instance actually matches the meta-data.

We must however be careful to not call QStaticPlugin::instance()
unconditionally, as this might end up instantiating non-QML plugins from
the QQmlTypeLoader thread, when they should instead live on the main
thread. It also causes unnecessary overhead.

Amends: 3b95a33.

Change-Id: Ic5c2be833eb7377efba4f91aacbd00b41799119f
Reviewed-by: Juha Vuolle <[email protected]>
Reviewed-by: Aurélien Brooke <[email protected]>
Add missing notify signals for the writable properties
in QQuickFolderListModel.

Fixes: QTBUG-114161
Task-number: QTBUG-32039
Change-Id: Ic974174ffea68494ce0c342c71bf7c95c5c56de6
Reviewed-by: Ulf Hermann <[email protected]>
Reviewed-by: Oliver Eftevaag <[email protected]>
It's uncertain why this was not there from the beginning:

- QAbstractListModel::index(row, column=0) has default column 0
- FolderListModel doesn't make any use of columns: the index() column
  argument is ignored, so it doesn't make sense for index() to require it.
- When the autotest calls index(row), it was not polymorphic, because the
  arguments weren't quite the same. So far, the test avoids including
  qquickfolderlistmodel_p.h and sticks to QALM API; but then changing to
  qobject_cast<QQuickFolderListModel *> would change the available API.
- Users may do as the autotest does, and stick to QALM API: after all,
  QQuickFolderListModel does not have public C++ API.

Amends 9593df2

Task-number: QTBUG-32039
Task-number: QTBUG-135370
Change-Id: Iedc437f7a543755f6138ff78845eefe873a64c78
Reviewed-by: Oliver Eftevaag <[email protected]>
Cristian Le and others added 30 commits May 13, 2025 18:07
Test the case when `qt_target_sources` is run only in a subdirectory

Change-Id: I27546c484ff52357a376ec9fadc7e9212b01a034
Reviewed-by: Joerg Bornemann <[email protected]>
This should already be called only once per module definition.
This ensures that all definitions were done in the context of the
qt_qml_add_module call.

This fixes the dependency cycle with subdirectory qml target.

Change-Id: I8e25c889245787fec4dfe27fe60c8ecf3ba4cbf7
Reviewed-by: Alexey Edelev <[email protected]>
Reviewed-by: Alexandru Croitor <[email protected]>
Effectively undo eeb320b
and 3df5ad9.

None of this is relevant to Qt 6 since
331e2ef because the basic
render loop also uses dedicated GL contexts per window now.

Important in particular because 3df5ad9
causes regressions in certain cases, when there are multiple windows
with one becoming dirty and hidden, preventing deleting the QSGTextures.

The patch must not be applied to Qt 5. There the basic loop uses one
context for all windows, and so the original fix is important to have.
The problem of not releasing textures should be solved in another way
for Qt 5.

Change-Id: I440836605121d50c6d059d383975249cc070ac25
Reviewed-by: Andy Nichols <[email protected]>
Pick-to: 6.9 6.8 6.5
Fixes: QTBUG-128864
Change-Id: I18b228579d871e4db259c2eeecf56ef4218fb92a
Reviewed-by: Andy Nichols <[email protected]>
… too

The expectation with setDefaultAlphaBuffer(true) is that alphaBufferSize
becomes > 0 in the window's format. Follow this with the software
backend too. (because it may matter for the backingstore)

Pick-to: 6.9 6.8
Task-number: QTBUG-136755
Change-Id: I07ff34056ea51182c2542a259084dcd746d0450e
Reviewed-by: Andy Nichols <[email protected]>
This seems to be a left-over from the 'Qt Quick Calendar' extension
that is not supported anymore since Qt 6.3 (?).

While at it, rewrite the whole paragraph for brevity.

Pick-to: 6.9
Change-Id: Id1bef92d2e745fc4cbf761555d8aba0271edfc10
Reviewed-by: Mitch Curtis <[email protected]>
A lot of animations will just be a single time line that you
is intended to be controlled from the outside (and formats like Lottie
does not support anything beyond this), so we need some API to
match the general Animation API so that you can restart, pause/resume
and change the number of times an animation loops.

We do this by adding a group of properties called "animations" that
can be used to control all the animations in the document at once.

We generate this both in the QML file from *toqml and also in
VectorImage itself.

[ChangeLog][QtQuickVectorImage] Added some API to the VectorImage
for looping, stopping, pausing and resuming animations.

Fixes: QTBUG-135265
Change-Id: Id372c00110d165d02db357ce77eb1dec504cffb8
Reviewed-by: Eirik Aavitsland <[email protected]>
The old property is noop anymore.

Change-Id: I517f7c3a189d6d67efb04ce286bb2b96e0124e72
Reviewed-by: Alexandru Croitor <[email protected]>
In certain use cases, setting a ListModel that's created by a Loader
can cause a heap-use-after-free. Account for this by storing a
QPointer to the model if it's QObject*, and checking the validity
of that before casting.

I wasn't able to reproduce this in an auto test.

Rename some local variables while we're at it, to improve the
readability of the code.

Fixes: QTBUG-136672
Pick-to: 6.8 6.9
Change-Id: I84bbf21b37fb5675c931600ef8ea47365cceb09a
Reviewed-by: Christopher Adams <[email protected]>
Reviewed-by: Oliver Eftevaag <[email protected]>
The test case assumes that QQuickMenu will handle the key press
events giving the focus items the proper focus reason (Tab/Backtab),
instead of the internal ListView handling them.
However, in most styles, the 'interactive' property of the Menu's
ListView is bound to a condition depending on the 'height' of the Menu,
and if evaluated to true, would cause the ListView to be interactive and
handle key events directly. Make sure that the test assumptions are
valid by explicitly setting and checking for this in the test.

Fixes: QTBUG-133858
Pick-to: 6.8 6.9
Change-Id: Iad458ba96167404a40605ddfbb5b8d2d83d94590
Reviewed-by: Mitch Curtis <[email protected]>
Previously, DragHandler didn't account for scene transforms when
calculating drag threshold. In the case when one axis is disabled,
and the scene is rotated 90 degrees, the remaining axis should be
activated by movements that are nominally the same as the disabled
direction, because of rotation.

Fixes: QTBUG-136354
Pick-to: 6.8 6.9
Change-Id: I6669949908b0d026850411c10056685648a109d9
Reviewed-by: Shawn Rutledge <[email protected]>
Use a std::vector instead. Track QQmlParserStatus via a QQmlGuard on its
QObject. This eliminates the need to keep stable references in the
container that holds QQmlParserStatus. Therefore we don't need to
allocate all of it in one go anymore, and consequently we can use
std::vector rather than our homegrown solution.

Since we now record the attached parser status callbacks in the same
list as the regular ones, we also need to fix their profiler
integration. Otherwise we would get mismatched profiler events.

Task-number: QTBUG-135286
Fixes: QTBUG-132827
Change-Id: I695c8939892b18982f09357a53fe743479218808
Reviewed-by: Fabian Kosmale <[email protected]>
This reverts commit 18c421f.

Removing the dependency hashing is not safe because there are various
other bits covered by it, not only the alias target IDs.

Task-number: QTBUG-136806
Change-Id: I4a8a57d810203a47945ce67916ee5b54ee7a603d
Reviewed-by: Fabian Kosmale <[email protected]>
We need to store them on the JS heap.

Fixes: QTBUG-136797
Change-Id: I8b675a2a5bafcfa49f4bdf38407e8d81b39bc902
Reviewed-by: Olivier De Cannière <[email protected]>
Primarily to allow QQ4A auto tests to exit safely, but also in case any
user wishes to use the Qt.quit() QML functionality.

Fixes: QTBUG-132512
Change-Id: Id1b2c7a661b6cc36bc32fdca6040f5ae32c22364
Reviewed-by: Assam Boudjelthia <[email protected]>
Adds a macro and a main() implementation for use with Quick for Android
auto tests, like the existing quick_test_main().

Moves androidExitCode file API to a new utils header under android/, so
it can be used from both QQ4A and Q4A testing context.

Task-number: QTBUG-130342
Change-Id: I7779df3e9ef7bf9f64f1ec355c3d2d10714cec1c
Reviewed-by: Assam Boudjelthia <[email protected]>
This commit adds QML tests for using the set/get functionality for
QtQuickView properties, and confirming those changes via a C++ class
using JNI.

Task-number: QTBUG-130342
Change-Id: Ib866f1ea1037eeebf1da08058c110942df421ae2
Reviewed-by: Assam Boudjelthia <[email protected]>
Reviewed-by: Jan Arve Sæther <[email protected]>
Make ConstPtrWrapperIterator an alias to an iterator and remove the
broken iterator implementation.

For future reference:
It seems that clang 19 expects to be able to do operator*() on a const
ConstPtrWrapperIterator passed to std::vector<>::insert().

Change-Id: I68013f727e31e46ec690e6d7769fcaded1e7e54c
Reviewed-by: Olivier De Cannière <[email protected]>
Add a visitor that creates warnings about qml and js code, to avoid
having all the warning-related but qqmljsscope-unrelated code in
qqmljsimportvisitor.

Task-number: QTBUG-129307
Change-Id: Icf56979d99855f11c5e72a0c9efbf9ecd629e42e
Reviewed-by: Olivier De Cannière <[email protected]>
Move the stringliteral linting code into the new LinterImportVisitor
class.

Task-number: QTBUG-129307
Change-Id: I5f358f91c41e99383582be9fc1628814563848ed
Reviewed-by: Olivier De Cannière <[email protected]>
Add a helper to retrieve the parent of the current node. It will be
needed in later commits to emit warnings.

Task-number: QTBUG-129307
Change-Id: Iaf6acd55db67e549ca8f34b5e20bf069d12349dd
Reviewed-by: Olivier De Cannière <[email protected]>
Expression is confusing.

Pick-to: 6.9 6.8 6.5
Change-Id: I365ce06a266e24a506b14734fef8b977d6794a72
Reviewed-by: Fabian Kosmale <[email protected]>
Warn when comma expressions are used outside of for-loops.

Task-number: QTBUG-129307
Change-Id: Ic86bf3af7f122f73b70e18c728c72f64c355f982
Reviewed-by: Fabian Kosmale <[email protected]>
Implement the WarnXConstructor and complain about a specific set of
constructors.

Task-number: QTBUG-129307
Change-Id: I27e0cfcb1f061bb2efff1721da4a2bbdb01fcf2f
Reviewed-by: Semih Yavuz <[email protected]>
Warn about usages of the void keyword. This warning is off by default,
mirroring the behavior of eslint.

Task-number: QTBUG-129307
Change-Id: Iba1cc09e028d5053ef1aa28f01f1694efa5c250f
Reviewed-by: Semih Yavuz <[email protected]>
Implement the confusing pluses and minuses warnings. Those are triggered
for weird combinations of unary pluses and pre increments inside of
additions. (same for unary minuses and pre decrements).

Task-number: QTBUG-129307
Change-Id: I45c202efa58a588090d872f0bf8f43523c24a957
Reviewed-by: Fabian Kosmale <[email protected]>
Initialize all argument types even if we already warned about the
missing type annotation. This allows to get correct types in
QQmlJSTypePropagator later on during linting.

Amends 06577c9.

Pick-to: 6.9
Change-Id: Ieaad973f411d5b0f914561d95dfab72175563e15
Reviewed-by: Ulf Hermann <[email protected]>
Reviewed-by: Fabian Kosmale <[email protected]>
Fixes: QTBUG-127325
Task-number: QTBUG-119890
Change-Id: I20b497da025dec8050ea94fc604db33a3ebdde77
Reviewed-by: Fabian Kosmale <[email protected]>
This is a feature in Lottie, where layers pop into existence and
pop out later on. We do this by animating the visibility of the
item.

Change-Id: Ieebab4e84f9254976b0de9759a1f0f4c8026210e
Reviewed-by: Eirik Aavitsland <[email protected]>
The Lottie file format has a feature where a layer can have
the transform of another layer (including any transform
set on one of its ancestors) as its base. This means that
we need a specialized helper type that collects the transforms
of its ancestors and exposes the combination so that it can
be referenced from a different part of the generated QML.

Change-Id: I20b72cb9b9af2834f40f391ecb8df7bb0c5e1958
Reviewed-by: Eskil Abrahamsen Blomfeldt <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.