summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Fix invalid JSON due to missing comma after valueCraig Scott2021-09-101-1/+1
| | | | | | | | | Amends 248828b9a3562fc23ac1d39733aaf07a83584dc4 Pick-to: 6.2 6.2.0 Change-Id: I606835942e988736786aaf6881ecddc94c8a882c Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Use wayland platform plugin on GNOME wayland sessions by defaultJan Grulich2021-09-091-15/+1
| | | | | | | | | | | Qt wayland platform plugin has improved quite a lot and it is now pretty much usable on Gnome. It also improves user experience a lot on HiDPI displays. Pick-to: 6.2 Change-Id: I943e0bb969f384bdc3c603e290ce9c8358b70f63 Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* normalizeTypeFromSignature: Update for Clang 13Martin Storsjö2021-09-091-2/+1
| | | | | | | | | | | | | | Clang 13 now outputs "unnamed struct" just like GCC, while it earlier used to output "anonymous struct" (since https://reviews.llvm.org/D96807). Therefore, for Q_CC_CLANG check for both "anonymous" and "unnamed". This fixes the QMetaType testcase when built with Clang 13. Change-Id: I34de8c2ca05c0e691fbb990b001f011b0f336dc3 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Add Deepin to the list of GTK based desktop environmentsTang Haixiang2021-09-091-1/+2
| | | | | | | | | Deepin prefers the GTK3 theme implementation with native dialogs etc. Pick-to: 6.2 6.2.0 Change-Id: I54cea9d17c0d7f5e466c700adce5aa68f0cf5564 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* androiddeployqt: Add support of multiple qml root pathsAlexey Edelev2021-09-082-25/+50
| | | | | | | | | | | | | | | | | If application uses qml files from multiple locations, e.g. subdirectories inside source directory it's important to provide this information to qmlimportscanner to produce consistent set of QML modules that need to be included into the end-point application apk. This makes possible to specify more than one QT_QML_ROOT_PATH per target and propagates these paths to the qmlimportscanner using androiddeployqt tool. Pick-to: 6.2 Task-number: QTBUG-93340 Change-Id: Ic31017b3f2671108adb6d6118ef1c75f1ccc3ec5 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* macOS: Move pointingDeviceFor helper to top of fileVolker Hilsheimer2021-09-081-30/+30
| | | | | | | | | It's confusing to have it in the middle of the code implementing the various interfaces. Make review of follow up patches easier by moving it out of the way. Change-Id: I10f6e8f7642ec0cb14ae31b14a023c6a9ef455d9 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* OpenSSL: Let people opt-in to use TLS 1.3 PSK callbackMårten Nordheim2021-09-081-2/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | It's a workaround for the workaround... If TLS 1.3 was explicitly chosen and the PSK callback is set then without this patch the callback is never called since, with TLS 1.3, PSK would only be queried once at the start of a connection. It can now be re-enabled with an environment variable. A new API should be added to address the new requirements of PSK with TLS 1.3: For session resumption the connection MUST use the same hash algorithm as in the original session. For new sessions the hash algorithm must be decided ahead of time, or a default will be used (as defined by the standard). A user can also pass along multiple identity+key pairs and the server will pick one it recognizes. This is not something we can currently do with the preSharedKeyAuthenticationRequired callback. [ChangeLog][Network][QSslSocket][OpenSSL] When using TLS 1.3 we suppress the first callback from OpenSSL about pre-shared keys, as it doesn't conform to the past behavior which preSharedKeyAuthenticationRequired provided. With this update you can opt-out of that workaround by setting the QT_USE_TLS_1_3_PSK environment variable Pick-to: 6.2 6.1 5.15 Task-number: QTBUG-95670 Change-Id: Ia7454bbbf394cbcb859de333b371d0890b42a1c3 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
* Add new am/pm format-specifier that preserves locale's caseEdward Welbourne2021-09-084-79/+121
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The existing a, ap, A and AP specifiers all force the case of the formatted am/pm indicator. The indicators returned by QLocale's amText() and pmText() methods are those given in CLDR, with no case coercion. Application writers may reasonably want these strings used verbatim, rather than having to chose a case and impose it on the locale's indicators, in defiance of national custom. For example, while en_US uses upper-case indicators by default, cs_CZ uses lower-case ones. An application author writing a time format has been forced to chose which of these locales to be wrong in. Add support for aP and Ap specifiers, whose mixed case indicates that the locale's case is to be respected. Amend an existing test-case of tst_QLocale's formatDateTime() that used Ap (expecting, of course, an upper-case indicator followed by a stray p) to now expect the locale-appropriate-cased indicator. Extend formatTime() to test cases using aP and Ap, to illustrate the difference between en_US and cs_CZ. Rework QDateTimeParser to also support the new format specifier. This required expanding its Case enum, used by the getAmPmText() method, which was formerly shared with QDateTimeEditPrivate; however, as that class no longer makes any reference to this method, it and the enum can be made private, allowing a systematic clean-up of their use. Added test-cases for both serialization and parsing; and amended some existing parsing tests to verify am/pm indicators are matched case-insensitively. [ChangeLog][QtCore][Important Behavior Changes] Time formats used by QLocale, QTime and QDateTime's parsing and serialization now recognize 'aP' and 'Ap' format specifiers to obtain an AM/PM indicator, using the locale-appropriate case for the indicator, where previously the author of a time format had to pick a case that might conflict with the user's locale. For QTime and QDateTime the locale is always C, whose indicators are uppercase. For QLocale, the case will now match that of amText() or pmText(). Previously, 'aP' would have been read as a lower-case indicator followed by a 'P' and 'Ap' as an upper-case indicator followed by a 'p'. The 'P' or 'p' will now be treated as part of the format specifier: if the prior behavior is desired, either use 'APp' or 'apP' as format specifier or quote the 'p' or 'P' in the format. The prior 'a', 'ap', 'A' and 'AP' specifiers are otherwise unaffected. Fixes: QTBUG-95790 Change-Id: I26603f70f068e132b5c6aa63214ac8c1774ec913 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
* QWindowsPipeWriter: stop reporting errors from write()Alex Trotsenko2021-09-082-15/+12
| | | | | | | | | | | | | | | To match the Unix behavior, callers of the write() function (i. e. QProcess::writeData() or QLocalSocket::writeData()) should return -1 only if the pipe is already closed. All data being written must be buffered and no state transition is allowed in response to this call. Considering the fact that all callers ignore the return value of the write() function, there is no point in returning anything other than void. Change-Id: I52480fc453e076920209bb8e3d52813279393d70 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* wasm: add DialogExec hack/warning to event dispatcherMorten Johan Sørvig2021-09-082-0/+19
| | | | | | | | Show the warning (and call emscripten_sleep) for the standard build, but not for the asyncify build. Change-Id: I695a580ea60897872beee6fa2b6ae70acb9e7dcf Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* High-dpi configuration change testingMorten Johan Sørvig2021-09-083-1/+42
| | | | | | | | | | | | Export configuration() and setConfiguration() from the offscreen platform plugin using QPlatformNativeInterface. tst_qighdpi can then resolve and make use of them since it always uses the offscreen platform plugin. Add screenDpiChange() auto test. Change-Id: I459b4df5d94ec4991234a346e3a94618cb3485e9 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Offscreen: add configuration update APIMorten Johan Sørvig2021-09-085-42/+203
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add support for updating the platform configuration at runtime, which enables use cases such as changing the screen configuration from an auto test. Provide functions for getting and setting the complete configuration as a QJsonObject: QJsonObject configuration() void setConfiguration(QJsonObject) User code can then either set a completely new configuration, or make a smaller update by using a get-modify-set sequence: // Set the logical DPI for screen 0 to 192: auto config = configuration(); config[“screens”][0][“logicalDpi] = 192 setConfiguration(config); This approach means we can expose a minimal but complete API, at the cost of doing more work in the offscreen plugin in order to figure out what changed. Note that this change does not export thew API from the platform plugin. Change-Id: If776c36d5ae6d72dca715cc8e89e42768ed32c60 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Doc: Fix documentation warnings for Qt NetworkTopi Reinio2021-09-082-4/+7
| | | | | | | | | | | | | | | | The Clang compiler used in QDoc complained about the documentation- specific overload of QAbstractSocket::bind(): error: incomplete type 'QHostAddress' named in nested name specifier Also, fix an attempted snippet inclusion to use the \include command, and fix the comment tag spacing and indentation. Pick-to: 6.2 Fixes: QTBUG-96293 Change-Id: Ie4d78933fa7ac0aaf7f3bcc6487e7fd823db5123 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
* Clear up QWindow::isActive() documentationTor Arne Vestbø2021-09-081-1/+3
| | | | | | | | | | The isActive function does not determine if a window should be active, but whether it is currently active. The way the documentation was phrased may have lead people to believe the former. Pick-to: 6.2 6.2.0 5.15 Change-Id: I05a4cb3d8784a2fefa24bdd42ea96cfdae22b9d1 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* QTextImageFormat: add Qt7 TODO to remove the default valueDavid Faure2021-09-081-0/+1
| | | | | Change-Id: I8b60b302c9df7ce7c44b89fe45f813c4532b7bd6 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QTextOdfWriter: fix exporting pixmaps to ODTDavid Faure2021-09-081-2/+2
| | | | | | | | | | | | | | | The QVariant returned by resource() can contain either a QPixmap or a QImage. The code here is now more similar to the one in qtextimagehandler.cpp. Also, the quality is 0 when not set, in which case we want a nice PNG rather than a very very low quality JPG with just a few large blocks of same-color pixels. Pick-to: 5.15 6.2 Change-Id: I49db542e2234c8068f85a636a81a7d8cdb7b5876 Reviewed-by: André Hartmann <aha_1980@gmx.de> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Add a conditional noexcept specification to qExchangeGiuseppe D'Angelo2021-09-081-0/+1
| | | | | | | | | | Following P2401 (which libstdc++ and MS-STL already implement) and [res.on.exception.handling]/5 that gives us freedom to strenghten any noexcept specification. Change-Id: I17ebd9148a181eb8496ace3a9d8010008160b564 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix QtConcurrent::blockingMapped to work with non-template sequencesSona Kurazyan2021-09-081-1/+7
| | | | | | | | | | | | | | | The code for deducing the type of output sequence was assuming that the input sequence is always a template class and was trying to use the corresponding container type for the output sequence. Fixed the deduction code, to assume that the output sequence has the same type as the input sequence, when it's not a template class. Also added tests to verify that all QtConcurrent functions support non-template input sequences. Fixes: QTBUG-30617 Pick-to: 6.2 6.1 Change-Id: I486fe99f3207cfff5dcceb3712cc7de863067edb Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Clean up duplicated code blockCraig Scott2021-09-081-3/+0
| | | | | | | | | | | | | Two separate changes addressed the OUTPUT_TARGETS variable not being set in the calling scope of _qt_internal_process_resource() for a particular code path, but they did so at different places. Remove one of them, since we don't need both. Pick-to: 6.2 Change-Id: Ibc1052e886ec73a99231ada3b7a1bb9e7a873cc4 Reviewed-by: Alexey Edelev <alexey.edelev@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Fix dependencies on sources generated in a different scope to targetCraig Scott2021-09-081-6/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | In certain situations, a file generated by add_custom_command(OUTPUT) may be added as a source to a target defined in a different directory scope. That makes its GENERATED source property not visible to the target for CMake versions before 3.20. For 3.20 and later, policy CMP0118 can make the generated state of a source file global, but that policy is under the control of the user project, since its value at the end of the target's directory scope is what is used. Therefore we can force that global visibility using CMP0118. With CMake 3.18 or later, we can set source properties in arbitrary scopes, which allows us to force visibility in the scopes we need it. Use that for all CMake versions 3.18 and later to make the source file properties visible to the target. Making the generated state of a source file visible to the target isn't enough on its own. In the scope that the file is generated, there must be a target that depends on the file or else CMake won't set up the necessary dependencies to ensure that generation happens before the target tries to use it. Add targets in the generated file's own scope where we currently might not do that. Task-number: QTBUG-95200 Pick-to: 6.2 Change-Id: Ic1dfca1a193041de01d7f903b79473b9d47f1d1d Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* SQLite: Update SQLite to v3.36.0Andy Shaw2021-09-083-2976/+4341
| | | | | | | | [ChangeLog][QtSQL][SQLite] Updated SQLite to v3.36.0 Pick-to: 6.2 6.2.0 5.15 5.12 Change-Id: I05cde47b757455dfd438405bfba1818c7f6eec00 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* rhi: Reset resource state tracking tables upon layout-compatible updatesLaszlo Agocs2021-09-073-0/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ...just like create() would do when requesting a full rebuild. Not relevant for the OpenGL backend, while D3D and Metal may get away without doing this, but the Vulkan backend gives visible rendering errors in Qt Quick once updateResources() is taken into use and a scene manages to do the "right" amount and types of changes. The most common source is a changing uniform buffer offset. Consider how the Qt Quick scenegraph merges uniform data into a single buffer in unmerged batches (i.e. when a set of geometry nodes cannot be batched together in a single draw all). While each node gets its own draw call, each associated srb refers to the same uniform buffer at binding point 0, just with a different offset. Without the layout-compatible-update optimization (that is QRhiShaderResourceBindings::updateResources()) this is not something that needs extra care: once an srb is built or rebuilt (by calling create()), the offset, just like the resource itself is fixed and cannot change. And once create() is called, it conveniently invalidates all related data structures, leading to the subsequent setShaderResources() rewrite descriptors (incl. the resource, the offset, etc.) with Vulkan or do whatever is relevant with other backends. updateResources() only does the minimum amount of changes because we know that the binding list layout has not changed. It turns out this was a bit too minimal, because certain state tracking data structures still need resetting, just as if we called create(). The problem is becoming apparent with non-layout data such as the uniform buffer offset, storage buffer offset, or the storage image mip level. It however works as expected when changing the resource itself. E.g. if a binding point now references a QRhiBuffer different than before, then there is no visible problems, regardless of the buffer offset being different or the same. Hence being difficult to discover, until the aforementioned Qt Quick renderer case triggers it. Why is this? Changing the resource (buffer, texture, sampler) itself works due to the guarantees given by the QRhi resource model. Consider the following: ubuf is a uniform buffer ubuf->create(); srb->setBindings({ references ubuf }); srb->create(); // use the srb in some draw calls // ... // later, when preparing the next frame we decide we need new data with // a different size even: ubuf->setSize(new_size) ubuf->create(); // fill in new data to ubuf // use the srb in some draw calls at this point "magic" happens: note how there is no rebuilding of the srb itself (no create(), no nothing), yet it will correctly pick up the now-different native buffer objects underneath ubuf. This works because there is a certain degree of state tracking happening that allows recognizing that a resource referenced from an srb got rebuilt and now has different native objects (e.g. a VkBuffer) underneath, which in turn needs (with Vulkan) rewriting the associated descriptor with the new native resource. Incidentally, this also makes updateResources() work just fine as long as it replaces the QRhiBuffer/Texture/Sampler reference for the binding point. However, with the example snippet above there is no way to change the other associated data such as the buffer offset. (that would need rebuilding the srb with create(), and that resets all related state tracking structures) So once we encounter an updateResources() where the same QRhiBuffer is now used with an offset different from before, that is not recognized by setShaderResources() and (with Vulkan) it will not rewrite the descriptor with the new offset. (unless the changes for another resource in the binding list trigger it; the granularity here is quite coarse, i.e. we either rewrite (with Vulkan) all descriptors or none at all; this makes the problem even less apparent because now rendering errors occur only when Qt Quick ends with an update where only the uniform buffer offset, but nothing else changed) Pick-to: 6.2 Change-Id: I82ee43aa358947288135ff72ec213e091342e9cb Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* rhi: Improve srb layout serialization helpersLaszlo Agocs2021-09-072-3/+4
| | | | | | | | | | | Be idiomatic and return the output iterator one past the last element. Otherwise passing in a plain pointer (as exercised by the autotest now) fails to function because we write over the same 4 elements again and again for each binding. Pick-to: 6.2 Change-Id: If74463fa5140ffa2b1d5be97b71868848ad46614 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Q_DECLARE_INTERFACE: delete unspecialized qobject_interface_iid()Thiago Macieira2021-09-071-3/+2
| | | | | | | | Instead of making it return a non-useful nullptr. Change-Id: Ie72b0dd0fbe84d2caae0fffd16a245cce5ea65f1 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Q_DECLARE_INTERFACE: add missing const to const qobject_castThiago Macieira2021-09-071-1/+1
| | | | | | | | | | | | | | [ChangeLog][Potantially Source-Incompatible Changes] The macro Q_DECLARE_INTERFACE used to cast away the constness of the QObject parameter. That is now fixed in this release, but may cause failure to build source code that depended on this incorrect behavior. If fixing the const correctness in your code is not an option, insert an explicit const_cast<IFace *> of the object prior to the qobject_cast call. Change-Id: Ie72b0dd0fbe84d2caae0fffd16a246a36f0c088f Reviewed-by: Rui Oliveira Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Unix fallbackLocale(): use QString::tokenize() rather than split()Edward Welbourne2021-09-071-4/+3
| | | | | | | | | | We only want the first entry, so avoid all the allocations of split()ing and just look at the first. Change-Id: I81beee1856608c932254213f2971fc37bc457c41 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Split up close handling in QWidget into a pre and post stepTor Arne Vestbø2021-09-074-22/+31
| | | | | | | | | | If we are the one initiating the close (from Qt Widget land), we want to mark the widget as closing as early as possible. Clarified the role of close_helper by renaming it to handleClose. Change-Id: Iae250a0ae1583d743c59e99fcb99fdf18d2a1882 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Revert "QUrl: Remove explicit casts to {const,} void*"Andreas Buhr2021-09-071-2/+3
| | | | | | | | | | | | | | | This reverts commit 63c1e7c4a105df0b61f0cd1f8193820cdf026ae3. It caused the following compilation error with g++-11. error: ‘void* memcpy(void*, const void*, size_t)’ copying an object of non-trivial type ‘class QChar’ from an array of ‘const char16_t’ Fixes: QTBUG-96268 Change-Id: I2680b15aba8d0d867092391fcee3815e7fa4c0bc Reviewed-by: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Cocoa: Make sure we can display multiple sheets for the same NSWindowDoris Verria2021-09-071-1/+5
| | | | | | | | | | | | | | | On macOS, to display a modal with Qt::WindowModality set, or of type Qt::Sheet, we call beginSheet:completinHandler:. However, this method won't display the specified sheet unless the current active one is dismissed, which is a different behavior than what we expect for this case. Use beginCriticalSheet:completionHandler: whenever we already have an active sheet attached to the NSWindow, which allows us to display multiple sheets for the same window. Fixes: QTBUG-91059 Pick-to: 5.15 6.1 6.2 Change-Id: I86bdbcbd63758edbbc48a8aade0178917dcb0e5b Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Allow building android{deployqt, testrunner} under target host_toolsAssam Boudjelthia2021-09-074-11/+18
| | | | | | | | | | | When doing a cross build for Android we need only the host tools which are available under cmake's host_tools target, but androiddeployqt and androidtestrunner are not part of that. This fixes that. Pick-to: 6.2 Change-Id: Icdbc4a78ca050b66ec8df656d9ec766ef6c9f4b9 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Refactor QStatusBar to reduce memory allocationVolker Hilsheimer2021-09-071-80/+62
| | | | | | | | | | | | | | | | | | | Reading through the code contemplating what might have caused QTBUG-89141 brought up some opportunities for improvement. * updated coding style and variable names * use ranged for where possible and meaningful * replacing a QList of pointers to heap-allocated structs with a list of values Since the QList population code makes sure that we never have gaps (we only insert within the existing range), the test for null-entries is not needed, and was perhaps just precausion to avoid nullptr dereference. Task-number: QTBUG-89141 Change-Id: I4694d820427a221f1334d2428f50069751919aef Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io> Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* Fix compilation for recursive Qt containersSona Kurazyan2021-09-077-32/+60
| | | | | | | | | | | | | | | | | | | | The operator checks cause compilation errors when trying to check for their existence for recursive containers. This happens because of trying to check for the operators on the template parameter type(s), that inherit from the container itself, which leads to compilation errors. Introduced alternative versions of the operator checks (with _container suffix), that first check if the container is recursive, i.e. any of its template parameter types inherits from the given container, and skips the operator check, if that's the case. The fix is done for all Qt container types that had the problem, except for QVarLengthArray and QContiguousCache, which don't compile with recursive parameter types for unrelated reasons. Fixes: QTBUG-91707 Pick-to: 6.2 6.1 Change-Id: Ia1e7240b4ce240c1c44f00ca680717d182df7550 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* rhi: Enable serializing a layout description without baking an srbLaszlo Agocs2021-09-072-10/+31
| | | | | | Pick-to: 6.2 Change-Id: I66d28cc9d5417bcd5d192fa100c21f69fd42fd6b Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* rhi: Make the serialized srb layout description accessibleLaszlo Agocs2021-09-072-1/+14
| | | | | | | | | | | | | | | | | | | | | ...by the Qt Quick renderer, for example. A typical Qt Quick material binding set serializes to 8 uints. This would not demand a container like QVector. However, being implicitly shared is essential here due to the intended usage (query the serialized blob, put it into a cache key, hash it, compare it, all without any copying and new allocs; we can afford an extra alloc upon each srb construction, but don't want more afterwards in the rendering engines) Also make it clear in the pipeline docs that the optimization Qt Quick is (soon going to be) doing is legal. (the srb ref in the pipeline can be dead and dangling as long as every call to setShaderResources() specifies a layout-compatible alternative) Pick-to: 6.2 Change-Id: I97efbea1fa3516b10c9832adbab0a21b7bc0845d Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* QPaintEngineEx: solve compile errorZhang Hao2021-09-071-1/+1
| | | | | | | | | Use the same variable name in function Amends 6869d2463a2e0d71bd04dbc82f5d6ef4933dc510 Pick-to: 6.1 6.2 Change-Id: If710a53993e84d048f9052f4fcf92eb57635f585 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* Remove QNetworkAccessCache::Node's explicit ctorMårten Nordheim2021-09-071-8/+4
| | | | | Change-Id: I2a993bcf96a0c603496e8a420251a7e01f46acee Reviewed-by: Markus Goetz (Woboq GmbH) <markus@woboq.com>
* CMake: Copy and install lldb QtCore.py script for lldb and Xcode useAlexandru Croitor2021-09-071-2/+26
| | | | | | | | | | | | The file was not handled during the qmake -> CMake transition. qmake had a more generic mechanism to allow embedding dSYM scripts per Qt module, but it wasn't used as far as I know, so the CMake implementation only limits it to QtCore. Pick-to: 6.2 Change-Id: Ibcd818df1897f603ac194092b28d4bd4d1d6c6ae Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Fix lldbbridge.py loading when using lldb + Python 3 from CLIAlexandru Croitor2021-09-071-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | or from Xcode. A command line lldb that uses python3 fails to load the 'utils' module dependency when importing lldbbridge.py via the dSYM script debug_script.py. Add the directory where lldbbridge.py is as an additional import path to sys.path. This fixes the bridge to load in both CLI lldb and from within Xcode. Traceback (most recent call last): File "src/corelib/debug_script.py", line 92, in __lldb_init_module bridge = import_bridge(bridge_path, debugger, session_dict) File "src/corelib/debug_script.py", line 42, in import_bridge bridge = imp.load_source(MODULE_NAME, path) File "Versions/3.8/lib/python3.8/imp.py", line 171, in load_source module = _load(spec) File "<frozen importlib._bootstrap>", line 702, in _load File "<frozen importlib._bootstrap>", line 671, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 783, in exec_module File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed File "Qt Creator.app/Contents/Resources/debugger/lldbbridge.py", line 34, in <module> import utils ModuleNotFoundError: No module named 'utils' Amends 1b73c202ce907cd03864413f472bfeb5abf5151e Pick-to: 6.2 Change-Id: I521d7530e35ee9c51ae0418d2c532e58ec1952d0 Reviewed-by: hjk <hjk@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* wasm: fix network data URI schemeLorn Potter2021-09-071-2/+0
| | | | | | | | | | Inadvertantly ifdefed out. Tested and works fine Fixes: QTBUG-96170 Pick-to: 6.2 5.15 Change-Id: Ib26cf76a548146d4212c48b228965348038f34e8 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* JSON parsing: fix incorrect sign-extension for decoding bad escapesThiago Macieira2021-09-061-3/+3
| | | | | | | | | | | | | | The parser was lenient in accepting backslashes followed by invalid characters, but accidentally sign-extended everything above 0x7f causing broken outputs that weren't valid UTF-16 either. For example, the sequence "\\\xff" (backslash followed by 0xff) produced sequence "\ud7bf\udfff" (U+D7BF is not a surogate pair). Change-Id: Ie72b0dd0fbe84d2caae0fffd16a113c703a7696f Reviewed-by: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* 3rdparty: Update TinyCBOR to v0.6-rc1Thiago Macieira2021-09-0611-30/+32
| | | | | Change-Id: Ie72b0dd0fbe84d2caae0fffd16a169a70845d33e Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Forward touchEvents to children inside QGraphicsProxyWidgetVolker Hilsheimer2021-09-063-13/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reapplies the fix from 1ecf2212fae176b78c9951a37df9e33eb24d4f2d, using QApplication::translateRawTouchEvent to dispatch the touch event received by the QGraphicsProxyWidget to the relevant child widgets under each touch point. In addition, limit the implicit grabbing of each touch point before sending the event to those cases where we have to: touch pads, and if the target widget comes from a closest-widget matching. And don't call the QTouchEvent override of QEvent::setAccepted() on QTouchEvent instances in QGraphicsView classes, as this will override each event point's acceptance state. This way, we can identify which touch points have been accepted after event delivery, any only implicitly grab those points that were. Otherwise, touch points not accepted by a proxied widget hierarchy will still be part of an accepted event, and be grabbed by the viewport of the QGraphicsView. This would then lead to infinite recursion when the QGraphicsProxyWidget passes the TouchUpdate event on to each touch point's grabber. Re-activate the test case, and extend it with more combinations. Refactor touch-event recording to make it easier to test multi-touch scenarios. Task-number: QTBUG-45737 Fixes: QTBUG-67819 Pick-to: 6.2 Change-Id: Id5611f4feecb43b9367d9c2c71ad863b117efbcb Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Fix QLocale::system() standalone day and month handlingIvan Solovev2021-09-065-8/+40
| | | | | | | | | | | | | | | Some backends were missing support for standalone days and months, also the standaloneDayName() implementation was always using the same codepath as dayName(). This patch fixes the issues. Support for narrow format will be added in the following patch. Task-number: QTBUG-84877 Pick-to: 6.2 Change-Id: I38ee06342cafab544e3c69097bd0e6ae68e85645 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Doc: fix qdoc warning from wrong function prototypesVolker Hilsheimer2021-09-061-4/+4
| | | | | | | | | | | | std::chrono values are passed by const reference. Still warnings from undocumented parameters, but rephrasing the documentation doesn't make it better in this case, so perhaps qdoc needs a way to suppress the warning. Adding an \omit block where the parameters or return values are mentioned doesn't help. Change-Id: I7d495d73d8367d9d90dd33a4880ac7c978382d19 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* xcb: update connection time when possibleLiang Qi2021-09-062-3/+19
| | | | | | | | | At least we try to do it with all events triggered by user. Pick-to: 5.15 6.1 6.2 Change-Id: I28b399a2517600f7da2c91a50fecdf58b9d81fb6 Reviewed-by: JiDe Zhang <zhangjide@uniontech.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* QUrl: Remove explicit casts to {const,} void*Ievgenii Meshcheriakov2021-09-061-3/+2
| | | | | | | | | Those casts are not needed when passing pointers to simple types to memcpy. Change-Id: I686265b0e152aa22e0195ff252c442ab1a122ba7 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* corelib: Use char16_t and char32_t types for charactersIevgenii Meshcheriakov2021-09-066-131/+100
| | | | | | | | | Use standard char16_t and char32_t types instead of ushort and uint. Remove members of QUtf8BaseTraits that use those integer types. Change-Id: I77b1a9106244835c813336a50417f6bbdfada288 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* qt_pixmap_thread_test(): Simplify logic, merge warningsSze Howe Koh2021-09-061-12/+6
| | | | | | Pick-to: 6.2 Change-Id: I0c413c14d124bafbd6b2bd94d7a128e19ed83ade Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* Fix segfault when closing widget and destroying window in QDialog::doneVolker Hilsheimer2021-09-061-3/+7
| | | | | | | | | | | | On OpenSUSE we seem to get an Enter event after or while the QWindow is closed, and that appears to reset the currentMouseWindow after we cleared it in QWindowPrivate::destroy. Apply a workaround similar to the focus_window to make sure that currentMouseWindow and currentMousePressWindow don't point to destroyed objects. Pick-to: 6.2 Change-Id: I61afdaa7d8d1d437058624012319460be2f2567f Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Doc: mark documentation of internal functions as such to silence qdocVolker Hilsheimer2021-09-062-0/+3
| | | | | | | | Pick-to: 6.2 Change-Id: I9523511b9adf40d1280fbf320c24a79aa2860ef2 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Luca Di Sera <luca.disera@qt.io>