summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
...
* QTimer: fix API docs of callOnTimeOut overloadAhmad Samir2023-07-232-6/+8
| | | | | | | | | | | | | | | | | | | | It actually takes one parameter, because in this overload the connection type can't be specified, for example: QTimer timer; timer.callOnTimeout([]() { qDebug() << "slot"; }); The call chain is: QObject::connect(timer, &QTimer::timeout, functor); connect(const typename QtPrivate::FunctionPointer<Func1>::Object *sender, Func1 signal, Func2 &&slot) connect(sender, signal, sender, std::forward<Func2>(slot), Qt::DirectConnection); the connection type is always DirectConnection. Spotted by Giuseppe in code review. Pick-to: 6.6 6.5 5.15 Change-Id: Ia8bbd91e98a357244cbfae4e3ed63d4c73038fa2 Reviewed-by: Giuseppe D'Angelo <[email protected]>
* QLocaleData:: port bytearray/stringTo{U}LongLong to QSimpleParsedNumberAhmad Samir2023-07-225-53/+54
| | | | | | Change-Id: I97fe38d9b676cf92003a7323ebb5f56b9b79abad Reviewed-by: Thiago Macieira <[email protected]> Reviewed-by: Edward Welbourne <[email protected]>
* QLocale: move QSimpleParsedNumber to qlocale_p.hAhmad Samir2023-07-222-8/+8
| | | | | | | | It was defined in qlocale_tools_p.h which already includes qlocale_p.h. Change-Id: I43464a27ec15266ce8632ca30dcd1c57d94b1f25 Reviewed-by: Edward Welbourne <[email protected]> Reviewed-by: Thiago Macieira <[email protected]>
* QLocaleData: change validateChars() to return validation StateAhmad Samir2023-07-223-37/+57
| | | | | | | | | | | | | | | | | | | | Instead of returning just bool, return a result struct {State, CharBuff}, a State is useful as it can have an Intermediate state where the input isn't Acceptable yet, but not Invalid as such. The example from the linked bug is in tst_QIntValidator::validateFrench(), a string "1 ", which can be interpretted as a number with a group separator, but the input shouldn't end with a group separator (changing the unittest will be done as part of a separate commit). CharBuff (QVarLengthArray<char, 256>) replaces the QByteArray input parameter; a QVarLengthArray means no heap allocation in typical use-cases with input text < 256 characters to validate. This required minimum changes (QVLA doesn't have startsWith, replaced by comparing with buff[0]; and for converting to double, wrapped it in a QBAV). Task-number: QTBUG-111371 Change-Id: I4e0eb612d470ef03faf52031ddfe9c4bdb31e1e1 Reviewed-by: Edward Welbourne <[email protected]>
* QValidator: de-duplicate some codeAhmad Samir2023-07-221-22/+24
| | | | | | | | | | | | | QDoubleValidator didn't return Intermediate if the buffer only had one character, - or +, but it makes sense to check that there too. In a later commit that check will be moved to QLocaleData::validateChars (which will return "Intermediate" if the last character in the result buffer is -/+, in this case it's the last and only character in the buffer). Change-Id: I2f9f5b92880b7e9cc1a3ab36b5ec322f57291ee9 Reviewed-by: Edward Welbourne <[email protected]>
* qstringalgorithms: refactor trimmed_helper_positionsAhmad Samir2023-07-223-11/+16
| | | | | | | | | Take by const Str&, trimming a container/view of characters means removing whitespace from the beginning and end, so the two args were always cbegin() and cend(). Change-Id: Iac0eda59341f1981204d11013d591013eae3c4e0 Reviewed-by: Thiago Macieira <[email protected]>
* QDateTimeParser: unbreak C++20 build (implicit capture of *this by [=])Marc Mutz2023-07-221-2/+2
| | | | | | | | | | Use [&] instead and remove overparenthefication as a drive-by. Amends c888e3922d73df791f0f31553536abf03b241a65. Pick-to: 6.6 6.5 6.2 Change-Id: Ic7930d5011c247122a1b3396ea0d6a9a2d6107de Reviewed-by: Giuseppe D'Angelo <[email protected]>
* Long live QSpan!Marc Mutz2023-07-212-0/+372
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QSpan is Qt's version of std::span. While we usually try not to reimplement std functionality anymore, the situation is different with QSpan. Spans are non-owning containers, so the usual impedance mismatch between owning STL and Qt containers doesn't apply here: QSpan implicitly converts to std::span and vice versa, making STL and Qt APIs using spans completely interoperable. We add QSpan mainly for two reasons: First, we don't want to wait until we require C++20 in Qt and can use std::span. Second, in the view of this author, some design decisions in std::span hurt the primary use-case of spans: type-erasure for containers. This results in two major deviations of QSpan from std::span: First, any rvalue container is convertible to QSpan, allowing seamless passing of owning containers to functions taking spans: void sspan(std::span<T>); void qspan(QSpan<T>); std::vector<T> v(); sspan(v()); // ERROR: rvalue owning container auto tmp = v(); sspan(tmp); // OK, lvalue qspan(v()); // OK This author believes that it's more helpful to have compilers and static checkers warn about a particular wrong usage than to make perfectly valid use-cases impossible or needlessly verbose to code. The second deviation from std::span is that fixed-size span constructors are also implicit. This isn't as clear-cut, because an explicit QSpan{arg} isn't per-se bad. However, it means you can't transparently change from a function taking decltype(arg) to one taking QSpan and back. Since that's exactly what we intend to do in Qt going forward, in the interest of source-compatibility, the ctors are all implicit. Otherwise, the API of QSpan follows the std::span API very closely. Like std::span, QSpan isn't equality_comparable, because it's not clear what equality means for spans (element-wise equal, or (ptr, size)-wise equal?). The major API additions are Qt-ish versions of std API functions: isEmpty() on top of empty() and sliced() instead of subspan(). The (nullary) first()/last() functions (Qt speak for front()/back()) clash with the std::span function templates of the same name, so are not provided. This patch adds QSpan as private API. We intend to make it public API in the future. Pick-to: 6.6 Fixes: QTBUG-108124 Change-Id: I3f660be90eb408b9e66ff9eacf5da4cba17212a6 Reviewed-by: Thiago Macieira <[email protected]> Reviewed-by: Qt CI Bot <[email protected]> Reviewed-by: Dennis Oberst <[email protected]> Reviewed-by: Ivan Solovev <[email protected]>
* QDTP: match local-time by preference to its zoneEdward Welbourne2023-07-211-9/+5
| | | | | | | | | | | | | | | | | | | | | | | | | When parsing a string whose time-zone part matches local time's name, use local time in preference to the QTimeZone with that name. The case is ambiguous, and the bug was already fixed (by something else) in dev, but this caused a failure in 6.2 through 6.5; and using local time is more natural to QDateTime in any case. The fix incidentally makes the the logic of the zone-resolution code more straightforward and a closer match to how findTimeZone() found the match. The issue was hidden from 6.6 by a change [*] to the handling of POSIX rules, that lead to plain abbreviations such as CEST and BST - for which the IANA DB has no entry - no longer being considered "valid" zones, despite being technically valid POSIX zone descriptors (effectively as aliases for UTC). [*] commit 41c561ddde6210651c60c0789d592f79d7b3e4d5 Pick-to: 6.6 6.5 6.2 Fixes: QTBUG-114575 Change-Id: I4369901afd26961d038e382f4c4a7beb83659ad7 Reviewed-by: Konrad Kujawa <[email protected]> Reviewed-by: Qt CI Bot <[email protected]> Reviewed-by: Thiago Macieira <[email protected]>
* Check QDT's local time abbreviation as well as the qTzName()sEdward Welbourne2023-07-211-9/+13
| | | | | | | | | | | | Since QDateTime uses some fall-backs if qTzName() doesn't give it something useful (as happens on MS-Win when local time is UTC), QDateTimeParser should check the result of those fall-backs as well as the qTzName()s when checking for local-time as zone. Pick-to: 6.6 6.5 6.2 Change-Id: Ic809b7e44cd0c83fb076b24c27547268345fa379 Reviewed-by: Konrad Kujawa <[email protected]> Reviewed-by: Edward Welbourne <[email protected]>
* Move month names from QGregorianCalendar to QRomanCalendarEdward Welbourne2023-07-214-11/+11
| | | | | | | | | The other Roman-based calendars share the same month names as Gregorian, so it makes sense for them to use the same system fallbacks as it when available. Change-Id: Idf2f2901032c7a02d641f00a3993cc95b6bb8067 Reviewed-by: Thiago Macieira <[email protected]>
* Update system collator when system local is default and updatesEdward Welbourne2023-07-211-1/+5
| | | | | | | | | | | | | | | | | | Amends commit 94de5f9b25e1816039885c765e2a5b312f7daa7e so that every change to the default locale is reflected in an update to the default collator used by QString::localeAwareCompare(). Although the change to the system locale does update the QLocaleData object shared by all system locale objects, the possible change to its collator() may imply the default collator needs an update; and the collator backend's init() may use the language, script and territory that's changed in setting up the revised collator, even if the QLocale instance referenced has the same QLocaleData. Pick-to: 6.6 6.5 6.2 Change-Id: I957486c03c3d779fc9a2f0b889346ec13b1af868 Reviewed-by: Thiago Macieira <[email protected]> Reviewed-by: Qt CI Bot <[email protected]>
* Port QObjectPrivate::connect() to SlotObjUniquePtr internallyMarc Mutz2023-07-211-5/+4
| | | | | | | | | | | | | This is for consistency with QObject::connectImpl() and QObjectPrivate::connectImpl(), if nothing else. See the commit message of the QObject::connectImpl() porting patch for why we leave the function signature unchanged (key-word: tail-callability). Pick-to: 6.6 6.5 Change-Id: I515d3be4a5126f9f4738dd7bde5174377faf2343 Reviewed-by: Thiago Macieira <[email protected]>
* Port QObjectPrivate::connectImpl() to SlotObjUniquePtr internallyMarc Mutz2023-07-211-12/+4
| | | | | | | | | | | | | | | | | ... removing the custom scope-guard which was .dismiss()ed too early (the allocation of 'c' could theoretically fail, and the old code would leak the slot object in that case; nothing we're generally guarding against in Qt, but it's a nice drive-by gain, probably shuts up static checkers, and makes readers wonder less about the lifetime of the slot object). As mentioned in the patch porting QObject::connectImpl(), leave the unique_ptr out of the function's signature, see there for rationale (key-word: tail-callability). Pick-to: 6.6 6.5 Change-Id: Ib90371b9768a72fd62d080b71eef2c82f851db81 Reviewed-by: Thiago Macieira <[email protected]>
* Port QObject::connectImpl() to SlotObjUniquePtr internallyMarc Mutz2023-07-211-5/+3
| | | | | | | | | | | | | | | | | | | | | | | | | This gets rid of the smell that one destroyIfLastRef() call guarded against nullptr while the other one did not. Don't change the function signatures, as passing by unique_ptr, while making the transfer of ownership clear, makes it impossible to call the function as a tail-call: Non-trivially-copyable arguments live in the caller's stack frame and the caller has no idea whether the object was moved from in the callee or not, so it needs to run the dtor, which prevents this from being tail-callable. Passing .release(), OTOH, makes it obvious that the unique_ptr is nullptr afterwards, so leaves the door open for tail-calling. However, the QObjectPrivate::connectImpl() wasn't, and continues to not be, a tail-call. Investigating why, while intriguing, is for another patch (and much more important for the template wrappers of these functions than then one out-of-line function we're dealing with here). Pick-to: 6.6 6.5 Change-Id: Ib951ed2a2b622d70cb12ddbf01c83ec56b1ce70d Reviewed-by: Thiago Macieira <[email protected]>
* QMetaObject: port invokeMethodImpl() from QScopeGuard to SlotObjUniquePtrMarc Mutz2023-07-211-4/+5
| | | | | | | | | | | | ... so it can use the new QMetaCallEvent() ctors taking that type. As a consequence, the slot object ref-count is now no longer touched on the way into the meta-call event (was: upped in QMetaCallEvent ctor, then downed in QScopeGuard). Pick-to: 6.6 6.5 Change-Id: Id9bd157792458a3834809c23e94ca5f504f7abd1 Reviewed-by: Thiago Macieira <[email protected]>
* QMetaCallEvent: add ctors and create() overloads taking SlotObjUniquePtrMarc Mutz2023-07-212-2/+57
| | | | | | | | | This makes it clear who is responsible for obtaining additional strong reference to the slot objects, because these functions no longer do. Pick-to: 6.6 6.5 Change-Id: I39187e3c441d8f82d50d907731f1cbdfb2a95b9d Reviewed-by: Thiago Macieira <[email protected]>
* QFactoryLoader: fix mem-leak on setExtraSearchPath()Marc Mutz2023-07-212-12/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When, like in tst_QFactoryLoader::extraSearchPath(), where asan caught it, or, presumably, on re-creation of a QGuiApplication with a different QT_QPA_PLATFORM_PLUGIN_PATH, setExtraSearchPath() is called with a different path than before, then it would leak QLibaryPrivate objects in the call to libraryList.clear(). Fix by adding QLibraryPrivate::Deleter and holding the objects in unique_ptr<QLibraryPrivate, Deleter> instead of as raw pointers. This statically guarantees we're not leaking these objects anywhere else in QFactoryLoader. Change the name of the container from libraryList to libraries to catch any unported users, incl. in older branches. Since libraryList is now a std::vector (QList cannot hold move-only types), statically assert that it was never attempted to be copied or moved, even in older branches, with Q_DISABLE_COPY_MOVE(). Amends ddba24535fb5732c3cb757414cf1a393bd98f693. Not picking to 6.4 and 6.3, as they are closed at this point. Pick-to: 6.6 6.5 Fixes: QTBUG-115286 Change-Id: I6d1272622b12c505975cc72f9aba0d126d2817e2 Reviewed-by: Edward Welbourne <[email protected]> Reviewed-by: Thiago Macieira <[email protected]>
* Check the QTP0002 policy only if paths are setAlexey Edelev2023-07-211-0/+22
| | | | | | | | | | | It doesn't make sense to disturb users with the policy warning if they don't specify Android paths. Suppress the policy check if Android paths are not set for the target. Fixes: QTBUG-115119 Pick-to: 6.6 Change-Id: Ice9d0459c01feb505857133bb942b1b6e775e55a Reviewed-by: Alexandru Croitor <[email protected]>
* Deprecate QtSystemMsg enumKai Köhne2023-07-212-2/+4
| | | | | | | | | | QtSystemMsg has been an alias to QtCriticalMsg since Qt 4 times, probably because of the misleading name. Let's formally deprecate the enum now, so that it at one point (Qt 7?) can be finally removed. Change-Id: I385b62a77ceb66f75f318a00a73ea5e7333bf4f1 Reviewed-by: Giuseppe D'Angelo <[email protected]> Reviewed-by: Edward Welbourne <[email protected]>
* Doc: Change the Qt Testlib example pagesVenugopal Shivashankar2023-07-217-470/+483
| | | | | | | | | | | | | These pages are designed as tutorials, so they can be \page instead of \example. Also, reorganized the tutorials, moving them out of the testlib manual, into several qdoc files. Task-number: QTBUG-115248 Pick-to: 6.5 6.6 Change-Id: I2cbd66ecc1082ecc9d3d1742b621ee009daf1031 Reviewed-by: Kai Köhne <[email protected]> Reviewed-by: Topi Reiniö <[email protected]>
* QtWidgets: unbreak unity-build-batch-size 100000Marc Mutz2023-07-211-0/+2
| | | | | | | | | | | | | | | Exclude TUs that cause problems in a build where all of QtWidgets's .cpp files end up in a single unity_0_cxx.cxx. This should ensure that the build will forthwith not fail because someone added a new .cpp file in the "wrong" position. Of course, this is just a snapshot, with my configuration: GCC 13, Ubuntu 20.04, -developer-build, C++23, -sctp. Task-number: QTBUG-115352 Pick-to: 6.6 6.5 Change-Id: I6a445701e2ac41d67a3ec69715b7bf6ed5ec65f7 Reviewed-by: Alexandru Croitor <[email protected]>
* QtCore: unbreak unity-build-batch-size 100000Marc Mutz2023-07-211-0/+4
| | | | | | | | | | | | | | | Exclude TUs that cause problems in a build where all of QtCore's .cpp files end up in a single unity_0_cxx.cxx. This should ensure that the build will forthwith not fail because someone added a new .cpp file in the "wrong" position. Of course, this is just a snapshot, with my configuration: GCC 13, Ubuntu 20.04, -developer-build, C++23, -sctp. Task-number: QTBUG-115352 Pick-to: 6.6 6.5 Change-Id: If33a485b697f60a2f4d6198f0798c953fa47af51 Reviewed-by: Alexandru Croitor <[email protected]>
* QIconLoader: add some more debugging helpVolker Hilsheimer2023-07-211-4/+5
| | | | | | | | | | As a drive-by, re-use the result from the first QFile::exists check. Pick-to: 6.6 Change-Id: I6b36b165ba3d1f82c9b4be18d44a671f71e8507e Reviewed-by: Axel Spoerl <[email protected]> Reviewed-by: Qt CI Bot <[email protected]>
* QIconLoader: reset search paths when theme name is clearedVolker Hilsheimer2023-07-211-0/+6
| | | | | | | | | | | When we reset the theme so that icons should be provided by the system theme, then reset the search paths to the system-provided paths as well. Otherwise we'll keep looking for the system theme in user-provided search paths, which can't work. Pick-to: 6.6 Change-Id: I10bcb404db9924e038f6fdc8970e53bbb69ac7d1 Reviewed-by: Axel Spoerl <[email protected]>
* QIconLoader: clear cache when the key becomes invalidVolker Hilsheimer2023-07-211-1/+2
| | | | | | Pick-to: 6.6 Change-Id: I6f2745715b902ccbc87d78b1c90f6883cfdd76ae Reviewed-by: Axel Spoerl <[email protected]>
* QIcon: use fallback also with platform icon engineVolker Hilsheimer2023-07-211-4/+8
| | | | | | | | | | | | | Amends a452e2254644ffbed289fdf051eaf41d7e6a3b0d. No new tests, existing tests fails when QPlatformTheme returns a QIconEngine implementation that provides the tested icons. However, the existing test fails when the platform icon engine provides and address-book-new icon, and depends on the order of test functions, as the name() test function modifies the global theme name and search path. Fix those issues in the test. Pick-to: 6.6 Change-Id: Ie1c1d14f08fad5e906296bab662df5cfacdbbf07 Reviewed-by: Axel Spoerl <[email protected]>
* Add initial support for building for VxWorks using clangJacek Poplawski2023-07-211-1/+1
| | | | | Change-Id: I8c4538cd5582bfea69a6e1890445c4c75e6ca0d7 Reviewed-by: Thiago Macieira <[email protected]>
* Fix perror calls for VxWorks platformKrzysztof Sommerfeld2023-07-201-2/+2
| | | | | | | perror does not support string formatting. The problematic code is in VxWorks ifdef so this error was not breaking the other targets compilation. Change-Id: I44e5d247bfa76815c81f0d122f0e34b75538dfa9 Reviewed-by: Thiago Macieira <[email protected]>
* Make sure that the 3rdparty directory belongs to the moduleAlexey Edelev2023-07-191-2/+9
| | | | | | | | | | | | | If the path where Qt sources are located has 3rdparty in it we skip headers processing since all headers are treated as 3rdparty. Use path relative to the source directory when indentifying the 3rdparty header files using regex. Fixes: QTBUG-115324 Pick-to: 6.5 6.6 Change-Id: If97328cb9a9ece01d43c56022f4613da9b29c03f Reviewed-by: Alexandru Croitor <[email protected]>
* SQL: use QT_NO_CONTEXTLESS_CONNECT for sql pluginsChristian Ehrlicher2023-07-196-0/+6
| | | | | | | | | Use QT_NO_CONTEXTLESS_CONNECT to disable 3-arg connects which are considered dangerous. Change-Id: I0ac711491de60e0eeaca9edb60715eafe9da841a Reviewed-by: Qt CI Bot <[email protected]> Reviewed-by: Andy Shaw <[email protected]>
* SQL plugins: add moc includesChristian Ehrlicher2023-07-195-0/+10
| | | | | Change-Id: I9ed4b63fd02b4a6fc5f4b614466590cd099609e2 Reviewed-by: Andy Shaw <[email protected]>
* QTimerInfo: refactor QTimerInfoAhmad Samir2023-07-192-11/+11
| | | | | | | | | | - Add a constructor - Initialize members in-class - Reorder the data members so as not to waste space between them, now all the padding is at the end Change-Id: Ic88200fbff049615a6a43e322e724cf619fc3cdb Reviewed-by: Thiago Macieira <[email protected]>
* QTimerInfoList: don't inherit from a container in an exported classAhmad Samir2023-07-196-34/+44
| | | | | | | | | | | | | | | | | | | Instead use composition by using a container member; inheriting from containers has a couple of issues: - containers (STL and Qt) don't have virtual destructors, which means that deleting via a pointer to the base-class would be troublesome - as it turns out, inheriting from containers, QList in this case, in an exported derived-class could lead to binary-incompatibility issues (see linked bug report) Drive-by change: - group all private members in one place - make timerInsert() private, nothing should use it from outside the class anyway Change-Id: I69843835d8c854fa4b13e8b4ba3fb69f1484f6a6 Fixes: QTBUG-111959 Reviewed-by: Thiago Macieira <[email protected]>
* QTimerInfoList: refactor unregisterTimers()Ahmad Samir2023-07-192-16/+21
| | | | | | | | | | | | - Use removeIf(), easier to reason about than removing from the list during iteration - Return true only if any timers were actually unregistered - Assert in QObject::event() that if the list returned by eventDispatcher->registeredTimers() isn't empty, then eventDispatcher->unregisteredTimers() returns true Change-Id: I739a3865b7524a7aab3ff0227e6a060ed98d6191 Reviewed-by: Thiago Macieira <[email protected]>
* QTimerInfoList: use std::upper_bound/rotateAhmad Samir2023-07-191-12/+12
| | | | | Change-Id: I80899a8c652ac724b0efd82815dddc061fe9f5e8 Reviewed-by: Thiago Macieira <[email protected]>
* QString: make isEmpty(), length() and size() noexceptDennis Oberst2023-07-191-5/+3
| | | | | | | | | | They have no preconditions and cannot throw. As a drive-by, merge the definition of isEmpty() into its declaration. Pick-to: 6.6 Change-Id: Ifffa0d4cb2a285bb802d39d10a757be9c31cfae1 Reviewed-by: Marc Mutz <[email protected]>
* CMake: Specify correct \since version for android variableAlexandru Croitor2023-07-191-1/+1
| | | | | | | | | | | | | | The QT_ANDROID_DEPLOY_RELEASE variable was added in 6.5.1, not 6.5.2. Amends 64db65ae907b2d987c01768438dcae9643ceac96 Pick-to: 6.5 6.6 Fixes: QTBUG-115318 Task-number: QTBUG-112921 Task-number: QTBUG-108132 Task-number: COIN-882 Change-Id: I912fecfc918914709aa5cb9c42c67317f7d3dc89 Reviewed-by: Alexey Edelev <[email protected]>
* Put arguments in correct order in syncqt parseVersionAlexey Edelev2023-07-191-1/+1
| | | | | | | | Amends 4d4e74e1bcad47476b947b6e3781b046f9505f83 Pick-to: 6.6 Change-Id: Ie3a0147b414303c528b78c20f6502b83c5102344 Reviewed-by: Alexandru Croitor <[email protected]>
* QHostInfo: fix leaking slot objectMårten Nordheim2023-07-192-1/+8
| | | | | | | | | | | | We were not ref'ing or deref'ing the slot object in the various places that owned it. So, if, in the end, the QHostInfoResult object didn't call the slot we would leak the slot object. Pick-to: 6.6 6.5 6.2 5.15 Fixes: QTBUG-115263 Change-Id: I45f43756c7589470045d97b59257ccfd85a325b7 Reviewed-by: Marc Mutz <[email protected]> Reviewed-by: Volker Hilsheimer <[email protected]>
* Do not generate the deprecated 'QtSql/qsql.h'Alexey Edelev2023-07-191-1/+0
| | | | | | Task-number: QTBUG-115029 Change-Id: I1fe496864ce25f20421ca78fbde3fe4eb4b9fc49 Reviewed-by: Andy Shaw <[email protected]>
* QMetaCallEvent::create: extract template-argument-independent codeMarc Mutz2023-07-192-12/+23
| | | | | | | | | | Extract Method create_impl() with all the stuff that doesn't depend on create()'s template arguments, which will reduce compile time and amount of generated code. Pick-to: 6.6 Change-Id: I9d8f59c168873ac3527b570ef6142079824061cf Reviewed-by: Volker Hilsheimer <[email protected]>
* Port SlotObjectGuard to SlotObjUniquePtrMarc Mutz2023-07-191-7/+4
| | | | | | | Pick-to: 6.6 6.5 Change-Id: I81e64db7e1be9076494bee15bbca372ebffeb3e0 Reviewed-by: Volker Hilsheimer <[email protected]> Reviewed-by: Mårten Nordheim <[email protected]>
* QFutureInterface: port to new SlotObjUniquePtrMarc Mutz2023-07-191-5/+1
| | | | | | | | | ... removing a ### comments to that effect. Pick-to: 6.6 Change-Id: I635ca9593ec72a66d328ff6de61cd311c1b4e89f Reviewed-by: Mårten Nordheim <[email protected]> Reviewed-by: Ivan Solovev <[email protected]>
* QSlotObjectBase: add Deleter and typedef for a unique_ptr using itMarc Mutz2023-07-193-5/+17
| | | | | | | | | | Use it in QMetaCallEvent, to have some automatic test coverage. Other code that might benefit has undergone changes since 5.15, so will be ported one-by-one to avoid conflicts on cherry-picks. Pick-to: 6.6 6.5 Change-Id: I566bab1803e3675f75a9fdf294a4b0f047d21c11 Reviewed-by: Volker Hilsheimer <[email protected]>
* Guard xmlstream header in a source-compatible wayIvan Solovev2023-07-191-1/+3
| | | | | | | | | | | | | | | | | | Using QT_REQUIRE_CONFIG results in a static_assert if the xmlstream feature is not available. This is a SiC change, as the user has no reasonable ways to guard against it. Fix it by using if QT_CONFIG(xmlstream) instead. This commit amends 7337474d041d7e4a7a33157ebd7d84406ed13966 Pick-to: 6.6 Change-Id: I0c55e4cff06157743c05a543a092f9be1eb67c2d Reviewed-by: Edward Welbourne <[email protected]> Reviewed-by: Marc Mutz <[email protected]>
* Doc: List of all Qt overviews which are now termed as explanationJaishree Vyas2023-07-199-4/+9
| | | | | | | | | | | | | The autogenerated list of overviews was adding the \group command which included all the groups instead of overviews. The idea here is to categorize the overviews later on once we have the list of all overviews. Task-number: QTBUG-114762 Pick-to: 6.5 6.6 Change-Id: I3cf53886be277abc86b5ec54d399cd6933fbe882 Reviewed-by: Kai Köhne <[email protected]> Reviewed-by: Leena Miettinen <[email protected]>
* QMetaCallEvent::create(): re-order operationsMarc Mutz2023-07-191-4/+5
| | | | | | | | | | | | | | | | | | | | ... so that everything that requires argv is done first. Also introduce a new variable, argc, for sizeof...(Args) + 1. This will allow us to apply Extract Method to the tail end, which now no longer depends on argv or Args. As a drive-by, port from std::array to C arrays so we can use automatic array size deduction: There's still no such thing as partial CTAD (certainly not in C++17), so if we wanted std::array to deduce the size, we'd also need to let it deduce the type; and we don't want to add an ugly cast to the nullptr). C arrays, OTOH, can deduce the size while fixing the type since K&R C. Pick-to: 6.6 Change-Id: I5a694d4f4d41974eb4b1075ff030bbef902ed492 Reviewed-by: Volker Hilsheimer <[email protected]>
* Windows QPA: fix mail launch in case parameter is wrongYuhang Zhao2023-07-191-0/+5
| | | | | | | | Done-with: Ilya Fedin <[email protected]> Pick-to: 6.6 6.5 Change-Id: I7b24ed64533cdf26f3f3d7dba4b5e80490be269c Reviewed-by: Oliver Wolff <[email protected]> Reviewed-by: Timothée Keller <[email protected]>
* Doc: explain how to create a QToolBarMitch Curtis2023-07-191-0/+4
| | | | | | | | | | | | Surprisingly, this wasn't mentioned in the detailed description at all. Users would need to click on the link for the example in the "See also" section and then read through it to find any mention of how tool bars are created. Pick-to: 6.2 6.5 6.6 Change-Id: I9db23b475009072f34defab38b6d6200a45f2f35 Reviewed-by: Volker Hilsheimer <[email protected]>