summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
...
* Fix StackLayout to keep the current visible item after insert/removalJan Arve Sæther2023-04-262-4/+34
| | | | | | | | | | | | | | | | If an item is inserted or deleted at an index less than or equal to the current index, StackLayout.currentIndex will be updated in order to reflect which is the current visible item. This is consistent with QStackedLayout, QStackedWidget and TabBar [ChangeLog][QtQuick][Layouts] StackLayout will now update currentIndex if an Item is inserted or removed at an index less than or equal to the current index. Task-number: QTBUG-112691 Pick-to: 6.5 Change-Id: Id1d687e309c8f199a4f68698b53ca7c169f17dcd Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Trace: Convert qtdeclarative to use new tracepoint generationAntti Määttä2023-04-2614-71/+78
| | | | | | | Pick-to: 6.5 Change-Id: Ieacfa716b657ac221a75cd5a0dd75d5099962e91 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Janne Koskinen <janne.p.koskinen@qt.io>
* Hook up GPU frame timing to QQuickGraphicsConfig and the logsLaszlo Agocs2023-04-256-6/+71
| | | | | | | | | | | | | | | | | | | | | | | | | | | The idea being that setting QSG_RHI_PROFILE=1 will not just enable debug markers (which is only actively used in Quick 3D right now), but also timestamps, and then we can start showing GPU frame times from the GPU side with Vulkan, Metal, and D3D11 atm. (the only catch is that the value is heavily asynchronous and is always referring to a previous frame, usually current - 2, but may be up to current - 4 etc.) In addition to the env.var., the setter/getter API is added to QQuickGraphicsConfiguration. In the end they all maps to the QRhi::Timestamps flag. Once enabled, the renderloop timing log, both with threaded and basic, will start including a new line, as long as the underlying 3D API supports timestamp queries or similar. (in practice this is implemented for Metal, Vulkan, and D3D11 for now) [ChangeLog][QtQuick][Scenegraph] The scenegraph render loop timing logs can now show GPU-side times as well, as long as the application is launched with the env.var. QSG_RHI_PROFILE=1 or the feature is enabled via the new APIs in QQuickGraphicsConfiguration. Change-Id: I42202882b418e12028d6a287c19352a8fb893365 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* QmlCompiler: Implement ConvertThisToObject and basic DTZUlf Hermann2023-04-257-9/+38
| | | | | | | | | | | | | | We know that 'this' is a QObject* since the metatypes stack frame mandates it. Whenever you pass 'this' to anything it's loaded from the special 'This' stack slot which then triggers a DTZ check. A DTZ check is a noop if we can prove that the type is statically known, though. In QmlCompiler, if we have a valid register content, then the register has been set in all code paths that lead to the instruction in question. Fixes: QTBUG-111439 Change-Id: I81d1cd140eea63f85628c3bef3a8f6db0a12096d Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Doc: Exclude licensing header when including a .qdocincTopi Reinio2023-04-253-2/+4
| | | | | | | | | | | | | The \include command includes the source in its entirety when the second parameter is omitted. This pulled in also the license header which was visible in the generated documentation. Add snippet tags and use them to extract only the content we need. Pick-to: 6.5 Task-number: QTBUG-113138 Change-Id: Ie3fe2fede1e81d08201ec4353352ef069aebc388 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
* Fix StackLayout to react to reordering siblingsJan Arve Sæther2023-04-252-0/+11
| | | | | | | | | | When siblings in a StackLayout are reordered, we need to react, since the sibling order corresponds to the "stack order" Fixes: QTBUG-112691 Pick-to: 6.5 Change-Id: Ie768af34bf5ee9d15ca67d61a64115f3df31990f Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Avoid rebuilding the layout before the component is completeJan Arve Sæther2023-04-251-0/+2
| | | | | | | | | | | | | | | isReady() will only return true *after* componentComplete() and *before* destruction is about to happen There is no point in rebuilding the layout when an item is added or removed before the component is ready, because there will be a full layout rebuild as soon as the component is completed. This is a preparation for fixing QTBUG-112691 Pick-to: 6.5 Change-Id: I6e19578d847c6d4518479bc00f21442333e0fb07 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* qquickwindow: Clear hover when a window is hiddenDavid Edmundson2023-04-253-0/+10
| | | | | | | | | | | | | | | | | This fixes a bug in the following sequence: - user opens a window - the window is hidden whilst under the mouse - later the window is reopened without the mouse being under the window - with the lastMousePosition set an item underneath where the mouse used to be gets activated. On X11 we get a Leave event for the hidden window, this is not true for wayland. Pick-to: 6.5 Change-Id: Ib14e8dbe29f1ad9a71a488b671d226be1d017b8d Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Doc: Specify that class name must be fully qualifiedAndreas Eliasson2023-04-252-3/+25
| | | | | | | | | | To avoid confusion, all macros that take a class name as an argument should specify that the class name needs to be fully qualified, even if you're already inside the namespace. Fixes: QTBUG-110718 Pick-to: 6.5 Change-Id: Icaed4be5df44e8d35ef382a918246ed03b0bb0c5 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* qmltyperegistrar: Pass on type of enumsUlf Hermann2023-04-244-1/+9
| | | | | Change-Id: I1ee1efe31985b24923c024658adb2968dd2dfae2 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QmlCompiler: Recognize QStringList and QVariantList as special listsUlf Hermann2023-04-243-0/+25
| | | | | | | | | | They are equal to QList<QString> and QList<QVariant>, respectively. We cannot express this fact in qmltypes, but since those are builtin, we can just hardcode it. Task-number: QTBUG-112227 Change-Id: Iebeb5f6a5350d1c7184b1d9e6a38647e048c3806 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QmlCompiler: Allow conversion from QQmlListProperty to QListUlf Hermann2023-04-243-6/+40
| | | | | | | | | | In the happy case this just retrieves the internal QList from the list property. In the sad case it produces a deep copy. That's not worse than what the interpreter does, though. Fixes: QTBUG-112227 Change-Id: I8b2b0ac74c90b6dcee876e83a64502756733c1c5 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Refactor the usage of icutils::NodeAmir Masoud Abdol2023-04-242-5/+12
| | | | | | | | | | | In Unity Build, on OpenSUSE, for some reason compiler confuses the Node with an `int`. This refactoring resolves the issue by moving the type into the `icutils` namespace. Pick-to: 6.5 Task-number: QTBUG-109394 Change-Id: Id379b9aff21b29115d4503791debd658f034a0cd Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QQmlEngine: Introduce markCurrentFunctionAsTranslationBindingFabian Kosmale2023-04-242-0/+41
| | | | | | | | | | | | | | | The general recommendation to handle language changes in QML is to handle the LanguageChange event. However, if one is willing to tie themselves to the QQmlEngine, we can offer a way to ensure that calling a function will result in a traslation binding. This might also be helpful for anyone implementing a translation system different from Qt's, e.g. KDE's i18n. Fixes: QTBUG-102393 Change-Id: Id4d7a401e0be9d65e1769c8471b26689f44bf66a Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* builtins: Mark list types to be extended by JS ArrayUlf Hermann2023-04-241-0/+4
| | | | | | | | | | This is in line with what we do in the compiler when resolving implicit list types of other types. Change-Id: I49b9ab62d0c38228c7c755b8cf47a7a11e2e0984 Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Doc: Fix typo in QT_QMLLINTER_TARGETS_FOLDER CMake QML property nameLeena Miettinen2023-04-241-1/+1
| | | | | | | Task-number: QTBUG-113116 Pick-to: 6.5 Change-Id: I8d2c1c2e8e96b365b4bd2e6c9a321cdf1824272b Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Popup: Document how to scale a popupVolker Hilsheimer2023-04-221-0/+30
| | | | | | | | | | | | Add a code snippet, as Item::transform is not a notifying property so the Scale item has to be instantiated and bound to separately. Fixes: QTBUG-70939 Pick-to: 6.5 6.2 Change-Id: Ie0ca672dc65f5a44fa2ac2c3f3ee897a6d663d80 Reviewed-by: Matthias Rauter <matthias.rauter@qt.io> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Only signal list variable assignment onceMikolaj Boc2023-04-223-66/+99
| | | | | | | | | | Lists are internally cleared and each element is pushed to the back from the source list in QML. Use nonsignaling operations for clear and push and activate manually having performed the operations. Fixes: QTBUG-112208 Change-Id: I1a995905f3fa758e4cc8c39b8576db668d84a067 Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
* Accessibility: respect value in attached Accessible in controlsVolker Hilsheimer2023-04-2110-11/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | QQuickItemPrivate::accessibleRole is virtual and called by the framework to determine the role of an item. The default implementation checks and respects a possible Accessible attached object. However, subclasses that override the virtual don't, so the attached properties are ignored, and the class-specific implementation wins. This makes it impossible to change the role of e.g. a checkable button. To fix that, move the code respecting the attached object into a non- virtual function that the framework calls instead, and only call the virtual member if there is no attached object, or if that object is not initialized with a role. Replace calls to the virtual from the framework with calls to the non-virtual wrapper. Do this for both QQuickItem and for QQuickPopup, and adjust the logic in QQuickControl types that create an attached object and initialize it's role when accessibility becomes active. Use the non-overridable effective role value for that as well. Add a test case, and to avoid any new framework calls to the virtual, make it private. Fixes: QTBUG-110114 Pick-to: 6.5 6.2 Change-Id: Ia709cecbd181b6d8ee3297a4af60c1e7db9a2c51 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* ACTION_IF: suppress GCC 13 warning about leaked dangling pointerThiago Macieira2023-04-201-0/+12
| | | | | | | | | | | | | | | | | | GCC 13 says: In member function ‘void QAbstractAnimationJob::setState(State)’, inlined from ‘void QAbstractAnimationJob::setState(State)’ at animations/qabstractanimationjob.cpp:295:6, inlined from ‘void QAbstractAnimationJob::complete()’ at animations/qabstractanimationjob.cpp:528:13: animations/qanimationjobutil_p.h:41:39: error: storing the address of local variable ‘wasDeleted’ in ‘*this.QAbstractAnimationJob::m_selfDeletable.SelfDeletable::m_wasDeleted’ [-Werror=dangling-pointer=] This warning is produced when the action is "return" (used by the RETURN_IF_DELETED macro) because we'd leave m_wasDeleted with the dangling pointer. However, it's not really dangling because it was deleted, but GCC doesn't know that. Pick-to: 5.15 6.2 6.5 Change-Id: I3b169860d8bd41e9be6bfffd1757115520a67972 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* XMLHttpRequest: Implement XHR.overrideMimeType()Edward Welbourne2023-04-202-6/+84
| | | | | | | | | | | | | | | | | It was missing from QQmlXMLHttpRequestCtor, making life painful for XHR users. It's a method that has existed in every XHR specification, and is required, if the goal is to be compliant with any XHR web standard. [ChangeLog][Qml][XMLHttpRequest] Added missing overrideMimeType(mime) method. This function can be used to force the XHR object to parse the data in HTTP responses differently than what the server suggests. Done-with: Oliver Eftevaag <oliver.eftevaag@qt.io> Task-number: QTBUG-53709 Change-Id: I9f8ff37e1604b95306a85fc7e64db6d111b9e069 Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
* QQuickItem: item stays pressed after DoubleClicksSami Shalayel2023-04-201-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | Amends 72651a50f83aa72998822312c7b5c6235d28978f. This commit decided to ignore double clicks in the virtual QQuickItem::mouseDoubleClickEvent(). If a subclass inheriting from QQuickItem wants to not ignore a double click, it should override mouseDoubleClickEvent() and handle the double click event accordingly. Fix QQuickMouseArea::mouseDoubleClickEvent(QMouseEvent *event) to *not* call the base implementation in QQuickItem after handling a double click, because QQuickItem sets that double-click MouseEvent back to the ignored state. This was leading to weird behavior on platforms with touch screens like Android or IOS where buttons "got stuck" after a double click. Fixes: QTBUG-112434 Fixes: QTBUG-109393 Pick-to: 6.5 Change-Id: I774189fbcb356b07336f35f053e05a12c34ce602 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* Remove reference to QQuickPointerScrollEvent in documentationMatthias Rauter2023-04-201-1/+1
| | | | | | | | It does not exist in Qt6 and was apparently replaced by WheelEvent. Pick-to: 6.5 Change-Id: I6b833e664d8e5e5d6e2bd23ed90695d43073decd Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* QQuickItemView: Skip instantiating delegates if size is 0Fabian Kosmale2023-04-203-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | If the area of a (List|Grid)View is 0, then instantiating delegates is pointless, as they couldn't be shown anyway. However, our current logic could not handle this case well, and would end up instantiating a delegate for every delegate entry if their size also ended up being 0 - you can after all fit infinitely many 0 sized items into a zero sized container. Detect this situation in QQuickItemViewPrivate::refill and the applyInsertionChange implementations. Note that we only exit early if there are no visible items and the view is zero-sized; if there are visible items, we still want to ensure that they are removed after all. We also need to adjust a few tests which had zero sized views to no longer be zero sized; otherwise they wouldn't have created their delegates in time. [ChangeLog][QtQuick][ListView][Important Behavior Change] If a ListView has size zero, it won't instantiate any delegates until its size becomes non-zero. Pick-to: 6.5 Fixes: QTBUG-110625 Fixes: QTBUG-89568 Fixes: QTBUG-51773 Change-Id: Ibe0e6fa5f01784016882522c120d2fee38df285b Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Doc: Re-phrase descriptions around read-only propertiesSze Howe Koh2023-04-201-6/+6
| | | | | | | | The current text sounds a bit like it's describing a const value. Change-Id: Idf9b8ae14ce032af7ac073419aba6250b26f5847 Pick-to: 6.5 6.2 5.15 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* doc: Expand module docs for Qt Quick ShapesEskil Abrahamsen Blomfeldt2023-04-201-1/+26
| | | | | | | | | | | | Give an overview of the module and some handy links and tips. This also adds a note on how to get anti-aliasing with the shapes, as well as a link to PathText as one of the supported element types. Pick-to: 6.5 Fixes: QTBUG-106529 Task-number: QTBUG-112463 Change-Id: I137d25e2ca138454f913e92158d9286977457227 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Qml: Fix QQmlScriptString::isEmpty()Ulf Hermann2023-04-191-1/+3
| | | | | | | | A QQmlScriptString without a d pointer is indeed empty. Task-number: QTBUG-112859 Change-Id: Ic3aea676403bd815e73d26733392c7f6ac8b84b8 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QmlCompiler: Don't crash on bad list type in signatureUlf Hermann2023-04-191-2/+4
| | | | | | Pick-to: 6.5 Change-Id: I2c4a4ffa810258134a29b87aff46e8eb544b6a55 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QmlCompiler: Don't crash when checking for enum problemsUlf Hermann2023-04-192-6/+7
| | | | | | | | | When checking for CallProperty we want the call base, not the accumulator. Pick-to: 6.5 Change-Id: I24ac066dd440bde459e20b3cf962af04ca531629 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Binding: Reevaluate when before the target changesFabian Kosmale2023-04-191-2/+19
| | | | | | | | | | | | | | | | ...and do not warn about missing properties if when is disabled. Besides avoiding spurious warnings, this also avoids modifying a property only to restore its binding/value directly afterwards. Note that when the binding gets re-enabled, we still trigger the warning. Fixes: QTBUG-112860 Pick-to: 6.5 Change-Id: I5ddd32f2de2dec9da372b08ab4bb5bdb88873e51 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* CMake: use the output dir's .generated dirThiago Macieira2023-04-191-1/+1
| | | | | | | | | | It doesn't exist in the source dir because the files are, as the name says, generated. Pick-to: 6.5 Change-Id: I3b169860d8bd41e9be6bfffd1757127c90e0a6aa Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Fix crashes after 645aaa25b17Michal Klocek2023-04-192-3/+9
| | | | | | | | | | | | | | | WebEngine during page setup can create and delete accessibility interface with QAccessible::deleteAccessibleInterface, which will later on tear down end with a crash as lambda function is called on non existing object. In case accessibility interface is deleted do not try to call repair window. Pick-to: 6.5 Task-number: QTBUG-108226 Change-Id: Ic052d1b6c9c60168fb32f81134263fc484ee654b Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* QQuickListView: relayout when section geometry changesWang Chuan2023-04-191-0/+8
| | | | | | | | | | | | | | | | | | | Section delegate items will now notify the ListView when their geometry changes. Enabling the ListView to call layoutVisibleItems to rearrange the delegate items based on the geometric changes made to the section delegate. The listener is added when the item is created or fetched from the cache. The listener is removed when the item is hidden or removed from the scene. Fixes: QTBUG-101985 Fixes: QTBUG-100002 Pick-to: 6.2 6.3 6.4 6.5 Change-Id: Ia7617424a8447ba82f62629d93b6a000a72bfc02 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* Fix content pointer check for QObject*Ulf Hermann2023-04-191-23/+35
| | | | | | | | | | | It can actually be null rather than undefined. We need to generate a separate check for that and output the correct error messages. Amends commit 05f56d7c78754855c643470ad4e8dfd35c96f927 Change-Id: Ia795e31805181640cd5be19359af51067d3fc8d6 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Material: fix floating placeholder text colorMitch Curtis2023-04-192-2/+2
| | | | | | | | | It should use the accent color when the control has active focus. Pick-to: 6.5 Task-number: QTBUG-112650 Change-Id: Iab389ac4f7fa11e705f85b6a7d3c08e42aec6cd8 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* Material: fix TextArea decorations when in a FlickableMitch Curtis2023-04-196-6/+45
| | | | | | | | | | | | | | | | This patch fixes the following issues when the Material TextArea is attached to a Flickable: - Floating placeholder text scrolls with the Flickable. - When text is cleared without the control having focus: - Floating placeholder text is positioned incorrectly. - The floating text background outline gap is still open. - The background outline color is incorrect when the control has focus (used primaryTextColor instead of accentColor). Pick-to: 6.5 Task-number: QTBUG-112650 Change-Id: Icfa3517e4abcb1209ea2291dabdec225011f19ef Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* TableInstanceModel: handle roleName invalidationRichard Moe Gustavsen2023-04-182-2/+22
| | | | | | | | | | | | | | | | | roleNames are generally guaranteed to be stable (given that QAIM has no change signal for them), except that resetting the model is allowed to invalidate them. TableInstanceModel did so far not take this into account. Handle this case correctly by snapshotting the current roleNames before the model is reset. Afterwards, if we detect that roleNames has changed, we throw the current model set up away and rebuild everything from scratch – it is unlikely that a more efficient implementation would be worth it. Fixes: QTBUG-111987 Pick-to: 6.5 6.2 Change-Id: Id1e3b8e4f983c0f00fc7b30bd4897f1f7fcc3792 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* StackView: emit depthChanged when clearing with transitionVolker Hilsheimer2023-04-181-1/+2
| | | | | | | | | | | | | | | When a transition is used in the call to clear(), then we pop the top element off the stack and start the transition for it. If we read the old depth after doing that, then it will be off by one and prevent the emission of the changed signal if that was the last element on the stack. So read the old depth already before we pop, and add a test. Fixes: QTBUG-84920 Pick-to: 6.5 6.2 Change-Id: Idae619efa25729fafbf238cb4db62472042b1cb7 Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
* Doc: add a general statement about QQuickItem::visibleVolker Hilsheimer2023-04-181-1/+5
| | | | | | | | | | | | For items not added to a scene, the value of the property is somewhat unpredictable and should generally not be relied upon. Amends d1b9a4cacfb966cf0a37983d8f8044f3aedf5de3. Fixes: QTBUG-112838 Pick-to: 6.5 Change-Id: I4caf46d5497c676e870763d2cb7dcc9c00684f0d Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* ComboBox: don't open on key release unless press was handledVolker Hilsheimer2023-04-181-1/+1
| | | | | | | | | | | | | | | If a Keys handler eats the press of the activation key, then the release event shouldn't show the popup. The default keyPressEvent handler sets the pressed state to true, so we can test that state to see if we should act on the corresponding release. The key release event should still be accepted to stop propagation. Add a test case. Pick-to: 6.5 6.2 Fixes: QTBUG-109721 Change-Id: Icb76453733d05cba59fdfb365b0cebf710be5f01 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* QQmlExpression: Adapt to QQmlScriptStringPrivate being null sometimesUlf Hermann2023-04-181-0/+8
| | | | | | | Fixes: QTBUG-112859 Change-Id: I0336ceec4eee1112eb45f994ba67e1104638d78f Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Doc: Promote options for controlling QML compilationAndreas Eliasson2023-04-181-2/+6
| | | | | | | Fixes: QTBUG-112348 Pick-to: 6.5 Change-Id: I69f96ca15b8cae362f54afcd1dc0041e5932afb4 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Fix word selection on touchTomi Korpipaa2023-04-181-1/+3
| | | | | | | | | | | | | The cursor position update on mouseReleaseEvent broke touch-and-hold word selection on touch devices. Now only do it if we don't have an active selection. Pick-to: 6.4 6.5 Fixes: QTBUG-111504 Fixes: QTBUG-110850 Change-Id: I5c63d8516d1eef3de10289c6d5c5b3d1d3e8623f Reviewed-by: Sami Varanka <sami.varanka@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Document that running a Quick Test always show a windowVolker Hilsheimer2023-04-182-32/+30
| | | | | | | | | | | | | | | | | | | | | | After 47490648b14938049ddf84c3f665619c1117241c, test functions are executed asynchronously through a scheduler. This makes the entire logic for detecting whether a test case completed during setSource() obsolete, and always results in a window being shown. That is as such fine, Qt Quick Test always required the GUI and Quick specific Qt modules and platform plugins to be available (so it wasn't easily possible to run those tests on a server without any display infrastructure). But we can now remove the logic from the startup function. Add a note to the documentation that running tests always shows a UI, and how to avoid it using the offscreen platform plugin. Pick-to: 6.5 Fixes: QTBUG-110592 Change-Id: Ie69b04e3fd4044db2fc7f0fc3ca44947a3dddfce Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* QQuickWidget: don't crash in accessibility when reparentingVolker Hilsheimer2023-04-183-9/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QAccessibleQuickWidget delegates all calls to the QAccessibleQuickWindow, which it had as a member that was initialized at construction time to the offscreenWindow backing the QQuickWidget. Both are QAccessibleObject subclasses, and QAccessibleObject stores the object it wraps as a QPointer. The QAccessibleQuickWindow's object becomes null when that offscreen window gets destroyed (for instance, when reparenting). We might get called by the accessibility framework in that situation, as we are clicking a button and the hierarchy changes. To prevent crashes, we need to test for nullptr in QAccessibleQuickWindow. However, that alone would leave us with a useless QAccessibleQuickWindow, and in turn with a useless QAccessibleQuickWidget instance. The QAccessibleQuickWindow is not directly exposed to the accessibility framework, and all calls to it are dispatched through its QAccessibleQuickWidget owner. We can't repair the QAccessibleQuickWindow but we can replace it entirely if we manage it as a heap-allocated object. Use a std::unique_ptr for that, which we can reset with a new instance created from a new offscreen window in order to repair things. We can now either test in all functions whether the window's window is still alive. Or we can handle the destroyed() signal of the offscreen window. The latter solution is a bit more involved, but generally more scalable as we don't have to remember to check, and possibly repair, in each QAccessibleQuickWidget function. Pick-to: 6.5 Fixes: QTBUG-108226 Change-Id: Ib19c07d3679c0af28cb5aab4c80691cc57c4e514 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* De-inline QQuickItemChangeListener destructor and export classVolker Hilsheimer2023-04-182-3/+6
| | | | | | | | | | | | | With all virtuals inline, every module that has types deriving from this class will have their own vtable for it, which is both unnecessary and dangerous if we want to dynamic_cast from or two this type. By de-inlining the destructor we pin the vtable of the class to QtQuick. Pick-to: 6.5 Change-Id: Iaf83a1d7391e73992a44d5cd651b0194ea43d31c Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QQuickItem: merge notifyChangeListeners overloadsVolker Hilsheimer2023-04-181-15/+7
| | | | | | | | | | | | | The two template methods did the same, we can use if constexpr to detect whether the function pointer is a member function pointer and call it on the listener object if so, otherwise as a free function. Refactoring, but enables bug fixes and stability improvements in follow up commits. Pick-to: 6.5 Change-Id: Idc3f81fd22f3246482fdc99fcdae43074c70d9df Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Remove Qt 5 era comment in qsggeometry headerLaszlo Agocs2023-04-171-4/+0
| | | | | | | The enum values could be anything in Qt 6. Change-Id: Ia05af9cbd34ea726eb223f191787e854ea4c53a9 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Clarify unsupported topologies in QSSGGeometry docsLaszlo Agocs2023-04-171-10/+15
| | | | | | | | | Should have added a note about this in Qt 6.0 already. Pick-to: 6.5 6.4 6.2 Task-number: QTBUG-111012 Change-Id: I650abdb69d4f1dd6aff6d8e84970fc5e91384f02 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Support building for Raspberry Pi 1 or ZeroDimitrios Apostolou2023-04-171-0/+1
| | | | | | | | | | | | | | | | | | | | Cross-compiling (using Clang-13) for Raspberry Pi OS on Raspberry Pi 1 and Zero, requires adding "-target arm-linux-gnueabihf" to the compiler flags, which defines macro __ARM_ARCH_6KZ__ to detect for armv6. Fixes error: qtdeclarative/src/qml/../3rdparty/masm/wtf/Platform.h:312:6: error: "Not supported ARM architecture" More details: it turns out that the already checked macro __ARM_ARCH_6ZK__ is a typo with significance because older versions of GCC only had this. On the other hand __ARM_ARCH_6KZ__ (that this patch checks for) is the correct spelling, and it's the only one defined by Clang. Newer versions of GCC define both. Pick-to: 6.5 6.4 6.2 Change-Id: I60532bfcaa62677f88ed2cff05d872a14c4c2111 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>