summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* QItemSelectionModel: don't warn when destroying the modelv6.5.36.5.3Volker Hilsheimer2023-09-221-3/+3
| | | | | | | | | | | | | | | | | | | | Amends 4f4a8e75ab34003a4a49b89392ae7712415ac788, after which QItemSelectionModel printed a warning when destroying the model. We reset the selection model in response to the model getting destroyed, and since the model is already set to be nullptr at this point the select() function complains about changing the selection with no model set being a no-op. Fix this by not calling reset() when the model gets destroyed - the stored selection and currentIndex are already reset at this point - and instead only call reset() when a new model is set in initModel. Fixes: QTBUG-117200 Change-Id: I12fc6b3fb2f2ff2a34b46988d5f58151123f9976 Reviewed-by: Axel Spoerl <axel.spoerl@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> (cherry picked from commit dc126de22ea4d38736ae57c08c0b271f3c53fad9) Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Update public suffix listMarc Mutz2023-09-212-4158/+4192
| | | | | | | | | | | | Version 1a4824549b093abc3077205ae5386ed57f73806d, fetched on 2023-09-20. Fixes: QTBUG-117138 Change-Id: If288d7fce714384a0132261303de31ad2299c239 Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io> Reviewed-by: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io> (cherry picked from commit dee68587d5fd3feb99a04ad700f2cd065cf72797) Reviewed-by: Antti Kokko <antti.kokko@qt.io>
* Upgrade Harfbuzz to version 8.2.0Eskil Abrahamsen Blomfeldt2023-09-2154-191/+1171
| | | | | | | | Task-number: QTBUG-117136 Change-Id: I910c8bff2fe521aa02929b9000fa7f38192d1a51 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> (cherry picked from commit 08134e458d7fdd0b9565976046821b3903166dd6) Reviewed-by: Antti Kokko <antti.kokko@qt.io>
* [docs] Fix \since for qHash(qfloat16)Marc Mutz2023-09-201-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The patch adding the function unexpectedly made it into 6.5 before 6.5.3 was forked off. That's nice, as it reduces the number of releases with a broken implementation, but the documentation and ChangeLog were written assuming a merge for 6.5.4. Fix the documentation. Amends 6da6a17de9ccfcd5458ea72507b131660e0ab948. [ChangeLog][Editorial][QtCore] Delete the old entry for qHash(qfloat16), keep the one from this commit. [ChangeLog][QtCore] Fixed qHash(qfloat16) which was broken from 6.5.0 to 6.5.2, inclusive. If you compiled against one of the affected Qt versions, you need to recompile against either Qt 6.4 or earlier or 6.5.3 or later, because the problematic code is inline. Task-number: QTBUG-116064 Task-number: QTBUG-116076 Change-Id: If8fa35fb8532cf0bbf2ba0438694d95fd9bd6991 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> (cherry picked from commit 0f19cafc3cbb85dfd67c5c6f7421943e9c063ea1) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 8e14e13c16249f5dd4f25e8d681498e393241493) (cherry picked from commit 3974778dc9bcb427e9dcdc20b179c7c3aedf737b)
* SQLite: Update SQLite to v3.43.1Andy Shaw2023-09-193-92/+101
| | | | | | | | | | [ChangeLog][Third-Party Code] Updated SQLite to v3.43.1 Fixes: QTBUG-117139 Change-Id: Id4f7d55adb317f009613245510c4eb26678ddc7a Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> (cherry picked from commit 4583d808ea50beb8da9302f34eacfc1e9a2ed907) Reviewed-by: Andy Shaw <andy.shaw@qt.io>
* Upgrade to Freetype 2.13.2Eskil Abrahamsen Blomfeldt2023-09-1937-3169/+320
| | | | | | | | | | Task-number: QTBUG-117135 Change-Id: I2485cf286f590eccee9c4be4bb19559631288fd5 Reviewed-by: Christian Strømme <christian.stromme@qt.io> (cherry picked from commit 5641a5e1e54c9694a1ba1d462165db9c7c0e529c) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit b2e888dc812762df9054e982929a894a1fab8a52) (cherry picked from commit 0449c4b4eafd7cb40fedb3dabd73e85988333cda)
* GUI: give more warning when can't load xcb since 6.5.0Liang Qi2023-09-151-0/+4
| | | | | | | | | | | | | | | normally because new depedency of xcb-cursor0 or libxcb-cursor0 is missing. Task-number: QTBUG-108796 Change-Id: I040e9c0932bbf1f9026b365ded462c7373b219b5 Reviewed-by: Eike Ziller <eike.ziller@qt.io> Reviewed-by: Axel Spoerl <axel.spoerl@qt.io> (cherry picked from commit f7519a89d27de7e473bb864cb377aa679c619c0c) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 3516539945ce73437dd17f769902d85955dae6ed) Reviewed-by: Liang Qi <liang.qi@qt.io> Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
* Revamp Mandelbrot example: Revisit the documentatonRym Bouabid2023-09-141-2/+2
| | | | | | | | | | | | | | | | | Remove "Example" from the title. Edit the link (title) to the documentation of Mandelbrot in QThread documentation. Delete the foreach related sentence as we are trying to port away from this Qt pseudo-keyword. Task-number: QTBUG-108861 Change-Id: I6d04f24ac9c1fa1efe30a947c2da2ec7475edc80 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io> (cherry picked from commit 73a1ae6ea91cbcc7ddfd80defd78ac924dea4c6e) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit e9d400b4aae39519d11db95904800e0e36721188)
* Windows QPA: Adjust margins for Windows App SDK compatibilityTimothée Keller2023-09-141-3/+26
| | | | | | | | | | | | | | | | | If using the ExtendsContentIntoTitleBar() method from the Windows App SDK, the top margin becomes zero. The current approach does not account for this, since it relies on the AdjustWindowRectExForDpi function. Do a manual check after and correct if necessary, by comparing the window and client sizes. Fixes: QTBUG-113736 Change-Id: I62e0338b3ff7af47f5525dcccd0f9acfe9691819 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Wladimir Leuschner <wladimir.leuschner@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> (cherry picked from commit 8dbc4824895ea9f87d1f6406fe2d22336b6253ed) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 3a54d31093ca8805e87d75f47c7bfab0cf595244)
* qsimd_p.h: rework the check for x86-64-v3 featuresThiago Macieira2023-09-141-13/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of checking that all the features be present if any of them are -- which is not an acceptable proposition, because each of them were productized in at least one processor before -- let's simply insist that they all be present if AVX2 is. That's what we can guarantee: all AVX2- capable processors are capable of: - AVX and earlier SSE (architecturally implied, so not checked) - BMI1 - BMI2 - F16C - FMA - LZCNT - POPCNT This restores the original set of features that were checked in commit ad65bbe4c061c4c1521b928a18ef9d68b7c69cbb when this was introduced, but only if AVX2 is set. It also POPCNT, which was introduced with the Nehalem architecture (which matches x86-64-v2) but aren't implied by AVX. GCC's -march=x86-64-v3 implies CRC32, but -march=haswell does not because there were SKUs lacking CRC32, AES and PCLMULQDQ. This is probably a bug in GCC. Fixes: QTBUG-116357 Task-number: QTBUG-111698 Task-number: QTBUG-107072 Change-Id: Ifa1111900d6945ea8e05fffd177e113eaa506dde Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> (cherry picked from commit 39d3af0c29147ff319e89c0be602d99af0af0996) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit cd8667cb17f34e6ba3b0d0b94d7cd05be839f48e)
* ios: Fix crash when closing app while showing a native screenAlbert Astals Cid2023-09-141-1/+4
| | | | | | | | | Fixes: QTBUG-117021 Change-Id: Icebae0e815b42c6e0bf39e727fd1a16db5752d78 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> (cherry picked from commit ae83f327cd812c199304159fc9bbd93f4a728fdb) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 9be520e445a6ab6c2bde84e2552ce2404478bfbb)
* syncqt: Handle possible exceptions thrown by std::filesystem::create_directoriesAlexey Edelev2023-09-131-7/+33
| | | | | | | | | | | Wrap the directory creation logic with try/catch to handle possible file system exceptions. Change-Id: I11ad4552dccfdc8cc8a4ec4912d0a15d0f9557c6 Reviewed-by: Amir Masoud Abdol <amir.abdol@qt.io> (cherry picked from commit 7164cce881c3d65eb18749471ba5e358c7d5998a) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit afbc0c7267f0058e2738eb0671c458ec02ab860d)
* syncqt: Mark updateOrCopy as exception freeAlexey Edelev2023-09-131-2/+3
| | | | | | | | | Change-Id: I4ac468ef503775bca7d3848d26b42990bb4fdd1a Reviewed-by: Amir Masoud Abdol <amir.abdol@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> (cherry picked from commit cab5ede6a3890b9cc07e54a0558a577c932ec21a) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 28ad12261c43ae795971ee76df7081daf441ed28)
* syncqt: Add the missing file stream close callsAlexey Edelev2023-09-131-0/+2
| | | | | | | | | | | Call close explicitly to avoid any issues related to non-closed file descriptors. Change-Id: I02df30032dc04afd5d135d707eff4a6efe6a3ea5 Reviewed-by: Amir Masoud Abdol <amir.abdol@qt.io> (cherry picked from commit e9ca247479206b3d6f3815c599a244d9bfbae394) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 35b3deeb587437396ce42b54dae5bbbb225b74b7)
* syncqt: Add the missing is_open check to writeIfDifferentAlexey Edelev2023-09-131-0/+4
| | | | | | | | Change-Id: I2a969483d20f250083c1a262bd3bfc696a7f0df4 Reviewed-by: Amir Masoud Abdol <amir.abdol@qt.io> (cherry picked from commit a86fb92d4bc1a64703cabf351035efc861ea54dd) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 7e1321080c9bc1c779d9682bee8d95324a9878d1)
* syncqt: Generate the deprecated header in the framework directory tooAlexey Edelev2023-09-131-2/+10
| | | | | | | | | | | | | Generate the missing deprecated header in the framework directory for the cross-module deprecation case. Amends 7e84a04563142d217317928865a8f6475d189d95 Change-Id: Ibb2d262e41c6de7dfb34c39cabd6b19c43aa9636 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit 09c46d63af3ea68d7b49c395b9375d2b5d3ed666) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 89b36f49436f72d3d5e21e7709a6016e86e1ff27)
* Fix qHash(qfloat16) to match Qt 6.4 behaviorMarc Mutz2023-09-132-0/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There were two problems: - On platforms where QFLOAT16_IS_NATIVE == true, a qHash(qfloat16{}) call has become ambiguous between the three FP qHash() overloads (float, double, long double), where it was unambiguously calling the float one in Qt 6.4. This SiC was caused by the replacement of operator float() by operator __fp16() in 99c7f0419e66692260be56c0385badeacb3f6760, which is in Qt 6.5. - On platforms where QFLOAT16_IS_NATIVE == false, qHash(qfloat16{}) would produce a different value from qHash(float{}), and therefore Qt 6.4, when the seed was != 0, because the former would go via the one-arg-to-two-arg qHash adapter while the latter one would not. Since participating functions are inline, this causes old and new code to produce different hash values for the same qfloat16, leading to a BiC possibly corrupting QHash etc. Fix both by adding an explicit qHash(qfloat16). This function is inline, so it doesn't add a new symbol to 6.5.x. [ChangeLog][QtCore] Fixed qHash(qfloat16) which was broken from 6.5.0 to 6.5.3, inclusive. If you compiled against one of the affected Qt versions, you need to recompile against either Qt 6.4 or earlier or 6.5.4 or later, because the problematic code is inline. Fixes: QTBUG-116064 Fixes: QTBUG-116076 Change-Id: Id02bc29a6c3ec463352f4bef314c040369081e9b Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> (cherry picked from commit 6da6a17de9ccfcd5458ea72507b131660e0ab948) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit e8fb761f758fe00f3f778e2b475ef3efbefff271)
* doc: Remove QSettings' paths for embedded linuxMohammadHossein Qanbari2023-09-131-6/+4
| | | | | | | | | | | Embedded Linux is just Linux nowadays. Fixes: QTBUG-116715 Change-Id: I1f64d27550db6f711c7f1f578e85cad12d0973aa Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Samuli Piippo <samuli.piippo@qt.io> (cherry picked from commit d8b7c03cc5b82276c74b6f210dc18a324ede3105) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QDialogButtonBox: Manage hide and show of standard buttonsAxel Spoerl2023-09-122-15/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 0b421fa58b9a73d657bf17834788fd1175c4767e ensured a correct focus chain, when buttons in a QDialogButtonBox were hidden. The implementation did not check, if a hidden button was added via setStandardButtons(). In consequence, it was removed from the standardButtonHash and never added again. QDialogButtonBox::button() returned nullptr for a standard button, once it had been hidden. That introduced a regression. This follow-up patch makes sure, a standard button is not removed from standardButtonHash, when hidden. By no longer removing it from standardButtonHash, it makes showQDialogButtonBox::button() always return the pointer to the standard button, even if it is hidden. The function handleButtonDestroyed() used the argument QDialogButtonBoxPrivate::RemoveRule::KeepConnections, in order to leave signal/slot connections untouched. It expected the the destroyed button to be removed from standardButtonHash. In order to retain that functionality, the enum class RemoveRule is renamed to RemoveReason, and one value was added. QDialogButtonBoxPrivate now handles all necessary cases of removing a button: ManualRemove (previously Disconnect): - remove button from roles - remove button from standardButtonHash - disconnect all signals LeaveEvent (previously KeepConnections): - remove button from roles - do not remove button form standardButtonHash - do not disconnect signals Destroyed (new): - remove button from roles - remove button from standardButtonHash - do not disconnect signals (QObject will do that) An autotest is added to tst_QDialogButtonBox. Task-number: QTBUG-114377 Change-Id: Ib28625d44fa89c3d06f181f64875c2e456cebbfa Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> (cherry picked from commit edc984db384311e25a0afe4902585bd97e4ebcd1) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit bcdcceca6c4be261e5ca4b600e9275ec84ec7a90)
* QString: fix append() wrt. raw dataMårten Nordheim2023-09-131-0/+4
| | | | | | | | | | | | | | | | | | | | | | When appending to an empty string, we optimize and copy the internal pointer. But if the other string was created with fromRawData this might be temporary data on the stack/heap and might be de-allocated or overwritten before the string is used or is forced to make a deep-copy. This would lead to incorrect data being used. This is easy to overlook if you plan to append multiple strings together, potentially supplied through an argument. Upon appending a second string it would make a full copy, but there might not be a guarantee for that. So, it's hard for users to avoid this pitfall! Fixes: QTBUG-115752 Change-Id: Ia9aa5f463121c2ce2e0e8eee8a6c8612b7297f2b Reviewed-by: Ahmad Samir <a.samirh78@gmail.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> (cherry picked from commit 4660a230d527a9cffda41999103aba6ff5c2ecd5) Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* QWindow: avoid extra window resize on changing min/max sizesVladimir Belyavsky2023-09-121-1/+4
| | | | | | | | | | | | | | | Amends e7477e8934ab38722f5589914d08b3f15e870109. Do not call QWindow::resize() on changing min/max sizes if bounded window size has not changed. Otherwise it may unexpectedly reset window's state on some platforms, like Windows and Linux. Fixes: QTBUG-115699 Change-Id: I217ca3fd854a1f41d6df312e3258734d1d3bce45 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> (cherry picked from commit 7efc0f6f1994a06359deb859fd73126d576df226) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 8f07015af8909fb9d211317e13e4fd8d31ae9f9a)
* QLibraryInfo: fix GCC ubsan buildMarc Mutz2023-09-121-3/+1
| | | | | | | | | | | | | | | | | | | | Same bug that plagues tst_qbytearrayview.cpp, similar fix: drop the static checks for GCC. Except that here, following code uses the variable, so it needs to exist. Fortunately, the GCC ubsan bug does not affect construction from a string literal, so we can use that. This is losing the position checking for "." in qtConfEntries, but the the original author (Thiago) informs me that was just a way to save two bytes, we don't actually need the assertions, so remove them. As a drive-by, remove the unneeded, and potentially pessimizing (forces the compiler to allocate storage for it in the binary), static keyword from the constexpr variable, which should more than make up for the extra two octets. Change-Id: I88397ac61c5cd8f53d39e957212c895239aace04 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> (cherry picked from commit de6f4053139377b63cf92f6bca4d96d488682de4) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QPolygon(F): streamline the QDebug streaming operatorGiuseppe D'Angelo2023-09-121-12/+2
| | | | | | | | | | | | | | | | | | | | | Just re-use the private functionality present elsewhere. As a drive-by fix this will also properly separate the individual points with commas, making the output readable again. Before: > QPolygonF(QPointF(0,0)QPointF(93.75,0)QPointF(93.75,62.5)QPointF(0,62.5)) After: > QPolygonF(QPointF(0,0), QPointF(93.75,0), QPointF(93.75,62.5), QPointF(0,62.5)) Change-Id: I0cf0408bfb2fe72974e4dbd5d2958c5a2aa56b5f Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> (cherry picked from commit c7486cd665e201dd48f49312681de4a776fbe558) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 170a2594f40c938f73241c7d3455fa80029b6b15)
* wasm: don't crash if app is deleteLater()edMorten Sørvig2023-09-111-0/+5
| | | | | | | | | | | | | | | | | | We check for a valid event dispatcher when waking up, but there was no check after processing queued events, and processEvents() would continue with a stale this pointer if one of the queued events happened to delete the application object. Fix this by checking if this is still a valid pointer after processing events. Fixes: QTBUG-116330 Change-Id: Ic4d91298986847e6095ce9daea51a4b974106c06 Reviewed-by: Piotr Wierciński <piotr.wiercinski@qt.io> Reviewed-by: Lorn Potter <lorn.potter@gmail.com> (cherry picked from commit fefb1e18b1b6834ea344bed273735f096c61eb90) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* wasm: send key release for touchscreen inputLorn Potter2023-09-112-5/+8
| | | | | | | | | Fixes: QTBUG-114203 Change-Id: I117ce857484520167d0c0166280dd604c139ff03 Reviewed-by: Piotr Wierciński <piotr.wiercinski@qt.io> Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> (cherry picked from commit eda0ccb36baae10784f71552408148f095d25953) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QDataStream: clarify QDataStream::operator>>(char *&s) API docsAhmad Samir2023-09-101-3/+4
| | | | | | | | | | | | | | The wording was slightly ambiguous giving readers the idea that it will scan for a \0 terminator in the data; however what actually happens is that readBytes() gets the length of the string from a quint32 in the stream right before the data, and readBytes() always adds a null-terminator. Fixes: QTBUG-3287 Change-Id: Ie22500a9c191ffd590a6b57babeb67577c24dddb Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> (cherry picked from commit 74098981bd42e6bc135c22506e5a910e37544406) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Doc: Fix documented default for QCalendarWidget maximumDate, minimumDateKai Köhne2023-09-091-4/+2
| | | | | | | | | | | | | The default minimum date and maximum date for QCalendarWidget are not the 'earliest and last dates' that QDate class can handle. Instead, minimumDate is initialized to November 25, 4714 BCE (first Julian day), and maximumDate to December 31, 9999 CE. Change-Id: Ice9289853a7e825ff2b31567efb81cdfb7d678a1 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> (cherry picked from commit 99371811594e813f26e014a3adc629746231765b) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QComboBox on macOS: guard against destruction while native popup is openVolker Hilsheimer2023-09-082-6/+22
| | | | | | | | | | | | | | | | | | | | | Since showing the native popup on macOS is blocking and processes events the QComboBox might get destroyed while the popup is open. Guard against this by using QPointer and returning early (dismissing the scope guard that would otherwise reset the menu's parent, writing to freed memory). The problem is then that the native popup remains visible, as the destructor of QComboBox calls cleanupNativeCombobox which destroys the platform menu (i.e. the QCocoaMenu instance), but that doesn't dismiss() the popup. Add a call to dismiss() to the QCocoaMenu destructor to make sure that destroying the menu closes it first. Fixes: QTBUG-116155 Change-Id: If0ac19796603667f4c8e80c302710dc4c9aded50 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> (cherry picked from commit 03d62322b239772e0440cee9ce7576147239f339) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QItemSelectionModel: fix binding loopsIvan Solovev2023-09-071-16/+17
| | | | | | | | | | | | | | | | | ... by using valueBypassingBindings() when accessing the properties from the setters. Also adjust initModel() to use the raw pointers instead of accessing the property when comparing the value and doing all connections. This change is safe, because initModel() is a private method that is only called from the constructors of the class and the setter. Task-number: QTBUG-116346 Change-Id: I6ecde571aeed74077099c6bf8f66736ba14d29f8 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit 9578485f35d7942e190c5ea8f5c187644a4e4c6b) Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* QItemSelectionModelPrivate: improve formatting of the connectionsIvan Solovev2023-09-071-24/+25
| | | | | | | | | | | | | | | The formatting of the connections in the initModel() call was confusing and made me overlook the fact that they all were directly used to initialize the connections array. Indent all the nested connections, and move the closing '}' to a separate line to make the code more readable. This commit amends 4f4a8e75ab34003a4a49b89392ae7712415ac788. Change-Id: I607e09699a3b4865cb17639ffc75f754f4400c91 Reviewed-by: Axel Spoerl <axel.spoerl@qt.io> (cherry picked from commit 76617b07cf386f46a094b811373718725b14174e) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix backing store compositor transform with VulkanLaszlo Agocs2023-09-071-3/+4
| | | | | | | | | | | | | The problem does not become apparent until a QQuickWidget or QRhiWidget using Vulkan is put into a QScrollArea and then attempted to be scrolled vertically. Fixes: QTBUG-116338 Change-Id: I55367b51aaf2bb8d039bf5e313a0d8c3d7908327 Reviewed-by: Andy Nichols <andy.nichols@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> (cherry picked from commit 750d00aba7e49b6093bc273924ba688cb433b505) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QNetworkReply: fix potential nullptr access in loadFromCacheIfAllowed()Vladimir Belyavsky2023-09-061-1/+2
| | | | | | | | | | | | | | | | Fix a potential nullptr access in QNetworkReplyHttpImplPrivate::loadFromCacheIfAllowed() on accessing to QAbstractNetworkCache::data(). It is not yet clear in what cases cached data can be null, especially if metaData is present, but we have user reports of such crashes. Amends a6776de0c70d23ac197682c7bef603450cb8b03f Fixes: QTBUG-116788 Change-Id: I548065c6f809d9d45db6dd785c28acbdc77621e2 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> (cherry picked from commit 74fb2519e32760dbe9f10a9ffd2b460d827062a5) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Add support for setting the initial directory in portal file dialogDavid Redondo2023-09-061-13/+12
| | | | | | | Change-Id: I2bceddb470e7870f19fc616e3dbae73cc057cb66 Reviewed-by: David Edmundson <davidedmundson@kde.org> (cherry picked from commit 42fd8a8e8a758e7e4ddaae9943402b2e3bae25fe) Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* QAbstractAnimation::setCurrentTime() - fix bindable property usageIvan Solovev2023-09-061-14/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The setter is complicated, because it reads the values of four properties (loopCount, totalCurrentTime, currentLoop, and direction) and modifies the values of two properties (totalCurrentTime and currentLoop). For the read-only properties, inroduce local variables, so that the binding evaluation is done only once, and re-use the local variables afterwards. For the read-write properties, use {set}ValueBypassingBindings() methods, because we are anyway explicitly calling notify() afterwards. Intorduce a newCurrentLoop local variable to calculate the new value of currentLoop, and update the actual property only once. Use the newCurrentLoop and msecs variables instead of accessing the actual properties when determining if we need to notify about property changes. The other complexity is that the setter calls a virtual updateCurrentTime() method in the middle of the calculation. Subclasses can override the default implementation and modify the properties there (at least QSequentialAnimationGroup updates totalCurrentTime property under certain conditions). Keep it in mind and re-read the property values after the call to the virtual method. As a drive-by, make some pre-existing variables const. Task-number: QTBUG-116346 Change-Id: I0a48bcabde15333e80ea2d54e308cb9438b310e7 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> (cherry picked from commit bfc2d69c613d9431f00ac303aed3076e0d1d4dae) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* wasm: expose windows before delivering updatesMorten Sørvig2023-09-061-4/+9
| | | | | | | | | | | | | | | | | | | | | | | Don't show a blank frame on app startup. The wasm update request system supports two types of update requests: Expose and UpdateRequest. It can happen that both types of request are made for a single window, in which case the current code prefers UpdateRequest, since those must be delivered in order to keep QWindow in a consistent state. However, if the window is visible but not yet exposed then delivering the update request will not make the window paint anything, and we end up with a blank frame. Ideally this should be handled elsewhere and QWindow::requestUpdate() should not be called for non-exposed windows, but in the case does happen then sending an expose here allows us to recover. Change-Id: Ib53050c33ad1769ea9b9ad678896af15f87a7ecb (cherry picked from commit 4c18ebbc1c0bddca4b19a585d2d3a5dafdefc4a3) Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* rhi: Make it safe to always call deleteLater on a resourceLaszlo Agocs2023-09-066-38/+136
| | | | | | | | | | | | | | | | | | | | ...even when the QRhi is already gone. This should not happen in well-written applications and libraries, but we handle this gracefully in the regular dtor and destroy() for resources that register themselves to their creator QRhi, so by registering everything we can offer this to all QRhiResource subclasses. We still want to differentiate between native resource owning QRhiResources and others (that do not create native graphics objects), so do this via a flag passed to registerResource(). This way the behavior with QT_RHI_LEAK_CHECK=1 does not change. Fixes: QTBUG-112914 Change-Id: I9bafc81ef7a4ae76f356fc5f6248628d1f8791e0 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Christian Strømme <christian.stromme@qt.io> (cherry picked from commit 62a4ca773a9e8a2f0c993c159c045f2794078aad) Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Dialogs: clean up native dialogs when object gets destroyedVolker Hilsheimer2023-09-065-37/+76
| | | | | | | | | | | | | | | | | | | | | | | | | | | QWidget::setVisible is virtual, and called via hide() by both the QDialog and the QWidget destructor. A dialog that becomes invisible when getting destroyed will at most execute the QDialog override. Subclassing QDialog and overriding setVisible() to update the state of the native platform dialog will not work, unless we explicitly call hide() in the respective subclass's destructor. Since e0bb9e81ab1a9d71f2893844ea82, QDialogPrivate::setVisible is also virtual, and gets called by QDialog::setVisible. So the clean solution is to move the implementation of the native dialog status update into an override of QDialogPrivate::setVisible. Add test that verifies that the transient parent of the dialog becomes inactive when the (native) dialog shows (and skip if that fails), and then becomes active again when the (native) dialog is closed through the destructor of the Q*Dialog class. The test of QFileDialog has to be skipped on Android for the same reason as the widgetlessNativeDialog. Fixes: QTBUG-116277 Change-Id: Ie3f93980d8653b8d933bf70aac3ef90de606f0ef Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> (cherry picked from commit 505ed52cd4dcef081d9868424057451bd1dce497) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QFontComboBox: inform accessibility about model reset when filter changesVolker Hilsheimer2023-09-061-0/+8
| | | | | | | | | | | | Signals are blocked explicitly, so the modelReset signal that would normally make the view update the accessibility framework does not work. Update accessibility explicitly. Fixes: QTBUG-114423 Change-Id: Iba6f0b9dfb258e85111326184d7899bf0570a5c1 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> (cherry picked from commit a0b7eee6c6af8d233e3bb7bd5c39f9059ec994f0) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Doc: remove erroneous statement that signals can't have return typesThiago Macieira2023-09-061-2/+1
| | | | | | | | | | They can (it's just very, very unusual). Fixes: QTBUG-116695 Change-Id: I2b24e1d3cad44897906efffd178178f1542e67f2 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> (cherry picked from commit 40e9e42bc6ea81bd22c187ba6d08954ab3e0a245) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Clean up inline keyword use in qstring.hMarc Mutz2023-09-061-112/+112
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If an inline member function is defined outside of its class' body, its declaration must have the inline keyword. Otherwise, in certain situations, MinGW complains like this: qstring.h:1118:13: error: 'void QString::clear()' redeclared without dllimport attribute after being referenced with dll linkage [-Werror] Fix all instances in qstring.h by - adding the inline keyword where it was missing on the definition (except constexpr functions, which are implicitly inline) - removing the inline keyword from all out-of-class-body definitions While the latter isn't necessary for fixing the MinGW warning-turned-error, the churn is warranted: It's enlisting all platforms' help in checking for inline consistency (by causing "multiple-definition errors" at link time or "inline function never defined" at compile time when we get it wrong). If we kept the inline keyword on the definitions, only MinGW would continue to warn, and only in some, as of yet not fully understood, situations, so we'd have no control over when these warnings pop up in user code. Change-Id: I0ae78f1d8f1fa4eaec0b162ea16013669370eead Reviewed-by: Anton Kudryavtsev <antkudr@mail.ru> Reviewed-by: Ahmad Samir <a.samirh78@gmail.com> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Dennis Oberst <dennis.oberst@qt.io> Reviewed-by: Ivan Solovev <ivan.solovev@qt.io> (cherry picked from commit 1c1d7ab486b87489163c56b05d10ff907e1d821d) Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* QSortFilterProxyModel: fix binding loopsIvan Solovev2023-09-061-7/+8
| | | | | | | | | | | ... by using valueBypassingBindings() when accessing the properties from the setters. Task-number: QTBUG-116346 Change-Id: Ibbad552fa1e611f4bb704b4e47667df5f328f152 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit 2ef65f895be6cf7b448e739301a19a3c82458f7b) Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* QTimer: extend property tests and fix binding loopIvan Solovev2023-09-061-2/+3
| | | | | | | | | | | | | | | The bindable property tests were not using the QTestPrivate helpers, so add a new test which uses them. The new tests revealed a binding loop for the interval property. Fix it in a usual way by explicitly removing the binding and using {set}ValueBypassingBindings() in the setter. Task-number: QTBUG-116346 Change-Id: If94f57938da449a68e3527aead5ebd55ba410adb Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Alexey Edelev <alexey.edelev@qt.io> (cherry picked from commit 7d70edd31cb4c55471ad96e3a1d7114e2c081cf6)
* Mark linux_perf_event with GPL-2.0-onlyKai Köhne2023-09-062-2/+2
| | | | | | | | | | | "GPL-2.0" as a SPDX identifier is deprecated in SPDX 3. Use the more explicit GPL-2.0-only instead. Change-Id: Ie543135ad1d73205f7a94db140189f5132098ea2 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> (cherry picked from commit 8550d60acaead1f5a148f8e8e8384798dc6cd071) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Mark freetype as GPL-2.0-onlyKai Köhne2023-09-062-2/+2
| | | | | | | | | | | GPL-2.0 SPDX identifier is deprecated. Use the more explicit GPL-2.0-only instead. Also, in SPDX expressions AND and OR need to be all uppercase. Change-Id: I0875cf3b9b2020f69e3318d5ff314988a3992409 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> (cherry picked from commit 0b3b1ab26c126701c8ac317d94d80858f0bb2ec7) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QTimer: fix regression on singleShot-invoking non-mormalized SLOT()sThiago Macieira2023-09-061-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The was introduced with the rewrite of QMetaObject::invokeMethod() in commit 0f76e55bc440a70f5d9530a192c9ce6334a8f06, because we have an optimization for zero timers to avoid creating a temporary QSingleShotTimer object. The old implementation did attempt to normalize the target slot name, but did so because it looked metamethods up using QMetaObject::indexOfMethod: int idx = meta->indexOfMethod(sig.constData()); if (idx < 0) { QByteArray norm = QMetaObject::normalizedSignature(sig.constData()); idx = meta->indexOfMethod(norm.constData()); } The new implementation does not use this method so it didn't need to attempt to normalize. I am fixing this only in QTimer and not in QMetaObject::invokeMethodImpl (even though it is trivial to do so) because I don't believe spaces in a pure string to invokeMethod were ever expected to work: QMetaObject::invokeMethod(obj, "slotName ", Qt::QueuedConnection); The Q_ARG and Q_RETURN_ARG (for code not recompiled) still does normalization inside QMetaType::fromName(). Resolve conflicts and adapt to lack of std::chrono support in Qt 6.5. Fixes: QTBUG-116060 Change-Id: I964c2b1e6b834feb9710fffd177cac60c83ef413 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> (cherry picked from commit 4368179c37cae05d16109e319fc1c77490754c7d)
* QVariantAnimation: fix binding loopsIvan Solovev2023-09-061-8/+8
| | | | | | | | | | | | | | | | Rewrite the logic of the setters to use removeBindingUnlessInWrapper() and {set}ValueBypassingBindings() calls. The logic of both setters didn't change, because previously the pre-existing bindings were implicitly removed when calling the assignment operator. The new code just makes it explicit. Task-number: QTBUG-116346 Change-Id: I475e6cd65fc73796176f257835cb67b9e70a1e34 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit df9651c3fcdd026255add31744b2f75dc2ecdd62) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QAbstractProxyModel: fix binding loopsIvan Solovev2023-09-061-5/+6
| | | | | | | | | | | | | | | | | ... by using valueBypassingBindings() when accessing the properties from the setters. This commit is mostly trivial. Had to change the template parameters in the unit-test, because the updated QTestPrivate::testReadWritePropertyBasics() creates an instance of the TestedClass, and QAbstractProxyModel cannot be instantiated, since it has pure virtual methods. Task-number: QTBUG-116346 Change-Id: I0cae29263ea9bb92c9de06891b0ba8633fb9fd72 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit 6a873778b976b4752e874a2d87ea84e5d9e0d3c5) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QTimeLine: fix binding loopsIvan Solovev2023-09-061-20/+22
| | | | | | | | | | | | | | | | | | | | ... by using valueBypassingBindings() when accessing the properties from the setters. The most complicated case here is the currentTime property, because its setter was calling the public currentValue() and currentFrame() methods. Both methods are reading the same currentTime property. Fix it by replacing the calls to these methods with the calls to valueForTime() and frameForTime(). Both take an int parameter, so the updated code can use valueBypassingBindings() to pass the current time to these calls. Task-number: QTBUG-116346 Change-Id: I5c3a05f3e21e4c9e53ed98c9f8d1dce76e40a00d Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit 47d2788e0b99870cbd21044ac1e42d0c2cabb1f0) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QDBusServiceWatcher: fix binding loopsIvan Solovev2023-09-061-35/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | This class has two bindable properties - watchedServices and watchMode. What makes this class non-trivial is the fact that these properties depend on each other - setWatchedServices() need an up-to-date watchMode to set up the services, and setWatchMode() needs an up-to-date list of services in order to update the mode on them. Update the setters in such way that they remove the bindings from the updated property, and at the same time trigger the re-evaluation of the property they depend on. This includes refactoring of the helper setConnection() method in such way that it does not cause property re-evaluation, and also update of the {add,remove}Service() helper functions to take the watchMode as an input parameter. The public {add,remove}WatchedService() methods were updated similarly. The logic of the removeWatchedService() method was additionally updated to do some changes to the properties only if the service-to-be-removed actually existed in the list. Task-number: QTBUG-116346 Change-Id: If46cf926c7ace9dc4893d8daaef088f61e41c21a Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit d85663ced8762b3096dbcbcfbc3894895a6e11c7) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QPauseAnimation: extend tests and fix binding loopIvan Solovev2023-09-061-4/+3
| | | | | | | | | | | | | | | | Extend the unit-tests for bindable properties and fix the discovered binding loop by using {set}ValueBypassingBindings() in the setter of the duration property. The code refactoring does not modify the setter logic, because previously the binding was anyway implicitly removed when calling the assignment operator. The updated code just does it explicitly. Task-number: QTBUG-116346 Change-Id: I0f339d182efb60500ee7f12e407f200d739da312 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit b64e36240b807e6dba783732593036439fec8a62) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>