aboutsummaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Merge tag 'v6.5.7-lts-lgpl' into 6.56.5Tarja Sundqvist2025-10-12216-682/+1970
|\ | | | | | | Qt 6.5.7-lts-lgpl release
| * Merge tag 'v6.5.7-lts' into tqtc/lts-6.5-opensourcev6.5.7-lts-lgplTarja Sundqvist2025-10-09216-682/+1970
| |\ | | | | | | | | | | | | | | | | | | | | | | | | Qt 6.5.7-lts release Conflicts solved: dependencies.yaml Change-Id: I8fbe9c1606825b726adf95e69a4fa86e2196f4e8
| | * ListView: fix countChanged not being emitted in certain casesMitch Curtis2024-10-032-6/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This broke after 477c15def834bd49553c00b90f3a2006456ea931. countChanged would have normally been emitted in the call to applyModelChanges that we skipped after adding the q->size().isNull() check. We can check hasPendingChanges() to know if a count change is pending (which is also the first thing applyModelChanges checks before doing its work), and if so, emit countChanged so that any bindings that are relying on it can function as expected. Fixes: QTBUG-129165 Change-Id: Ic045f1870b39d192f6880e23daab03fd73a16d58 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 0a1d8fb26d1e89c82a0d35dd728d7e928a94d197) Reviewed-by: Tarja Sundqvist <tarja.sundqvist@qt.io>
| | * Add the missing wrapping quotes around tool_wrapperAlexey Edelev2024-09-201-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-128420 Change-Id: Ia57bd6d978fbdb6aa03fa693222bc2bbd997ad94 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit 3923ecb326e3232f05947c594d6ddb98909afc72) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit ff72c8b677c050162c002eb1879b9d8162898326) (cherry picked from commit 8e5eb9b6edfb5e404f57dbb0a41bb958b4103a8a)
| | * QQuickVisualTestUtils::compareImages: actually check all colorsMitch Curtis2024-09-121-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The function was added in 906d5c5c40183468f9521277c6244a6c46730de6. The tests there don't only use red, so it looks like this bug has existed since 2013. Change-Id: I4bdf87fe6be0224016baf9a2a80faee6fe61514e Reviewed-by: JiDe Zhang <zhangjide@uniontech.com> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 74c019e799fab74b85cd444c1e104638b7dd6c96) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 1eaef559a616ff9b2acb86f82c154e57b9f75168) (cherry picked from commit c258f31173a020e9736132f7deb15eb2d5725f0e)
| | * Take care of asyncResponses when qml_network is disabledFatih Uzunoglu2024-09-121-8/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In qquickpixmapcache.cpp the ifdef's need moving to support non-network async image fetching. Fixes: QTBUG-126628 Change-Id: Ia8ab97684a815176cfd80ac16015403d91f84bcf Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit d5a87231bad550bc54d982e388bf62198769a1d2) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 4127e2899fc2a90e59da5418dbb19dd27834970c) (cherry picked from commit c3d8682585cfc6b7677fe0c5fa296c129cbfdda3) Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
| | * QQmlComponent::setInitialProperties: rename "component" parameterMitch Curtis2024-09-111-4/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It's not a component, it's an object instance. Also amend the documentation to be clearer that it is to be used with objects created from QQmlComponents. Change-Id: I164d894bcd61b9c39bde902cfcf5ada17a2478c4 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit dc92f5ddee1330901c7f0a8768563306a9a84cf1) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 47aab5890a93e2c141e234c09aef9c1e3966824e) Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit cd5dcb26cfccaece4be8ba4b00d8f356bcf734fb)
| | * Menu: Activate Menu Item When Mnemonic Key is Pressed, Same as WidgetsMohammadHossein Qanbari2024-09-111-0/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a menu is opened, its menu items aren't triggered by pressing their mnemonic key using the Alt key. Also, aren't triggered even when their mnemonic key is pressed without the Alt key. This behavior is different from the widgets menu behavior. When the widgets menu is opened its actions can be activated by pressing their mnemonic key without holding the Alt key. When a key is pressed on QQuickMenu and no modifier is held, it loops over its items to find the item whose mnemonic key matches the key. If the item is found, the click() method will be called. The test case opens the menu and sends the press and release events with the mnemonic key of each menu item, and checks that they are triggered. When the item is checkable, the test verifies that the checkedChanged() signal is also emitted. Conflict at 6.7 resolved by simulating the click functionality as it is introduced in 6.8. Task-number: QTBUG-96630 Change-Id: I99f27c6306e14375b45d0630e4f9047e33fa64fb Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> (cherry picked from commit 520c8ab1492259c354dd6541a7cd2de1afbd3368) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 6f4370b5183bb7acb97be4dc3479c0c7bdc0764f) (cherry picked from commit e1ad73a0beea17ea71e216cb58a4ead997fb6f95)
| | * Doc: Add information about Felgo QML Hot Reload toolNazar Gerasymchuk2024-09-102-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a new section into documentation page "Qt Quick Tools and Utilities". Add a new item into external resource to point to an official Felgo page about Felgo QML Hot Reload tool. Pick-to: 6.2 5.15 Change-Id: I2fa2a6c03138033f75319fc278cb435b5978b85b Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit 96dbecc64f59589ed82040d36f7c85ea7a133434) (cherry picked from commit 409df2c9f244204c00313a115305d1515a3ce4a8) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| | * Fix undefined reference issue for Color object in MessageDialog qmlSanthosh Kumar2024-09-081-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Color singleton object used in MessageDialog throws an undefined warning. Import the required module to resolve this issue. Change-Id: I929d9839274b7393e36c6d0ffe159037a92e2423 Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io> (cherry picked from commit 7ddac741d3718771f81991829579981323b4c189) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 1830b880bebde8cb2c64d39937ea423236d735ea) (cherry picked from commit f9e5087152ebfa9fb0501899eba44b4c9411bfa0)
| | * Check qml context object state in the table instance model only neededSanthosh Kumar2024-09-051-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It's better to have the assert condition w.r.t to the context object within the model where we access the respective data. This patch removes the existing assert in the QQmlTableInstanceModel::object() and uses a similar validation inside the QQmlTableInstanceModel::incubateModelItem() before accessing the context-specific data. Fixes: QTBUG-126981 Pick-to: 6.2 5.15 Change-Id: I799476434afc4c22c8b39544bc994232d6bf8ef2 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit 2cfffb708808ba49148ba4f30c7c8841e5dfb2d9) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit bb49bef6d9b89223512cada878872a684f2c6c4c) (cherry picked from commit db0023bf6924472876e500537fe77dc785775acb)
| | * Improve binding loop warning messageMitch Curtis2024-09-054-4/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before this patch, a binding loop warning would look like this: [...]/tst_dialogbuttonbox.qml:574:9: QML DialogButtonBox: Binding loop detected for property "implicitWidth" Print the expressionIdentifier so that it looks like this: [...]/tst_dialogbuttonbox.qml:574:9: QML DialogButtonBox: Binding loop detected for property "implicitWidth": qrc:/qt-project.org/imports/QtQuick/Controls/Basic/DialogButtonBox.qml:10:5 This is one step closer to making it easier to quickly debug binding loop warnings, but we still need to print the stack trace. Task-number: QTBUG-36525 Change-Id: Ic337398e8b1060abcc43aa2b45557acc2057e49b Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 49a290b2b58672366e29abd6813ac0a643554228) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit e5da5dfa2c53604ae201b8296dabe2b43c2c1ce6) (cherry picked from commit 6391acd0f71e4d7eb426c6e5849bf23fc5de1154)
| | * Fix multi-screen menu pop-up locationLu YaNing2024-09-041-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | According to f8cf17166c9af147f0b8fea72f5b4a8a6098a5d7 When QT_SCALE_FACTOR is greater than 1, the Popup menu pops up incorrectly on the second screen. Replace the toNativePixels with toNativeLocalPosition. Fixes: QTBUG-127906 Change-Id: Id320063afccfd3a391426bc6419cbe8855c57b98 Reviewed-by: Inho Lee <inho.lee@qt.io> (cherry picked from commit 7574111a56d38832fd330df5ba4839d0263fbc09) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit b0f91c7f4c3502e1e4a0aaec6cc5b06496a639fe) (cherry picked from commit 3cd5450ea1f2d6f1ffac585c1dfc19747c22944e)
| | * QQuickTableView: ensure VerticalHeaderView stays in syncRichard Moe Gustavsen2024-09-041-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bacuse of a copy-paste error in QQuickTableView, TableView would calulcate the wrong viewport rect for vertically synced views if the views were not also synced horizontally. The result of this mistake was that the rows in the two views would end up with with different heights (and y pos) while flicking. This bug has been there for a very long time, but was hidden becuse of anther bug that was recently fixed (25348bc0e6). After that fix, this new bug became evident. This patch will make sure that the offending if-test checks the correct sync direction, and thereby also calculate the correctly combined viewport rect. Fixes: QTBUG-128508 Pick-to: 6.2 Change-Id: Idf4d93830933c9a28786adaba14e068015564fcc Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> (cherry picked from commit 379108f118865f8afc55e46d9a1c217fd30c1c11) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit d8bab4785bf69ccfd0b18987bdfb67a7e9d4a147) (cherry picked from commit 5688d45261a1d6fc7e1887fe29885a8dc2c4938b)
| | * Mark software renderer dirty when render target changedJiDe Zhang2024-09-021-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes: QTBUG-127727 Change-Id: Idf551145fea20442360fbbfba5196b020364f542 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io> (cherry picked from commit 6f1826c5bd26c7f4de59f68b43e77d213b4b22a8) Reviewed-by: JiDe Zhang <zhangjide@uniontech.com> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> (cherry picked from commit 5fb78c67dd2f6699da5cea64a1455e41f9e64292) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 1b3e12e3009da6492fed77f7d1571c84807e6d52)
| | * QQuickHeaderView: for explicitly assigned models, document that data() will ↵Richard Moe Gustavsen2024-08-311-17/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | be used The detailed documentation for HeaderView says that if you assign a QAIM to the model property, the models headerData() will be used. But in the documentation for the model property itself, it says that data() will be used (except when using a QAbstractTableModel). Both cannot be true. The actual behavior is that we use data() when the model is assigned explicit to the model property, and headerData() when the syncView's model is used. It's debatable whether or not we should have always used headerData(), but changing that now could cause regressions. Such a change would also stop e.g QML ListModel from being used as a model, which is also an argument for keeping it as-is. This patch will therefore fix up the documention to be consistent, and to inform that data() will be used. Fixes: QTBUG-123595 Pick-to: 6.2 Change-Id: Id64977a3db5f00b4269f0e5ffb6a31e5ad607725 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> (cherry picked from commit f4bc018fa9e57bdd72556473040622acac508ea7) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 4e4e8328c6ab7f80d868d57f98fbd08f54cbd97d) (cherry picked from commit 1b42a3405944dc5890fa70eac7b72e6430f3f8c7)
| | * QQuickWidget: Clamp texture sizeLaszlo Agocs2024-08-271-1/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Copy the behavior from QQuickRhiItem, which handles this correctly. The older QQuickWidget seems to lack that logic for some reason. Also add a qWarning to make it clear what is happening, because clamping the texture size may cause unexpected results in the visual output. Fixes: QTBUG-123636 Change-Id: I08d4ac23f709c85dc975c030fd198127d7eb4d23 Reviewed-by: Andy Nichols <andy.nichols@qt.io> (cherry picked from commit 431da3b90556e0ffceaff4aea878c480818cdd69) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit c07953df95adb0d99098b88857c150be1c191d96) (cherry picked from commit f1a9c01e682c4f11f9e336cdcf040993a379e860)
| | * QML: Type-check objects passed to QmlListWrapperUlf Hermann2024-08-264-9/+106
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | So far we could assign QObjects of any type into any QmlListWrapper of another type. This is UB, since you may be holding the underlying QQmlListProperty in C++, and it's also not very consistent. Assign null instead if the type doesn't match and emit a warning. Likewise, also warn when initializing a list with mismatched elements. [ChangeLog][QtQml][Important Behavior Changes] Assignments to list properties in QML are now type-checked. Before you could, for example, insert a plain QObject into list<Item>, producing undefined behavior. Now it instead inserts null and warns. In particular, if you assign a JavaScript array of random objects to a list property, QML will check each individual element, and insert null as well as warn when encountering type incompatibilities. Fixes: QTBUG-127343 Change-Id: I9b78afcd3ed40c80175a99861373588f56683954 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit aeabdb93885e51d5c7dbecbb69af1750370a65fa) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit c9c1a08409e71e8ee93d3ff3b16678ee24135acf) (cherry picked from commit 2b3a164cb09c290c394e6dd83d1d9e14c2bae334)
| | * doc, QQuickHeaderView: ensure example snippet worksRichard Moe Gustavsen2024-08-261-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As it stood, the qdoc marker in the example code left the final curly brace out of the snippet. A copy paste of this example would therefore not compile. This patch will make sure the brace is a part of the snippet shown in the docs. Task-number: QTBUG-123595 Pick-to: 6.2 Change-Id: I68bfac0cfc3dcecd487bfb69de07c317f787552e Reviewed-by: Santhosh Kumar <santhosh.kumar.selvaraj@qt.io> (cherry picked from commit 3968ef8650da91c8e66d1651f7891793ac3b5d74) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 9ecc9131ed9be2ad421e3ced0b589c00205de2d5) (cherry picked from commit 303bd79ec66a5752405c32afe0d703f119983e67)
| | * TextInput/TextField: Deselect text on tap or clickShawn Rutledge2024-08-252-1/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We now use the same approach as in QQuickTextControlPrivate: on press, set hadSelectionOnMousePress according to whether text is already selected or not; on release, if hadSelectionOnMousePress is true, we should move the cursor (and thus deselect text). Some history: Commit 650342de792e0ab37ce8bac8ccde21ab9b96b2c9 disabled direct text selection on touchscreens, because mobile platforms provide text selection handles, and otherwise the user's finger is usually too large relative to the font size to select text precisely, as one does with a mouse. The test added there is now amended: if text was already selected on press, we do expect tapping to move the cursor and deselect the text. Commit ac3f1eace1102543008a0ceded541e40ff495368 allowed importing an old Qt Quick version to allow tapping to deselect. Commit d6ddfa3d4ca3fbbaddc2acd7ebe3f8296fc68b68 fixed another bug: text would lose selection when releasing afer a long press. But text could not be deselected by touch. One way was to tap on something else to make the text field lose focus. Fixes: QTBUG-127440 Task-number: QTBUG-10684 Task-number: QTBUG-38934 Task-number: QTBUG-101205 Task-number: QTBUG-111504 Task-number: QTBUG-116606 Change-Id: I5001216fc30266fcce3af413ecfa091bfd99beed Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit e434796c6766b48fd725866bd2998fe963bbbe14) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit e87e786111dfc8f5d880f34f0bdf32188852cb6f) (cherry picked from commit 639003b317b3628645db73c24aee75536bf95707)
| | * 2D Renderer: Make sure cachedMirroredPixmap is never dirty when paintingAndy Nichols2024-08-232-16/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When using the software context for Qt Quick scene graph rendering, it was possible that Items using "layer.enabled: = true" would not be up to date if these sub-passes were updated while the tree using them was not visible (Due to update()/updatePaintNode() not being called). If the cachedMirrorPixmap doesn't get updated, then the previous image will be used when the item is painted, which is incorrect, and the update() method will not be called again until the next time the item is dirty. This change makes it where if the cache is still dirty when we start painting, we update it then, because spending a bit more time renderer is still better than rendering the wrong thing. Fixes: QTBUG-114984 Pick-to: 5.15 Change-Id: I70f9f6d1dfd46d6870a2bee2ae72294e8982b776 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io> (cherry picked from commit 29a52df82397fd8a00308f7e34b08059d6affc91) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 57cdb43db40569faefef9e42d3ad42f3fc2bc4cd) (cherry picked from commit c996d0fa2364d1a83cdf39927254fe787e2ad14e)
| | * Fix memory leak in QSGBatchRendererDominik Holland2024-08-231-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make sure the also delete the ClipInfo and RenderNodeElement in the shadow node. Fixes: QTBUG-128283 Pick-to: 6.2 5.15 Change-Id: Ida00e4eefa0e0dd0ab518a141138561254303e41 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> (cherry picked from commit e94f211c970ff8a342e01400d855216f46372905) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 8f389f2ce6060f36046980722937cb74c2a3c7d3) (cherry picked from commit 9ebdb8b77cb467cea56f983773124e08bb4db059)
| | * Fix invalid memory access during highlight creation in the item viewSanthosh Kumar2024-08-232-3/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The creation of highlight item in the item views can go recursive leading to invalid reference in the item thats been used to keep track of the highlighted item. The highlighted item has been reset with the newly created highlighted item due to the geometry change in the item views, which happened while creating the highlighted item itself. This is like creation in a recursive loop. Since the highlighted item referred by the tracked item, has been reset (in the second call to the createHighlight()), the existing reference in the tracked item automatically becomes invalid.                       This patch adds validation to avoid recreating the highlighted item in the item views if the creation request is already in progress. Fixes: QTBUG-127455 Change-Id: Ib4908d84e24c773e2b43a12c00ba23259896e171 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> (cherry picked from commit 81c95fb650a15261b9ba08e1dfe99f5f03fc3ad2) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 6c11f156d6f57de0916051cf18734ee9492ecb96) (cherry picked from commit 2bf8027effcf52a7dc6aa117371bef2c38ce4ce3)
| | * Fix updating TextEdit when mirroring changesKaj Grönholm2024-08-231-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When Item LayoutMirroring changes and mirrorChange() gets called, update the document properly. Task-number: QTBUG-124922 Change-Id: I2b8a0e05ae3f0479eed68c0a7f84b23ba8d56e76 Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io> Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io> (cherry picked from commit bc722385fbfba625b9fba6fac035a2982820eab9) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 07a7b349e20b813cafb3b55697027f8e9de6a753) (cherry picked from commit 629bb4f89405362de20c09891a29c13496141f5c)
| | * QQuickTableView: don't leave the viewport in an overshooting state after resizeRichard Moe Gustavsen2024-08-231-12/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If we need to change the extents of the Flickable (that is, which point should be considered the top-left and bottom-right corner of the contentItem inside the viewport), it can sometimes happen that that Flickable is left suspended in an overshooting state (that is, it looks as if the user dragged the contentItem out-of-bounds, which will normally make it bounce back upon a release). And this comes across as a bug. This patch will therefore call returnToBounds() explicitly whenever we change the extents (unless the contentItem is being dragged, as we don't want to interrupt that). As it stood, we would also call markExtentsDirty() far too often from updateExtents(), even when the extents didn't change. Depending on what Flickable does to handle dirty extents, this causes uneccessary overhead and might slow down performance. It also produces a lot of superfluous logging output in TableView. This patch will therefore also check if the extents change before calling markExtentsDirty() (and as such, avoid calling returnToBounds() all the time). Task-number: QTBUG-127809 Pick-to: 6.2 Change-Id: Id801f3e62b3dcde1b59d49e4efc9d6631d5672bb Reviewed-by: Santhosh Kumar <santhosh.kumar.selvaraj@qt.io> (cherry picked from commit 523c53d33d0d40cf1b71991903a2192c05a926de) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 68a468980fe9831ad81fb382cf9d17a03236d4bb) (cherry picked from commit b45356c73299281b16831567dadcb61e7de064f4)
| | * Update text components with color fonts when dpr changesEskil Abrahamsen Blomfeldt2024-08-228-7/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There was already a hook in text components to update when the renderType was set to Text.NativeRendering. This is necessary because the text is rendered into a glyph cache at a given size and scaling it further will give pixelation artifacts. However, there are cases where the NativeRendering backend is used implicitly. In particular this happens for color fonts, so when changing the dpr of a screen (or when moving the window to a screen with a different dpr) we would get pixelated emojis in some cases. The fix is to detect in the text node whether any glyphs use the NativeRendering backend and if they do, we update whenever the dpr changes. Fixes: QTBUG-121449 Change-Id: I9ad62d792e495d4439715fe87acfd87dd1833c67 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> (cherry picked from commit 23ae81c84de8bb30ba2d779c603a5b3aded2a417) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 4a85b870e4fa4febdc262f9a3060177bf86f6b5a) (cherry picked from commit 4da6490b6e5ee840fa81e6a91da4251989fbcd92)
| | * doc, QQuickHeaderView: syncView should point to the TableView, not the other ↵Richard Moe Gustavsen2024-08-221-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | way around The docs suggest that the syncView for a TableView should point to the HeaderView. But it's actually the other way around. Task-number: QTBUG-123595 Pick-to: 6.2 Change-Id: I303ac50321aad581fd3472b3e3ff8ad93ecad701 Reviewed-by: Santhosh Kumar <santhosh.kumar.selvaraj@qt.io> (cherry picked from commit 37d9f3d4584e9a455284336895cb4df27ca2aee8) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit b2dc306e57bb90adda7eab121e4c651610ab4be3) (cherry picked from commit c5c1d7736948ff4273e76651f33cadd5d631c56f)
| | * Compiler: Don't pass a moved-from type resolver to PassManagerOlivier De Cannière2024-08-211-9/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This can lead to crashes in static analysis passes when they try to use the resolver. Change-Id: I2f7951374a3aa6bd38ef93333b97b08d9a46dd13 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit cc87c4ade4bde5cf3dac617049f539e3361d7309) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit aca26a0bd0c1ce145b5b3841f89f3e989fc5f654) (cherry picked from commit 44bcd9936c2d3709eb2496f02e481a82b3434373)
| | * QQuickTableView: detect if sync view and sync child is out of syncRichard Moe Gustavsen2024-08-201-10/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When syncView is requested to do a relayout, it will tell the sync children to do relayout as well. A relayout alone will not change the top-left delegate item in the viewport, only layout the existing delegate items. But as it turns out, it can happen that the relayout leaves empty space in the viewport that needs to be refilled with new rows and columns. This is typically the case if some of the columns were resized smaller than what they used to be. And this can change which cell ends up as top-left, or move it to a different position. We therefore need to extend the check in syncSyncView to also include the _position_ of the top-left cell, and not only if the top-left cell itself has changed. As it stood, we also did a viewportOnly rebuild every time a new row or column was flicked into the viewport. This is very unnecessary, and slows down performance. Instead, we only need to do this when if the sync child is told to do (at least) a LayoutOnly. Only then can any of the visible rows or columns have been resized. Fixes: QTBUG-127809 Pick-to: 6.2 Change-Id: I815a47e9d6453871172ff7136f8cfbd51a5bc789 Reviewed-by: Santhosh Kumar <santhosh.kumar.selvaraj@qt.io> (cherry picked from commit 25348bc0e67f019232aa70c5558988a0c17bd15e) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit a5d0cfe092cc8411469ef53df13f2dac12051bf4) (cherry picked from commit 6f699d343c3dab086acf927c8601c88580317365)
| | * Views: use isNull for zero-size checks rather than isEmptyMitch Curtis2024-08-203-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QSizeF::isEmpty returns true if either dimension is negative, but according to tst_QQuickListView::resizeView, we support negative-sized views. Amends 37c25c6e74f4f74d7cca8f5b0f12a40ec0354f7e. Change-Id: If860cd5a459adf75470e5fc2deba3967b2e66366 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> (cherry picked from commit e64662650f351c24a5818f89e84c7a7dc4133e73) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 4c0df79ba847fb38ef40a3b561d4559aa2908aba) (cherry picked from commit f17ba1881175cea55791029ea4f1a09c0fa1847f)
| | * Container: cull items when our size is zero and contentItem is a viewMitch Curtis2024-08-203-1/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The typical use case for SwipeView is that the user declares items directly as children. Those children are added to its QQmlObjectModel, which are then used as the delegates for its ListView. ListView culls the items it manages, but in the case of a zero-sized view, those that are outside the view - and hence not in its visibleItems list - are not its responsibility. That responsibility instead falls to QQuickContainer. It's also necessary to clear and return early in QQuickItemViewPrivate::layout if the size of the view is zero, otherwise the tests that check if a valid-sized view is made zero-sized fail. Add a new C++-based test for Container which is only run with the Basic style (similar to e.g. tst_qquickmenubar) so that we can check the culled member of QQuickItemPrivate. tst_container.qml is run with all styles (even though it probably doesn't need to be, but it would also be difficult to rewrite in C++, even though it's fairly small). Fix some tests that were using zero-sized views. Fixes: QTBUG-125416 Change-Id: Ia05791b69568d51bea310e4f09266645ca2f1829 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> (cherry picked from commit 477c15def834bd49553c00b90f3a2006456ea931) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 0b6fd253e64519144808c02f161d2166198e4158) (cherry picked from commit add0731317f81a0e71535af0be94ddb1cca695de)
| | * Optimize fixed numbersLiu Zheng2024-08-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Optimize fixed numbers to facilitate subsequent character array expansion Change-Id: Ieb3b2ba527a88054594e00ddbf1072cccefb6965 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 8541bab2f040ddc2c5d096791f37715df83bc2df) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit a390b2dbe61b3e2eb42ddad7a47d5166bee00338) (cherry picked from commit fb515d46c9b50c58dc155c3e04593363aabf77fc)
| | * Dialogs: Fall back to non-native dialog if native dialog can't be shownTor Arne Vestbø2024-08-162-5/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A native dialog helper might not be able to show a dialog due to the dialog options not being possible to represent with the native dialog. If so the helper returns false from show(). We were not handling this case, so failing to show a native dialog would result in no dialog shown. We now fall back to the non-native dialog by destroying the native helper and using the non-native dialog helper explicitly. Fixes: QTBUG-124124 Change-Id: If50c63e419ae7b13e9317cd2cbbcaa02fe13bbd5 Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io> (cherry picked from commit c821284d97b6be6755d1bddeec85d222ecb924e6) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit e0b536e01d6d07db4f4cf012b8deca811d7d9bde) (cherry picked from commit 37ae99b2c1618f46277147e243da2a9adb4286c0) Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
| | * fix: mips array out of boundsLiu Zheng2024-08-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When the incoming data is 4, the index defined by this macro has a crash Log: mips array out of bounds Change-Id: I5acff5479f17e55d5731443d08b0915c701968f6 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit f83669821b960e95f76807d1d64db07926fe3f5b) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 64769e675affd4bb7c2bf7eb9dc6aa1589a2061c) (cherry picked from commit ce7303567f9d29ce9d9c55f4cd014afc8b805833)
| | * QQmlListModel: Invalidate ModelObject when necessaryUlf Hermann2024-08-124-17/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Both the object and the listmodel may be deleted during the life time of ModelObject. Don't crash when that happens. Also, fix QV4QPointer to actually name the type of the pointer it stores. Apparently this is the first time we add a QV4QPointer of something that's not a plain QObject. Pick-to: 6.2 5.15 Task-number: QTBUG-118024 Change-Id: I208d8749bcd67970f7bfbe569eed7a472f909508 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 90c55e859ea258350da815acd3e1967d5ff54100) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit aa253878fedee9bc699ec333d3c0c600e24f316f) (cherry picked from commit f7182e0124776acf0bfb1348192e09e3ccc86f0e) Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
| | * Controls: replace Qt.styleHints with Application.styleHintsMitch Curtis2024-08-1241-110/+110
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As mentioned in QTBUG-95540, using the latter provides better type information for tooling, and avoids the "this property only exists on the object if Quick has been imported" issue. Replace QtQml import in Fluent style's Config.qml with QtQuick to provide access to the Application type. Fixes: QTBUG-126512 Change-Id: I4aac22e54f3b522f74acafd467ce22139352c9dd Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit 9335b0fd1f2358110b88127c9b34fa6867a14069) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit d70e645ca8071789e7d1906114b96ec36233179b) (cherry picked from commit 2a40db4f99ca6ab02f55968a422172cebc4f10a9)
| | * Tumbler: Set view currentIndex when currentIndex is set on modelChangedMohammadHossein Qanbari2024-08-091-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Tumbler displayed an incorrect item when the currentIndex was set during a model change. This issue occurred because setting currentIndex in the onModelChanged handler was not considered. The bug happened when the Tumbler was instantiated with the wrap property set to false. To fix this issue, it should be verified that the view's currentIndex matches the QQuickTumblerPrivate's currentIndex after endSetModel(). The currentIndexSetDuringModelChange property can help determine if the currentIndex was set during a model change. There were a couple of test cases that did not account for this scenario. The test cases have been updated to be more general and to check for this and other related cases. Fixes: QTBUG-124921 Change-Id: I82511cee8a5dbd6295fce6b3451aa205e977a8f5 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> (cherry picked from commit ca771d0a018138ede48f3b7bf6732a16650bd888) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 6aa2a13292f578dd42ee15748bec4b1fb172518e) Reviewed-by: MohammadHossein Qanbari <mohammad.qanbari@qt.io> Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io> (cherry picked from commit c8cc0fd380b71f7257fc8281a075b3ab33dcfa2a)
| | * QQmlProperty: Reset the binding bit when removing a null bindingUlf Hermann2024-08-091-6/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If we remove a binding we don't want any later code to restore it. This works quite well if the binding we remove already exists. removeFromObject() resets the binding bit and that settles it. However, if the binding doesn't exist yet, we so far didn't reset the bit and when the binding appeared we would still add it to the object. That was quite wrong. Pick-to: 6.2 Fixes: QTBUG-124553 Change-Id: I58c115d78b3701ad4e8837772261a9154b971dbb Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit c9d7620bc2e47d3e1b84f824eb5b643f269f4a56) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit bd75b606ca78b3b92dd9596359b232da3358608e) (cherry picked from commit 3b4ec8930c20f107d48134f88b7113df2825ef7a)
| | * DialogButtonBox: Fix docs for default alignment propertyDoris Verria2024-08-091-6/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The default value for the alignment property is not undefined, as this is an integer property. Correct this in the docs. This is a resettable property and setting it to undefined is allowed and will call the RESET function, however the returned value can not be undefined. Change-Id: Id9d2f74052fa4a85a8505378d41c990fd7b3283c Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit 3c0207c00cbf6a05c34c706df6eace9d8d411b03) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 84c3ca6090005882947e547910b7cddfb563fe7b) (cherry picked from commit 3026697f2796b1d9f1373bce611a8249058500f6)
| | * Tumbler: Prevent changing currentIndex when creating the viewMohammadHossein Qanbari2024-08-091-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The initial value of the QQuickTumbler was not the same as the value in the QQuickListView when the Tumbler component was loaded. This meant that the view was showing an incorrect item in the Tumbler. The reason was that during the QQuickTumbler creation, the currentIndex would change due to the QQuickTumblerView::createView() in the view initialization. To fix this issue, the QQuickTumbler now ignores changes to currentIndex until the view is initialized. When the view has initialized and QQuickListView's currentIndex is not the same as the QQuickTumbler's currentIndex, it will be reset to the QQuickTumbler's currentIndex value which is set in Tumbler by the user. The existing test case has been updated to support the Tumbler without a delegate to force the default view to be instantiated. The currentIndex is set to a value outside the highlight range, and it will then be checked that the currentIndex remains the same as the initial currentIndex. Fixes: QTBUG-127315 Change-Id: I2603cfba228728d6fd3c464dce2e4eeac1365d75 Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> (cherry picked from commit 6b440f5a0c62508405a5f0a0d757b0e83effffe8) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 48e08515620c6546b2f539013de0682b89645223) Reviewed-by: MohammadHossein Qanbari <mohammad.qanbari@qt.io> (cherry picked from commit 109e817e4944d7ba5bc6a2a1f9b72d21cffa9a15)
| | * Prevent batching together geometry with different index typesLaszlo Agocs2024-08-081-12/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of attempting to handle this one layer down, when deciding about merging, make the decision already when creating the batches. Fixes: QTBUG-97557 Task-number: QTBUG-125087 Change-Id: I83825c60d76124244979e009459d47f07a67fa77 Reviewed-by: Andy Nichols <andy.nichols@qt.io> (cherry picked from commit 9087f078c000bb5a760ca8e2179a3a1e5cae2b43) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit b645aaa9cd474606a4e056004c8b505c3f4daec8) Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit f17f174b939c6db87701de13458f6a39c24157dd)
| | * QQuickFolderListModel: ensure that beginResetModel isn't called twiceMitch Curtis2024-08-081-7/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the process of opening a FolderDialog, FolderListModel's folder property is set twice: once upon component completion of FolderDialog.qml, and shortly after if FolderDialog's currentFolder property is set, due to the binding in FolderDialog.qml. This would cause beginResetModel to be called twice, which invalidates the assertion made in QQmlDelegateModel that this doesn't happen. This patch ensures that beginResetModel is always followed by endResetModel by tracking if we're in the middle of a reset. This is (indirectly) tested by tst_QQuickFolderDialogImpl::bindCurrentFolder. Task-number: QTBUG-125053 Change-Id: I4c22be173807187e56f4d528a465225b787e840a Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 789f7316b82d3bb2377b41d881be626964849840) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit b2ff845f8e14e702b4c72db6fcd7cedaef6b0637) (cherry picked from commit 7c7b222e0cc6cd48f693708439f382ec795b5bc1)
| | * QQmlDelegateModel: fix delegates not being created in certain casesMitch Curtis2024-08-082-18/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When calling beginResetModel from the constructor of a QAbstractItemModel subclass, QQmlDelegateModel has not yet connected to modelAboutToBeReset. endResetModel is then called later, but after 837c2f18cd223707e7cedb213257b0158ea07146, we no longer connect to modelReset, so we never caught this and delegates wouldn't be visible. This patch ensures that we connect to modelReset and call QQmlDelegateModel::handleModelReset(). Fixes: QTBUG-125053 Change-Id: Ib9c179420053a8733b505f3d8d51c712df28a348 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 6561344dd2d1ba69abe6edec4fe340b256da9e13) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit cc3d7ef3228316e88a67292404d2cf72f66f9f1a) (cherry picked from commit dd7d8f38b5e0f58e8edd490757069aaed862a340) Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
| | * QQuickTextNodeEngine::addText(): don't crash if QTextLine is invalidShawn Rutledge2024-08-071-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a QTextBlock has been pulled out of a QTextDocument, lineNumberForTextPosition() returns -1, so lineForTextPosition() returns a default-constructed QTextLine whose `eng` pointer is null. QTextLine::textStart() needs to access `eng`, so we can't call it. The new autotest is similar to what a syntax highlighter does. However QTextLayout::setFormats() doesn't trigger QTextEdit::update() by itself. QTextCursor::endEditBlock() results in QTD::contentsChanged() being emitted, which is connected to QQuickTextEdit::q_textChanged(); so we test it both ways to ensure that it doesn't crash in either case, but one can see the text turn green only in the case that update() is called somehow. Done-with: Santhosh Kumar <santhosh.kumar.selvaraj@qt.io> Fixes: QTBUG-126886 Pick-to: 6.2 Change-Id: I9c1093af7002432add3b4ab856a41ce2f9af4619 Reviewed-by: Santhosh Kumar <santhosh.kumar.selvaraj@qt.io> (cherry picked from commit f6810b64401ead3a9ace972acea7797c998e91b5) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit a144c6c7510fa7374d63f0621cdf129b629aed3d) (cherry picked from commit 7a49e4b35889c8d3694e064a18e481223ccdbb61) Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
| | * QtQml: Detach sequences before serializing them to stringsUlf Hermann2024-08-071-3/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Otherwise they will be re-fetched over and over for each element. Fixes: QTBUG-81231 Change-Id: Id8db14d13c0d1372b44a6e094006839892325389 Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit c7111871a7ca7c785b04046d0f58ae9fcbc6f94d) (cherry picked from commit e91c9a9148ea9229c2a66a478ad1c3fbd2a6d5df) (cherry picked from commit 8c97fc2740c63935eedb380031d249ee0887085b) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| | * QQmlProperty: Handle binding assignment earlierUlf Hermann2024-08-071-12/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Otherwise we might mistakenly assign bindings as regular values. Fixes: QTBUG-125095 Change-Id: Ib39e81a128a3b212cafeb378cebbbd0acb67b760 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io> (cherry picked from commit 8bfd582daa103fe496d65af62e166a97f5a17407) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit eb460e4ee134c64fa00cdcee76bd0b4478ed2dfc) (cherry picked from commit ef97a93f343e1b5e4f98ef20a6e58a33b8d4ffd8)
| | * sg: Shortcut material ubuf update for glLaszlo Agocs2024-08-062-6/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Only for OpenGL: there a QRhiBuffer with UniformBuffer usage is not backed by a native OpenGL buffer at all. The ominuously named beginFullDynamicBufferUpdateForCurrentFrame() just returns a pointer into the underlying QByteArray (or similar) storage then. (only on GL, only for uniform buffers) Knowing this, the batches' uniform data can be memcopied directly into this area, instead of enqueing resource updates that ultimately achieve the same. Could be applicable to D3D11, to save a memcpy. However, it is not given that, thinking of unmerged batches, separately memcopying lots of small blocks (Qt Quick does not actually build up the final, full uniform buffer contents itself) into a buffer's mapped (host visible) storage is a good thing. (given the potentially different memory caching behavior e.g.) So it is not done there. To recognize the special case, we use nativeBuffers().slotCount == 0 which is only every true with the OpenGL and Null backends (indicating that the QRhiBuffer has 0 real buffer resources associated), which conveniently avoids the need to introduce backend-specific conditions. Task-number: QTBUG-125087 Change-Id: I88a9ef5eff6c52a88b2605bdab8cada86a18e98e Reviewed-by: Andy Nichols <andy.nichols@qt.io> (cherry picked from commit 2cecb2a00d56d5cf382174306596af8114555768) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 573d32119063fdd2b1335622d1eb14c7c8d60484) (cherry picked from commit cb06386b9e34d5ccffc2b4e55adc577d2391501e)
| | * QQmlImportVisitor: Prepend ':' for qrc paths only when necessaryOlivier De Cannière2024-08-061-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The resourceFileMapper doesn't expect ':' in front of its paths. Amends 5860c9c12c1c948ce1498da30581bfd5b9c05988 Fixes: QTBUG-124498 Change-Id: Icf837708ff6fc5153009bafbf1b98a75a3cfba8e Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 001cb7bfb1a2815cad912ce1b5b9d4d1cef30e01) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 943633724e2a2731ccfc4ce35766e442c23c41bc) (cherry picked from commit c6502fcf891173d5c3476b7857b87fd7fde508c4)
| | * Fix detecting infinite loops in PolishLoopDetectorPiotr Wierciński2024-08-061-30/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Resetting counter too early was causing infinite loop in a function responsible for detecting infinite loops (how ironic). Fix this behavior. Decrease the threshold for detecting infinite loop from 100k to 10k iterations for better responsiveness. Fixes: QTBUG-126474 Change-Id: Ife45e694d417b1d23fa1294e069ee54eff31c047 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io> (cherry picked from commit c9e235a638c991f523cf6250af6ea82ad4a17639) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 798fcfc403e8dcfd6eefb5bb1f623fcda644bec6) (cherry picked from commit 4f69583aaf5768ec2e168940524851b4fdb39bae)
| | * ListView: take section size into account while snapping an item into placeIvan Solovev2024-08-061-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In case the sections are displayed using ViewSection.CurrentLabelAtStart, the section size should be taken into account while snapping the items. This patch extends the fixup() method to perform such checks. The drawback of this approach is that the position adjustment takes some time (because of the animation) and happens after the scrolling is finished. A better solution would be to fix the scrolling process in such a way, that no adjustment is needed during fixup. Fixes: QTBUG-30768 Pick-to: 6.2 Change-Id: I31a1a3af55afe8be4e8d7980cbb163622e3283bc Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit 249fe4ba127e834a33950a045d06628187987f99) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit b29bfa7ca03470afd06c4bdfada9ac6712957c32) (cherry picked from commit 174e6b59ecb76393c678341dfe74e482a35c8b19)