summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* SQLite: Update SQLite to v3.37.2v6.2.46.2.4Andy Shaw2022-03-023-43/+87
| | | | | | | | | | Fixes: QTBUG-100907 Change-Id: I6e31b2ba19443ed6554a343423dcfd2ca6d0ac2f Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> (cherry picked from commit baa2d09d0d085843600282b19ec6f2362d4c8a79) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 68e80fdfef61e0458cd52361726b7e6a0f2e2495) Reviewed-by: Andy Shaw <andy.shaw@qt.io>
* Make QGuiApplicationPrivate::lastCursorPosition.toPoint() safe to useShawn Rutledge2022-02-233-4/+26
| | | | | | | | | | | | | | | | | | | | QGuiApplicationPrivate::lastCursorPosition is initialized with qInf(); so before Qt has seen a mouse move event, attempting to convert to QPoint is an error. It's best to have one place where we do the qIsInf() check rather than several (and otherwise prefer using the QPointF as-is rather than converting to QPoint at all). Introduce a helper class that contains a QPointF, and provides a safe conversion to QPoint, as well as simple accessors for clients using QPointF. Fixes: QTBUG-52472 Task-number: QTBUG-45045 Change-Id: I83fad1bfb658e03fa876344552f1d5bb751d9f81 Reviewed-by: Marc Mutz <marc.mutz@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit c5792dcfd631abb4f9e2b92cd6e88d7e5c373406) Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Always include qt_windows header firstVolker Hilsheimer2022-02-234-3/+4
| | | | | | | | | | | qt_windows takes care of setting NOMINMAX, which prevents native headers from defining `min` and `max` as macros, breaking the build. So include that header always as the first header. Change-Id: I82cd8b21d263102000e6e66f135465bc2c126db4 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> (cherry picked from commit 29a7489769bca59630782061789561fb07d77892) Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* configure: Remove declaration of the MYSQL_PATH variableJoerg Bornemann2022-02-221-1/+0
| | | | | | | | | | | This variable was used in Qt5 to specify the install location of the MySQL library. In Qt6, MYSQL_INCLUDE_DIRS and MySQL_LIBRARIES serve this purpose, and MYSQL_PATH is unused. Change-Id: I2df12b79777af50c719a5b6bc5feadc2c59c0c3d Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit eb6fc1cab9ebd5233f99610659afb9be6cfb465a) Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* configure: Remove declaration of the OPENSSL_PATH variableJoerg Bornemann2022-02-222-4/+1
| | | | | | | | | | | This variable was used in Qt5 to specify the install location of the OpenSSL library. In Qt6, OPENSSL_ROOT_DIR serves this purpose, and OPENSSL_PATH is unused. Change-Id: I40cc412bb35666dac3dd134ca8bfb67f3d524f80 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit ce34ed6eabba45546dc40ce0b22b872a69cacd87) Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* CMake: remove obsolete #FIXMEThiago Macieira2022-02-211-1/+1
| | | | | | | | | Also confused Qt Creator. Change-Id: Ic15405335d804bdea761fffd16d4f209df4311a8 Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io> (cherry picked from commit e5373a043d6fb04e8e0298fdf6a12b5429c2d89a) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix QMetaType::typeName returning wrong result for clang-clAlexander Neumann2022-02-201-2/+4
| | | | | | | Change-Id: I94fa1d56d98b8caae514b37fbf6432985195d827 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> (cherry picked from commit d49f5752a560d7c8fec99c57bbfb192a9be1b296) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Document change to style sheet selectors for enum propertiesVolker Hilsheimer2022-02-201-0/+21
| | | | | | | | | | | | | | | The change is presumably an unintentional side effect of QVariant and QMetaType system changes in Qt 6, but it arguably is a good change. Document it in the porting guide, while evaluating whether (and figure out how) we want to support integer values as well. Task-number: QTBUG-99642 Change-Id: Id1589c594bcdc2afe5c4fd0e47a158cd5e03e52f Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io> Reviewed-by: Axel Spoerl <axel.spoerl@qt.io> (cherry picked from commit 2d935dc7f9d80f0a7b83111695a23b3b5bb99a31) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Revert "Correct haswell function target for clang"Allan Sandfeld Jensen2022-02-191-5/+1
| | | | | | | | | | | This reverts commit 1cc0494f7dbb0731533c7d691685bb50d3e1dd1a. Reason for revert: Not a fix, but a break Change-Id: Ie41d8870dbd52f87059f6bad2335e272409c3046 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> (cherry picked from commit 6944b4df7bac464eaee8e03ea724db25303fdbc1) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QDesktopServices: make QOpenUrlHandlerRegistry a non-QObjectMarc Mutz2022-02-181-7/+5
| | | | | | | | | | | | | | | | | | | It seems to have been a QObject solely for its single slot. But since Qt 5, slots need no longer be defined on QObjects, so we can remove the inheritance from QObject now. We still need a QObject as the context object in connect(), but that can be just be an aggregated naked QObject. Saves 26 relocations, ~1.5KiB in TEXT and ~0.3KiB in DATA on optimized GCC 11.2 Linux AMD64 C++20 builds. Change-Id: Ic45a8e892ec2bd5de5de8fbd32ec7a167c501803 Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> (cherry picked from commit 0e60e4bf199b38594defcc80de276e460273b7fe) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Ensure QMainWindow has WA_TranslucentBackground when using unified toolbarTor Arne Vestbø2022-02-181-1/+8
| | | | | | | | | | | | | Otherwise the QWindow will not end up with a surface format with an alpha. This issue had been hiding in the shadows because we hard-code the backing store image format to include an alpha, but was discovered when trying to use RHI to flush the backing store, which does respect the window format. Change-Id: Ie2b28ca605fc7aa1b1ed22885c8f56e76d3a0305 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> (cherry picked from commit 1741034090fa462c2a7ed07490162dcacfd883b0) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Windows: use QSystemLibrary instead of LoadLibrary directlyAndy Shaw2022-02-182-7/+14
| | | | | | | | | | | | | Using QSystemLibrary ensures that it will only use the expected copy of the system library and not one that has been placed in the application's working directory or elsewhere in the PATH environment variable. Change-Id: Ic4234334f73482b38ee5f06345bf11f8c029edc5 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> (cherry picked from commit a14f2d59141e05d4c8e116895e918638b920611d) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* typeNameForCast: use add_pointer instead of string manipulationFabian Kosmale2022-02-181-1/+1
| | | | | | | | | | | | | | | Relying on string manipulation leads to -Wredundant-parens warnings in the best case, and to non-compiling code (when using typedefs) in the worst case. We can avoid both issues by simply generating code that uses add_pointer, which takes care of reference types (even typedef'd ones), and creates no warnings about parens (as we don't write any anymore). Fixes: QTBUG-100915 Change-Id: Ic5b1cbfda20d920d11f51beeb62e9479261d5f00 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit 8079361852417f57b5db8e47994870c4c8d63e3f) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QNX: Silence compiler warning by initializing variablePasi Petäjäjärvi2022-02-181-1/+1
| | | | | | | | | | | | | qtbase/src/corelib/global/qlogging.cpp: In function 'void qDefaultMessageHandler(QtMsgType, const QMessageLogContext&, const QString&)': qtbase/src/corelib/global/qlogging.cpp:1555:11: warning: 'severity' may be used uninitialized in this function [-Wmaybe-uninitialized] slog2c(NULL, QT_LOG_CODE, severity, formattedMessage.toLocal8Bit().constData()); qtbase/src/corelib/global/qlogging.cpp:1535:9: note: 'severity' was declared here int severity; Change-Id: Ic0d41a024056528cac51a88086ac7e492c94bb4a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> (cherry picked from commit f1d521f0765c6bb928f3fe39f952366f956fa241) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Update public suffix listIevgenii Meshcheriakov2022-02-182-14451/+14277
| | | | | | | | Fixes: QTBUG-100990 Change-Id: Icfcc7882be35b85bfd8828c6950e2cf23f7ede65 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> (cherry picked from commit 1e468432f624642db4ca3997140431640499025d) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix UI mismatch when QPrinter::setDuplexZhang Hao2022-02-183-6/+13
| | | | | | | | | | | | | | | | | | | Amends fa854f214a3c812e5548ff55d179dd07ef99053b. If user call QPrinter::setDuplex method, the QPrintDialog explicitDuplexMode value won't update. Fix this by: 1) handle device-specific default and value set in QPrinter in QCupsPrintEngine(Private) 2) handle the explicitly user-selected value in QPrintDialog(Private) Done-with: Michael Weghorn <m.weghorn@posteo.de> Fixes: QTBUG-99504 Change-Id: I1a471a8554e83aa4bec8bb95fcc95f9135b0ac8c Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Reviewed-by: Lars Knoll <lars.knoll@qt.io> (cherry picked from commit 72931f492092a67c39cd7fb124d54e8752ee4933) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Sync QPrinter orientation when PageSetup Orientation selectedZhang Hao2022-02-181-0/+1
| | | | | | | | | | | | | QPrinter orientation will not effect when PageSetup Orientation selected Fix this by sync PageSetup orientation property to QPrinter. Fixes: QTBUG-100261 Change-Id: I264852ea18317308dfcfb58c880f5e8ad8d299bd Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Reviewed-by: Lars Knoll <lars.knoll@qt.io> (cherry picked from commit 715ed74c89a7e6c64aa85e36682699d41c195a33) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Avoid file-static initialization of symbols that need @availability checkTor Arne Vestbø2022-02-171-26/+27
| | | | | | | | | | | Fixes crash in key mapper on iOS < 13.4, where the symbols are not available. Fixes: QTBUG-100518 Change-Id: I9bb1a75b17e5f0f50205b757fdb673218d7fb5e0 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> (cherry picked from commit 242e35e774f07a8a3b561acc658cdfeba4c20752) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* doc: Update GenericDataLocation location on iOSTor Arne Vestbø2022-02-171-1/+1
| | | | | | | | | | Now matches implementation. Fixes: QTBUG-100364 Change-Id: I1274b8b485f1a02a79b7abebc2289613958f9a76 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> (cherry picked from commit 13fa00519d684ddc1779845cebbd6cec552f8f1c) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* macOS: Don't print stack trace via lldb on test failure if SIP prevents itTor Arne Vestbø2022-02-173-1/+42
| | | | | | | | | | | | | | | | If the CSR_ALLOW_UNRESTRICTED_FS bit of System Integrity Protection (SIP) is enabled lldb will fail to print a valid stack trace when launched from the crashed process, and might also resulting in hanging or crashing the parent process (Terminal e.g.): https://github.com/llvm/llvm-project/issues/53254 We detect this situation and avoid printing a stack trace if so. Change-Id: Iad8cab5fcdc545d810ca4d4e985aefc0988d0234 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> (cherry picked from commit 985f0e9ca5905af7791f39fddd005f0c9f8fe081) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Add missing dependency to the qvkgen tool when generating vulkan codeAlexey Edelev2022-02-161-2/+6
| | | | | | | | Fixes: QTBUG-100574 Change-Id: Ib68a3d77e5d3c9a9fc541a69a2748b94ade3ceef Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit fedd4f26ad9afb0f848ad12cf621e5a7a6208742) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Correct haswell function target for clangAllan Sandfeld Jensen2022-02-161-1/+5
| | | | | | | | | | | Clang uses arch names directly, and not the "arch=xxx" format of GCC. Appears we do not use this target though. Change-Id: I1d295f25fe2278c5c6bc0f617496555e28427bea Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> (cherry picked from commit 1cc0494f7dbb0731533c7d691685bb50d3e1dd1a) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Make Droid Sans Mono available as fixed font for all Android stylesAndreas Buhr2022-02-161-0/+5
| | | | | | | | Fixes: QTBUG-87405 Change-Id: I54ebc06c82c32acd0383ea5fedf78acce4e11977 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io> (cherry picked from commit d4561029621a5891f05281560178063104b8f4a2)
* QHash: fix off-by-one in assertionsMårten Nordheim2022-02-161-6/+6
| | | | | | | | | | | | | Coverity-Id: 378365 Coverity-Id: 378366 Coverity-Id: 378399 Coverity-Id: 378427 Coverity-Id: 378468 Coverity-Id: 378472 Change-Id: Ib1efeacb59030b9d004320e56f560367f564d207 Reviewed-by: Marc Mutz <marc.mutz@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> (cherry picked from commit a1fb3971f222afa01583e41f4d8f0e037d2c7892)
* QStringConverter: Add missing include on WindowsMårten Nordheim2022-02-161-0/+3
| | | | | | | | | | It's relied on implicitly, which is no longer valid in dev. And may accidentally be broken in other branches. Change-Id: I2272b6914e883e20d0989a1762eb1a5c1aef4e0e Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 24249c0b67a159890077be28470e4b68fa6170fc) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QNetConMonitor/Win: Drop all warnings down to debugMårten Nordheim2022-02-161-19/+19
| | | | | | | | | | | | | The things they warn about are not of any serious consequence to users or end-users and there's nothing they can do about it. Adding to that, in Qt 6 it has a reduced role since QNAM::networkAccessible was removed. Fixes: QTBUG-100482 Change-Id: I178d056c513b5dbb122d5c731af602d3dc117d8e Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> (cherry picked from commit a6f4a1b282924d4d5fcbf443498b990fbe1853a8) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Remove obsolete virtual method after submodules adjustedVolker Hilsheimer2022-02-161-4/+1
| | | | | | | | | | | Amends cb27ed30f7bc58474eba991f837843eb76cbd339 after follow-up change 43fb6953fb940edfec358a2d1c01e05705712829 in Qt Svg. Task-number: QTBUG-99642 Change-Id: Ice190dc9d1bdcb08d74c86edf0028cf50266d94e Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit c83ab25674ea5558e06b62526f0443831f593349) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Eliminate double arrow in QToolButtonAxel Spoerl2022-02-161-4/+12
| | | | | | | | | | | - InstantPopup mode is set and - application uses a stylesheet that does not apply to QToolButton Task-number: QTBUG-100401 Change-Id: Iadf752ad9280d59763f4efc1938927a9b83e6ad9 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> (cherry picked from commit ea0e0a865237983b484ed88447b9fc4c473e2759) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QMetaObjectBuilder: fix addProperty() recording of the property typeThiago Macieira2022-02-161-1/+1
| | | | | | | | | | | | | Issue introduced by commit 465701bb98f3c3454d15c22b8e38ab4ad8821dfc. [ChangeLog][QtCore][QMetaObjectBuilder] Fixed a bug that would cause addProperty() to use the incorrect type for the property if the property's name matched a valid type registered with QMetaType. Change-Id: Ic15405335d804bdea761fffd16d402f2c9611f30 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 8de049389610037595e3b24ed660d4855aa460ce) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Android A11Y: Announce value together with element name when focusedIvan Solovev2022-02-161-3/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before this patch when we focus a new element, only its description was announced. For elements like Slider that means that if it had no accessible name or description, its value would be announced (all is fine here). But if the slider is defined like that: Slider { Accessible.name: "int slider" value: 5 from: 0 to: 20 stepSize: 1 } only the name ("int slider") will be announced, but not the actual value. This patch fixes the logic of content description generation. If the element has value, then it is added to the description and announced as well. Task-number: QTBUG-93396 Change-Id: Ia8667149ebd867945c5f57d951fd6ade0f382598 Reviewed-by: Rami Potinkara <rami.potinkara@qt.io> Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io> (cherry picked from commit a374d59abc415eee1866322176b7762158f48abd) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Android A11Y: Fix value roundingIvan Solovev2022-02-161-2/+44
| | | | | | | | | | | | | | | | | | | | | | | | QAccessibleInterface stores values as QVariants. When dealing with double values, as a result of some calculation (for example, Slider value update), rounding errors can be introduced. When converting double values to QString using QVariant::toString(), these rounding errors result in strings like 0.30000000000000004 instead of 0.3 or 2.7755575615628914e-17 instead of 0.3 - 3 * 0.1 and similar zeroes. To fix this issue, this patch introduces a custom conversion for floating-point values. The idea is to convert QVariant to double, and then convert double to QString using 'f' format and a suitable precision, determined from the UI element's minimumStepSize(), if it has one, otherwise falling back to QString::number()'s default (which is 6). Task-number: QTBUG-93396 Change-Id: Ia5ca7345812e39629e9c191b6d8b896a8f51de80 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io> (cherry picked from commit 60799fc14134472913af4b3ab87b6160bd46056d) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Android A11Y: handle valueChanged eventsIvan Solovev2022-02-1610-3/+100
| | | | | | | | | | | | | | | | | | | | | | Before this patch Android A11Y implementation was missing ValueChanged event handling. As a result, no update was given when the element's value was changed. Handling these events allows us to announce value changes on such objects like Slider, SpinBox, etc... This is a universal method of value-change announcement, so it supports all sorts of A11Y gestures. On the Java side a new function was introduced to announce the values, because we need to use the actual element's *value*, not its accessible name or description. Task-number: QTBUG-93396 Change-Id: Ic44abd5f01b9b6f5468962131466edaf6a49d498 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io> Reviewed-by: Rami Potinkara <rami.potinkara@qt.io> (cherry picked from commit b238f83380dcaa2830999a8f413f4b648db80beb) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* CMake: Add default launch screen storyboard for iOS appsAlexandru Croitor2022-02-161-0/+82
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bundle a default LaunchScreen.storyboard file for an iOS app and make sure it's referenced in the generated Info.plist file. When launching Qt examples, it ensures the app uses the whole screen space on the device rather than just a square-ish part of it. The storyboard file is a copy of the qmake one, which qmake adds to the Xcode projects it generates. A custom launch screen can be provided either by setting the QT_IOS_LAUNCH_SCREEN variable or by setting the QT_IOS_LAUNCH_SCREEN target property. The value must be an absolute path to the launch screen file. The automatic addition of the launch screen entry in the Info.plist file can be prevented by setting the QT_NO_SET_IOS_LAUNCH_SCREEN variable to TRUE. The automatic bundling of the launch screen file in the application bundle can be prevented by setting the QT_NO_ADD_IOS_LAUNCH_SCREEN_TO_BUNDLE variable to TRUE. The current implementation has a limitation that only one launch screen storyboard and one iOS executable can exist within a project. If there are multiple executables in the project, all of them will use the launch screen that is specified last (the last qt_add_executable call). Because of this limitation, the API is marked as Technical Preview, to be improved upon in the future. For now it simply serves as an improvement to the out-of-the-box experience of iOS apps built with CMake. Amends 4d838dae5a821e9e5f013ba1d5a494ece1b5180e Fixes: QTBUG-95837 Change-Id: I6b067d703d635122959a1ef17fcca713da694a86 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> (cherry picked from commit e5b3436255ce095af58608b03b913fc9bcb8e61f) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QColor: eradicate QT_STRINGVIEW_LEVELMarc Mutz2022-02-162-12/+0
| | | | | | | | | | It's not used and not useful. Task-number: QTBUG-100861 Change-Id: I30f7f41311182f056f2f6d5a9b49385fb09d194e Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> (cherry picked from commit a24ef92468b5d482733b8258265474ca98646a1f) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* CMake: Document source file propertiesAlexandru Croitor2022-02-152-0/+89
| | | | | | | | | Task-number: QTBUG-100224 Change-Id: Id4d0e0d84762d9eee2beb10e850d1775ad4f3245 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io> (cherry picked from commit 1559cd8ff23b46a1e708f5d0093100acb9877028) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QDesktopServices: deprecate destroying URL handlers w/o explicit ↵Marc Mutz2022-02-151-0/+18
| | | | | | | | | | | | | | | | | | | | unsetUrlHandler() [ChangeLog][QtGui][QDesktopServices] URL handlers that have been passed to setUrlHandler() must now be removed by calling unsetUrlHandler() before they are destroyed. Relying on the handler's destructor to implicitly unset it is now deprecated, because it may already be in use by concurrent openUrl() calls. Support for implicit unsetting will be removed in 6.6 and, until then, a qWarning() is raised if it is exercised. Fixes: QTBUG-100775 Fixes: QTBUG-100779 Change-Id: I0c4f91b78f847b135fdeb38766babc892bdc1379 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io> (cherry picked from commit 37a25fce94976ab2a0f94abe43f1ed6ad950672f) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix integer overflow for broken QPainterPathsEskil Abrahamsen Blomfeldt2022-02-151-1/+1
| | | | | | | | | | | | | | With some bogus input, we can end up with NaN in the bounding rects of the control points. This in turn causes problems later when it is converted to ints and used in code. To avoid it, we exit early if the rect is invalid (negative or NaN size). Fixes: QTBUG-100217 Change-Id: Idbc6700b85cb30198d69fedbf8f3be3e1ab65e40 Reviewed-by: Lars Knoll <lars.knoll@qt.io> (cherry picked from commit d6c4a3edf9adb02b6f96d43768db9f90a6623de7) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Update docs for QSurface::MetalSurface to include iOSTor Arne Vestbø2022-02-151-3/+3
| | | | | | | Change-Id: I67fc47b3dc33960e7dfa78890d16d1e7450e30ab Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> (cherry picked from commit f71d54ee34931b5b3d2336954a76138c086aa94e) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* De-duplicate vtables, 2022 editionMarc Mutz2022-02-1510-0/+28
| | | | | | | | | | | | | | | | | | | | This de-inlines destuctors of classes whose vtables are proven to be duplicated even within the set of Qt libraries. Since these are all private API classes, we can pick all the way back to 6.2, and we don't need the comment that the dtor must always stay empty, like for public classes. As a drive-by, also de-inline the QPaintDeviceWindowPrivate ctor. That's just code hygiene, it doesn't partake in vtable duplicating. Task-number: QTBUG-45582 Change-Id: I3477063d6f42edc9a5d352c47900366fd50c3ef6 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> (cherry picked from commit 9b6c288281fc09223067d9f51a350ae1e43aadcd) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Windows QPA: Correct mistake when calculating minmaxinfoViktor Arvidsson2022-02-151-1/+1
| | | | | | | | | | | | | | | | Amends 46e9852a1d04357c98b2c62338e1e2af0de9b486 The previous code would fail if the windows taskbars are placed to the top or left on the screen. The mistake was missed because Windows seems to adjust the window position automatically in case the window handles WM_NCCALCSIZE and returns 0, which was the case for me. Task-number: QTBUG-51327 Change-Id: I38ef974f7518be63a0bacf080f3359c219284078 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> (cherry picked from commit 7794421bea8550d16ad6209536909931709045bb) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Android A11Y: populate child elements when constructing node infoIvan Solovev2022-02-141-0/+4
| | | | | | | | | | | | | This commit partly reverts 020a6f0daec2e36866888b23c8b3a65bfb366146. It restores the code that is responsible for filling the children for individual elements. Without this code, we have only top-level element and its children in our accessibility hierarchy. Fixes: QTBUG-100545 Change-Id: I0604bbf5f1bdb0b3998a25fec7ed0a1fe554da8d Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io> (cherry picked from commit b99fdae5f520dbd10b94a2124ea950723c162efb) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QDesktopServices: fix ABA problem in QOpenUrlHandlerRegistryMarc Mutz2022-02-121-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The registry is designed to be thread-safe, as is openUrl(), and handlers are required to be thread-safe, too: "the handler will always be called from within the same thread that calls QDesktopServices::openUrl()". The handlerDestroyed() slot was invoked using AutoConnection semantics, which, if the registry and the handler happen to not be on the same thread, is QueuedConnection, which means there's a window in which the handler is destroyed, but it's still listed in the registry, and a call to openUrl() may make a call to the (deleted) handler. Worse, if a handler is deleted and new one registered they may end up on the same address (ABA, or rather, AA problem), and then the delayed call to handlerDestroyed() may remove the entries to the new handler, as well as those to the old. Fix by using Qt::DirectConnection. This fixes the ABA problem, but doesn't completely fix the partially-destroyed problem, since QObject::destroyed() is simply too late. We need to require explicit unsetUrlHandler() calls, which should happen before destruction of the handler object starts. [ChangeLog][QtGui][QDesktopServices] Fixed a bug where destroying and re-creating a handler object in quick succession could cause the registration for the handler to be lost. Fixes: QTBUG-100778 Change-Id: I76fd81724504cc7f38ac262b43e3e9539fe5ebca Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> (cherry picked from commit f482e2a456491056e7576c1b52ead08429542631) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QPkmHandler: make const what it never modifiedMarc Mutz2022-02-121-1/+1
| | | | | | | Change-Id: I0bda0d93ebe60d4923f3e9eb059cddb61192b1b5 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> (cherry picked from commit b5c4d1f50b1e2d44fbb3535ebedc565525ecc64f) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QHashSeed: remove 'pure' attribute on globalSeed()Marc Mutz2022-02-121-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While 'pure' in GCC is weaker than Stepanov's Regular Procedure from Elements of Programming (equal result for equal inputs), it does not allow accesses to volatile memory: > functions declared with the pure attribute can safely read any > non-volatile objects The globalSeed() function reads from an atomic variable that can be changed at any time from another thread. Atomics, while not volatile objects in the sense of the keyword, must fall under the pure attribute doc's exclusion criterion: The difference between a volatile and an atomic access, while important for the implementation of the function, is indistinguishable to the caller of the function: both volatile and atomic objects can change value without the current thread of execution changing them, with no way for the caller of the function to distinguish which one occurred. Therefore, globalSeed() should not be pure. 5.15 is not affected, as qGlobalQHashSeed() is not marked as pure. Task-number: QTBUG-62185 Change-Id: I6fc52e2bd41ef4aa3f8039072b47c7a1314b98fa Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> (cherry picked from commit c8e03f129ea52ddc8e15104d5441328f6c90647f) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QDesktopServices: fix UB (data race on handlers)Marc Mutz2022-02-121-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | The handlerDestroyed() function is connected to the handler QObject's destroyed() signal and removes all entries from the registry for which the destroyed object was listed as the handler. While handlerDestroyed() is always executed in the context of the thread owning QOpenUrlHandlerRegistry-as-a-QObject, the documentation explicitly states that "the handler will always be called from within the same thread that calls QDesktopServices::openUrl()", implying that calling openUrl() from a non-GUI thread is supported. The presence of the mutex also indicates that this should work. But then the unprotected access to the handlers variable in handlerDestroyed() is a data race, because nothing prevents a handler object from being destroyed concurrent to an openUrl() call. Fix by locking the mutex. Fixes: QTBUG-100777 Change-Id: I9ef857efa609b4d16ee21063ccccd316e119576b Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> (cherry picked from commit 42e13b7c61693ca95e119106d4f6dbd2bcf2308d) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QStringView: add missing constexpr so we can use is_constant_evaluatedThiago Macieira2022-02-121-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | GCC 12 -std=c++20 says: qstringview.h:155:39: error: ‘std::is_constant_evaluated’ always evaluates to false in a non-‘constexpr’ function [-Werror=tautological-compare] With this, it's possible to declare: constexpr QStringView sv = u"Hello, World!"; QStringView f() { return sv; } And GCC will generate: movl $13, %eax leaq .LC0(%rip), %rdx ret Writing simply QStringView f() { return u"Hello, World!"; } Causes GCC to emit a comparison loop (the std::char_traits::length function), but at least there's no function call in either C++17 or 20. Clang 13 is able to reduce the loop to a constant and produces the same code as the constexpr variable in either mode. Change-Id: I74249c52dc02478ba93cfffd16d282fa35a5b883 Reviewed-by: Marc Mutz <marc.mutz@qt.io> (cherry picked from commit 4fd4082c3ab682f14911e6308ec5ccb400de34f9) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix an assertion failure in massageAdjustedDateTime()Edward Welbourne2022-02-121-3/+3
| | | | | | | | | | | | | | The QDateTimeData &d it's passed is a copy that's about to be modified; before we do so, we haven't detached so its internals have a ref-count of two, contradicting an assertion in the non-const Data::operator->(); so just directly access d.d->m_timezone, since we know that spec == TimeZone implies !isShort(). Added test that triggered the assertion and now doesn't. Fixes: QTBUG-99668 Change-Id: I07321ad91be5adce524be18e4ab82eee7110dc6a Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> (cherry picked from commit 5d228beb520d92c985497fb43fa91d2920db6cb0)
* Make indicator-application hack work in flatpakIlya Fedin2022-02-121-1/+6
| | | | | | | | | | | | | | | | Flatpak doesn't share $XDG_RUNTIME_DIR with the host making QSystemTrayIcon not to work on Xubuntu/Ubuntu MATE/Ubuntu Budgie. Although, it shares a subfolder, according to https://docs.flatpak.org/en/latest/sandbox-permissions.html Amends 0baa26638d7d14b6609dab191c4ea0cc1d3ff50a Change-Id: I2d0043fc5a4c2c51e8fa1a920f3cada3b07eba6d Reviewed-by: Dmitry Shachnev <mitya57@gmail.com> Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org> (cherry picked from commit bc3723d4620718dfe8bd0165e9ef8ba45a3da262) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix tst_qmath when compiled with C++20Allan Sandfeld Jensen2022-02-121-0/+4
| | | | | | | | | | | On several platforms std::bit_ceil() returns 1 for input values that would overflow the output. Our test expects 0 though. Since the value is documented as undefined, avoid it. Change-Id: I00556893a8f0e1e24f08f73cd112b56148bc5bd0 Reviewed-by: Marc Mutz <marc.mutz@qt.io> (cherry picked from commit ace9764c995be9eb7cb42296a2885c72fb1005f3) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Windows QPA: Fix frameless maximize on secondary screensViktor Arvidsson2022-02-121-13/+11
| | | | | | | | | | | | | | | Frameless windows shouldn't cover the taskbar when maximized. This has been fixed for the main screen in the past but did not work for secondary screens. According to the code the MINMAXINFO is only available for the main screen but I believe this is a misunderstanding of the Windows documentation. Besides we use QScreen::availableGeometry() which seems to be correct. Fixes: QTBUG-51327 Change-Id: Ib2205c480359d1a870dcfcf0312fbe417f650e28 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> (cherry picked from commit 46e9852a1d04357c98b2c62338e1e2af0de9b486) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>