-
Notifications
You must be signed in to change notification settings - Fork 191
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
base: 6.2
Are you sure you want to change the base?
Conversation
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]>
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. |
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]>
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]>
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.