summaryrefslogtreecommitdiffstats
path: root/src/corelib
Commit message (Collapse)AuthorAgeFilesLines
...
* Improve fidelity of approximation to CLDR zone representationsEdward Welbourne2024-04-222-712/+726
| | | | | | | | | | | | | | | | | | | | I neglected to update the CLDR dateconverter code when I expanded the range of forms we support for display of a timezone. Even that expanded range doesn't cover all the cases CLDR does, but we can at least approximate each of CLDR's options by the closest we do support. Make matching changes to how the Darwin backend for the system locale maps its ICU-derived formats to ours. This in practice changes all locales previously using t (abbreviation) as zone format to use tttt (IANA ID) instead. Test data updated to match. [ChangeLog][QtCore][QLocale] Date-time formats now more faithfully follow the CLDR data in handling timezones. In most cases this means the IANA ID is used in place of the abbreviation. Change-Id: I0276843085839ba9a7855a78922cffe285174643 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QString: ensure multi-arg arg() parses replacement like single-arg arg()Thiago Macieira2024-04-211-10/+9
| | | | | | | | | | | | | | | | | | | There was a discrepancy that the multi-arg arg() overload would accept any number of digits in the placeholder, resolving up to value 999 (e.g., %000001 was interpreted as placeholder #1), but the single-arg arg() overload only supported exactly one or two digits. The single-arg behavior was documented, so use it. [ChangeLog][Important Behavior Changes] The QString::arg() overload taking multiple QString-like arguments is now fixed to interpret placeholders like the other arg() overloads: it will find at most two digits after the '%' character. That is, the sequence "%123" is now interpreted as placeholder #12 followed by character '3' (verbatim). Pick-to: 6.7 Fixes: QTBUG-118581 Change-Id: I455fe22ef4ad4b2f9b01fffd17c767a948d41138 Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>
* Silence Clazy's warning in QCborContainerPrivate::insertAt()Vladimir Belyavsky2024-04-211-1/+1
| | | | | | | | | | Use more suitable QList::insert() overload and silence Clazy's "mixing iterators" warning. The warning is non-sense for this particular place, but it won't harm to avoid C-style cast and iterators arithmetics there. Change-Id: Ibfc8c8003473de3b7d9b67965e25a4cdb6a9f043 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QMetaTypeCustomRegistry: use QHash::removeIf() instead of a custom erasing loopVladimir Belyavsky2024-04-211-7/+1
| | | | | | | | | | | | | | Use QHash::removeIf() instead of a custom erasing loop on aliases table when unregister custom type. It will still always detach even if nothing needs to be removed, since QHash::removeIf() always detaches. But this can potentially be fixed in the future, so it will be improved indirectly. Besides other things this also silences Clazy's "mixing iterators" warning. Change-Id: I3d6e8b0ed7dc10807570a0b0feac7eda6a0e572a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Remove unused includes in qmetatype.cppVladimir Belyavsky2024-04-211-2/+1
| | | | | | | | - Remove unused <bitset> - Place <qobject.h> under !(QT_BOOTSTRAPPED), because it seems used only there Change-Id: Ic77c7441d2400cf32e7b6ca2b90a1984a0b6377a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QProcess: fix startCommand() with whitespace-only stringsThiago Macieira2024-04-191-0/+4
| | | | | | | | | | | | | | We'd end up trying to takeFirst() from an empty QStringList. [ChangeLog][QtCore][QProcess] Fixed a bug that would cause startCommand() to crash if passed a string that was empty or contained only whitespace characters. Fixes: QTBUG-124512 Pick-to: 6.5 6.6 6.7 Change-Id: I455fe22ef4ad4b2f9b01fffd17c7689095c39272 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QTemporaryFileEngine: minor optimizationAhmad Samir2024-04-201-2/+1
| | | | | | | | | | The original code updated d->fileEntry twice in a row: it assigned to it directly, then called QFSFileEngine::setFileName() which assigned to d->fileEntry again. Now only one QFileSystemEntry is constructed. Change-Id: I3cdc131b97455c14e5b032fbdecdae0eaa32925f Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QFSFileEngine: update d->fileEntry after a successful renameAhmad Samir2024-04-204-8/+27
| | | | | | | | | | | | | | | | | | | | | | | Otherwise member methods such as size() could return incorrect info. Add setFileEntry(QFileSystemEntry &&); to reuse a QFileSystemEntry if we have already constructed one. As a result of this, a QTemporaryFileEngine::setFileName() call has become redundant and can be removed; the code it executed is already taken care of: - QFSFileEngine::close(): already called by QTFEngine::rename() a couple of lines above - QFSFileEngine::setFileName(): QTFEngine::rename() calls QFSFileEngine::rename() which in turn updates the `fileEntry` This commit is covered by tst_QTemporaryFile::rename(), i.e. if QFSFileEngine::rename() didn't update the fileEntry, that test would fail. Change-Id: I312f35cf7fdf9b1a8cd0bce5e98ba7a48cf9426e Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix documentation of QAndroidApplication::contextVolker Hilsheimer2024-04-192-3/+3
| | | | | | | | | | | | As of Qt 6.7 we no longer return jobjects from that API. The declared QJniType::Context type (and similar types) is no longer jobject-like, they are now QJniObject-like. Task-number: QTBUG-123900 Pick-to: 6.7 Change-Id: I215f84ac37907ae2b7950c40c7287590234e4e35 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io> Reviewed-by: Juha Vuolle <juha.vuolle@qt.io>
* QSystemError: add a couple of utility methodsAhmad Samir2024-04-191-0/+7
| | | | | | | | Change-Id: Ic7a44d264a01b2ca3f0899f5dad483482153c0c9 Reviewed-by: Rym Bouabid <rym.bouabid@qt.io> Reviewed-by: Yuhang Zhao <yuhangzhao@deepin.org> Reviewed-by: Ivan Solovev <ivan.solovev@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* CMake: Improve Xcode projects for single SDK builds on Apple platformsTor Arne Vestbø2024-04-191-0/+15
| | | | | | | | | | | | | Xcode expects the base SDK to always be the device SDK, so we can't pass CMAKE_OSX_SYSROOT on directly. We use the Xcode SUPPORTED_PLATFORMS setting to inform Xcode about which targets we can actually build and run for. The logic is only triggered for single-arch Qt builds. Change-Id: I0012e220cb415fcc5995672ffd60b25ef7eeb4e7 Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* Prefer QString::asprintf() over arg()'s padding variantsEdward Welbourne2024-04-191-1/+1
| | | | | | | | | | | | Marc assures me this is a better way to do the job. In due course, this needs to be changed to use the locale of the datetime parser, either using QLocale's private API or once QLocale exports suitable API. Task-number: QTBUG-122619 Change-Id: I5dbb5c309198d55a9786ecbec239d085f678afb9 Reviewed-by: Marc Mutz <marc.mutz@qt.io> Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>
* QDateTime and zone code: pass types by const ref if not trivial to copyEdward Welbourne2024-04-193-3/+3
| | | | | | | | | | | QTimeZone, QTimeZonePrivate::Data and QString are all big enough to warrant passing by reference. Task-number: QTBUG-122619 Change-Id: I7f2381316e47f40dd0faac0471967162d4ee6031 Reviewed-by: Juha Vuolle <juha.vuolle@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Rym Bouabid <rym.bouabid@qt.io>
* Construct QTimeZone::OffsetData by brace-initializationEdward Welbourne2024-04-191-15/+9
| | | | | | | | | | | | | | It saves exercising its default constructor, which doesn't initialize all members, and makes for terser code. Because the type is public, we can't delete its constructor to force always brace-initializing. Since the default values we'd want to NSDMI it to require <limits>, or access to QTZP, it seemed better to just leave its default initialization alone and just never exercise it. Task-number: QTBUG-122619 Change-Id: I58d588d90080cf2f48eef2ef4b733b27bb4fba37 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Øystein Heskestad <oystein.heskestad@qt.io>
* Make QTimeZonePrivate::Data construction easierEdward Welbourne2024-04-197-72/+71
| | | | | | | | | | | | | | Turn QTZP::invalidData() into a default constructor. A second constructor taking needed details avoids exercising that default constructor elsewhere, when the invalid values aren't what we need. All constructed instances now have all members initialized. In the TZ backend, add some PosixZone helpers to create Data objects, reducing the complexity of calculatePosixTransitions(). Task-number: QTBUG-122619 Change-Id: I56557a2f6249d60012355d5d72c662474be76e51 Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>
* QTZP_TZ: make PosixZone default constructor replace its invalid()Edward Welbourne2024-04-191-7/+5
| | | | | | | | | | The type is always constructed by brace-initialization otherwise, so just NSDMI-ing its offset to InvalidOffset simplifies the handling of invalid values. Task-number: QTBUG-122619 Change-Id: Ic7173fe6572bf700bb5858a2553750023c267160 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Apply NSDMI to some internal datetime and timezone typesEdward Welbourne2024-04-193-7/+5
| | | | | | | | | | | | | | | | | | | Although parsedRfcDateTime's clients never read utcOffset unless date and time are valid, and never set them to anything valid without also setting utcOffset, let's not leave it uninitialized by default. The TZ file digester didn't actually set QTzTimeZoneCacheEntry except when setting it to true, so let's make sure it's properly initialized to false. The m_preZoneRule was initialized to all-zeros in one branch of its construction, so set it to that by default so that its default constructor leaves no member uninitialized. These types are only constructed in parsers anyway, so the minor cost of setting fields to zero is dwarfed by string manipulations. Task-number: QTBUG-122619 Change-Id: I6c57fc6d33c379af3f7c6de80c4ca47e431f9d92 Reviewed-by: Mate Barany <mate.barany@qt.io>
* QDateTime, QTimeZone: pass ShortData by value to comparisonEdward Welbourne2024-04-192-2/+2
| | | | | | | | | | | | The internal ShortData types are trivially copyable. Although their operator==()s are defined in the bodies of public API classes, they are inline and act on private member classes, so the change (technically) to a public API class should be invisible to client code, hence both source and binary compatible. Task-number: QTBUG-122619 Change-Id: I854474c02da6607e7e81aa9161ce5b5aae659f00 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QDateTimeParser: pass QCalendar by value, not by referenceEdward Welbourne2024-04-192-4/+4
| | | | | | | | | It's trivially copyable. Task-number: QTBUG-122619 Change-Id: I8fd0cdc0ad4cf09f29f1563571224785e7ecebcf Reviewed-by: Dennis Oberst <dennis.oberst@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* More consistent handling of feature timezoneEdward Welbourne2024-04-193-0/+3
| | | | | | | | | | | | | | Follow-up to commit ae6186c7e8cfdb9420b9119f5affbba7d069598d * require the feature in headers that should only be seen when it's enabled, * expose the auto-test to being run even when the feature is disabled (the parts of that depend on the feature have needed #if-ery) and * fix the Darwin-specific test's misguided #if-ery. Pick-to: 6.7 6.5 Task-number: QTBUG-108199 Change-Id: I398cf44c33ffdcb4bb04f54a9d8ccfef68741e4e Reviewed-by: Mate Barany <mate.barany@qt.io>
* Disable copy and move of QAbstractFileEngineHandlerEdward Welbourne2024-04-192-0/+4
| | | | | | | | | | | | They're not wanted and Axivion (SV71) grumbles about the lack of copy and move operators and constructors otherwise. Do the same in all derived classes. Some of these needed their default constructors made overt as a result. Similar for QAbstractFileEngineHandlerList. Task-number: QTBUG-122619 Change-Id: Iff016940f8c4884bd65dd781354b9bcda9b7cdd8 Reviewed-by: Tatiana Borisova <tatiana.borisova@qt.io> Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>
* Fix end-of-parse fixup of two-digit year in QDateTimeParserEdward Welbourne2024-04-191-2/+4
| | | | | | | | | | | | | | | | | When a date string contains day of the week, day of the month, month and two-digit year, it was still possible to get a conflicting result in the default century instead of a consistent result in the next (in fact present) century. The actual logic needed to get the right year has to take into account all date fields. This is all worked out already in actualDate(), so delegate to it instead of trying to make do with just the year info. Pick-to: 6.7 6.6 6.5 Fixes: QTBUG-123579 Change-Id: Id057128d8a0af9f3a7708d0ee173f854bb1a2a8e Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Dennis Oberst <dennis.oberst@qt.io>
* Correct handling of 'u' in CLDR date format stringsEdward Welbourne2024-04-191-1/+4
| | | | | | | | | | | It explicitly excludes having a two-digit special case like 'yy'. Correct that in qlocale_mac.mm, add support in dateconverter.py No current locale actually uses the 'u' format, so this makes no change to data. Change-Id: I16dfed2d3a7d2054b4b86f9a246bff297df9fc0a Reviewed-by: Dennis Oberst <dennis.oberst@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix handling of am/pm indicators in mapping from CLDR to Qt formatsEdward Welbourne2024-04-192-18/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | Both qlocale_mac.mm and dateconverter.py were mapping the CLDR am/pm indicator, 'a', to the Qt format token 'AP', forcing the indicator to uppercase. The LDML spec [0] says: May be upper or lowercase depending on the locale and other options. [0] https://www.unicode.org/reports/tr35/tr35-68/tr35-dates.html#Date_Field_Symbol_Table We don't support the "other options" mentioned, but we can at least (since 6.3) preserve the the locale-appropriate case, instead of forcing upper-case. As such, this change is a follow-up to commit 4641ff0f6a1b0da6f55db5e33c58a77be2032808 Changes locale data, as expected, to use "Ap" in place of "AP" in various formats in the time_format_data[] array. [ChangeLog][QtCore][QLocale] Where CLDR specifies an am/pm indicator, the case of the CLDR-supplied indicator is used, where previously QLocale forced it to upper-case. Change-Id: Iee7d55e6f3c78372659668b9798c8e24a1fa8982 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Cope with CLDR's "day period" format specifiersEdward Welbourne2024-04-192-39/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The LDML spec includes a 'b' pattern character which is like the 'a' pattern, for AM and PM, but would rather use noon and midnight indicators for those specific times. We don't support those and using am/pm will be right enough of the time to be better than simply discarding this option, if it ever gets used (which it currently isn't), so treat as an alias for 'a'. No locale in CLDR currently uses this. CLDR also has a 'B' specifiers for "flexible day periods", including things like "at night" and "in the day". At present only zh_Hant uses 'B'. As a result, this change only affects zh_Hant's formats for time and datetime, which only zh_Hant_TW uses - zh_Hant_HK overrides them to use am/pm markers and zh_Hant_MO inherits that from zh_Hant_HK. Based on this and user feed-back, I've opted to treat 'B' as another synonym of 'a'. This removes an entry from the time_format_data[] table (it happened to occupy one whole twelve-character row), causing many other locales' offsets into that table to be shifted by 12. Only zh_Hant_TW has an actual change to which entry in the table it uses. Added a test-case. [ChangeLog][QtCore][QLocale] CLDR's 'B' (flexible day period, e.g. "at night" &c.) field, not currently supported, is now handled as a synonym for the AM/PM field 'a', instead of leaving the B as literal text. Only affects zh_TW at present. Fixes: QTBUG-123872 Change-Id: I6ba008c0a048190bf7af8c7df7629a885b05804f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Tidy up macToQtFormat() in Darwin system locale backendEdward Welbourne2024-04-191-89/+86
| | | | | | | | | | | | | | | | | | | Impose standard Qt indent. Within each set of cases grouped together, impose alphabetic order. Made formatting of ranges in comments terser, for two-value ranges. Fix errors: * the 'j' field should not arise and has a 'J' partner * The 'c', 'e' and 'E' forms' numeric variants are still day of the week, so should not be mapped to 'd' or 'dd', which are day of the month. Qt date formats only actually support long and short, not narrow, despite the QLocale::Format having a NarrowFormat. Other errors and infelicities shall be addressed in later work, in tandem with changes to dateconverter.py that are coming. Task-number: QTBUG-123872 Change-Id: I61bf363d2598502f8bfc0d67245eae1b41858147 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QStringConverterICU: Pass correct pointer to callbackFabian Kosmale2024-04-191-2/+2
| | | | | | | | | | | | | | | Pass the pointer to the current state, not a pointer to a pointer to it. [ChangeLog][QtCore][QStringConverter] Fixed a bug involving moved QStringEncoder/QStringDecoder objects accessing invalid state. Amends 122270d6bea164e6df4357f4d4d77aacfa430470. Done-with: Marc Mutz <marc.mutz@qt.io> Pick-to: 6.7 6.5 Change-Id: I70d4dc00e3e0db6cad964579662bcf6d185a4c34 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* QFSFileEngine: de-duplicate some codeAhmad Samir2024-04-192-19/+15
| | | | | | | | | | | The only difference is the name of the QFileSystemEngine method each one calls. This makes subsequent commits simpler, since now only one function will need to be changed. Change-Id: I1b7d2ceeab0ad98e2ee87b3a64f100ab906f7df5 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QStringBuilder: DRY: use the Concatenable typedefThiago Macieira2024-04-181-3/+3
| | | | | | | | | Instead of repeating the full template expansion. Task-number: QTBUG-124117 Pick-to: 6.7 Change-Id: I40526efc4e93413794c3fffd17c4f9e200733660 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* QStringBuilder: DRY: simplify the if constexpr conditionals a bitThiago Macieira2024-04-181-10/+9
| | | | | | | | | | Both sides of it were calling the same appendTo(), so we can avoid repeating ourselves. This MAY fix a warning with VS2019. Fixes: QTBUG-124117 Pick-to: 6.7 Change-Id: I40526efc4e93413794c3fffd17c4f9c96ee187f9 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* QStringConverter/Doc: add more details about additional codecsThiago Macieira2024-04-181-1/+9
| | | | | | | | Fixes: QTBUG-124221 Pick-to: 6.7 Change-Id: If1bf59ecbe014b569ba1fffd17c4d113d02425eb Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* QXmlStreamWriter: fix attempts to write bad QStringsThiago Macieira2024-04-181-2/+6
| | | | | | | | | | | | | We weren't doing the decoding from UTF-16 to UTF-32, so weren't catching invalid code sequences [ChangeLog][QtCore][QXmlStreamWriter] The class now rejects writing UTF-8 and UTF-16 invalid input (improper code unit sequences). Task-number: QTBUG-122241 Pick-to: 6.5 6.6 6.7 Change-Id: I83dda2d36c904517b3c0fffd17b42d17c637fdc4 Reviewed-by: Mate Barany <mate.barany@qt.io>
* QXmlStreamWriter: decode UTF-8 into code pointsThiago Macieira2024-04-182-10/+45
| | | | | | | | | | | | | | | | | | | | | We were iterating over code *units* and that yielded wrong results. The one from the bug report was simply caused by the fact that QUtf8StringView::value_type is char, which is signed on x86, so the expression: *it <= u'\x1F' was true for all non-Latin1 content. But in attempting to fix this, I needed to do the proper UTF-8 decoding, as otherwise we wouldn't catch non-Latin1 sequences and such. [ChangeLog][QtCore][QXmlStreamWriter] Fixed a bug that caused the class to fail to write UTF-8 strings with non-US-ASCII content when passed as a QUtf8StringView. Fixes: QTBUG-122241 Pick-to: 6.5 6.6 6.7 Change-Id: I83dda2d36c904517b3c0fffd17b42bbf09a493d0 Reviewed-by: Mate Barany <mate.barany@qt.io>
* QMetaType: allow converting to/from QChar and char16_tThiago Macieira2024-04-181-0/+3
| | | | | | | | Converting from char16_t to QString was already possible, going through a QChar. Change-Id: Ie28eadac333c4bcd8c08fffd17c5a41488ea5ba6 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* QMetaType: add conversion from charXX_t to QStringThiago Macieira2024-04-181-0/+10
| | | | | Change-Id: I3c79b7e08fa346988dfefffd171f9c97384af5d0 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QDeadlineTimer: use new comparison helper macrosTatiana Borisova2024-04-183-35/+36
| | | | | | | | | | | Replace public friend operators operator==() and operator!=() of QDeadlineTimer to friend method comparesEqual(). Replace public friends operator<(),<=(),>(), etc of QDeadlineTimer to friend method compareThreeWay(). Task-number: QTBUG-120304 Change-Id: Ib855ccac9b31b54fe28b822f2985154608fefa27 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* QLogging: enable %{backtrace} support via <stacktrace>Giuseppe D'Angelo2024-04-183-8/+114
| | | | | | | | | | | | | | | | | | | C++23 gave us a standardized way to gather backtraces, so we can use it to add cross-platform support for %{backtrace}. Guard the feature via a compile test; at the moment, this is enabled it on MSVC only. GCC has experimental support (requires linking against libstdc++exp), so it will still fail the test. [ChangeLog][QtCore][QDebug] Support for the %{backtrace} expansion has been extended to the platforms supporting C++23's <stacktrace> header (such as MSVC 2022 >= 17.4). Change-Id: I04d58a193384a61e4f8e6fef78286d4bad98a025 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QItemSelectionRange: use new comparison helper macrosTatiana Borisova2024-04-183-8/+18
| | | | | | | | | | | | Replace public operators operator==(), operator!=() of QItemSelectionRange class to friend methods comparesEqual(). Use QT_CORE_REMOVED_SINCE and removed_api.cpp to get rid of current comparison methods and replace them with a friend. Task-number: QTBUG-120304 Change-Id: Ideff990c942d5ee1c89a93ac2081cc5d7067b23f Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* Port QVersionNumber to QSpanMarc Mutz2024-04-182-8/+13
| | | | | | | | | | | | | | | | | | | | | | The new ctor could replace all existing ones. However, keep the QList ctors to participate in implicit sharing, but mark them as weak overloads in order to break the ambiguity for arguments that convert to both QList and QSpan. Also keep the initalizer_list ctor because it's implicit, and should be. [ChangeLog][Potentially Source-Incompatible Changes] We have begun to port APIs to QSpan, replacing overload sets of concrete container classes. This breaks code that relied on concrete container class overloads and passed types that implicitly convert to such a container, but not to QSpan. The backwards-compatible fix is to make the conversion explicit. [ChangeLog][QtCore][QVersionNumber] Added construction from QSpan, replacing the QVarLengthArray constructor. Fixes: QTBUG-121480 Change-Id: I9be173d0471872ddc449c876465c6a01abc49ff4 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QInotifyFileSystemWatcherEngine: change to QObject::connect PMF syntaxJuha Vuolle2024-04-181-1/+2
| | | | | | Task-number: QTBUG-122619 Change-Id: I624d282791a561ebd0d70cadc9bf17594cc1eb5c Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* QNonContiguousByteDevice private classes: add Q_OBJECT macroJuha Vuolle2024-04-181-0/+3
| | | | | | Task-number: QTBUG-122619 Change-Id: If50e051d5c6eed04ed03a97f0a1dafc7b47d551e Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* QSignalMapper: change to use QObject::connect PMF syntaxJuha Vuolle2024-04-182-9/+3
| | | | | | Task-number: QTBUG-122619 Change-Id: I148e4ec77d16f62015c19c641b181e653219d132 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* QByteDeviceWrappingIoDevice: change to use QObject::connect PMF syntaxJuha Vuolle2024-04-181-1/+1
| | | | | | | Task-number: QTBUG-122619 Change-Id: I1128f2bd42ba6dc1227e62264427418ecbf80b27 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* QEmptyItemModel: add Q_OBJECT macroJuha Vuolle2024-04-181-0/+2
| | | | | | | | Task-number: QTBUG-122619 Change-Id: Ie84e13d64071d2735e0f873b26a73e476d761742 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* QDefaultAnimationDriver: change to use QObject::connect PMF syntaxJuha Vuolle2024-04-181-3/+6
| | | | | | | Task-number: QTBUG-122619 Change-Id: Ide82014e3b9803ae091be3432ba61b37a2607403 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Add preliminary support for Qt for visionOSTor Arne Vestbø2024-04-189-10/+47
| | | | | | | | | | | | | | | | | | | | | | Qt already runs on Vision Pro as "Designed for iPad", using Qt for iOS. This change enables building Qt for visionOS directly, which opens the door to visionOS specific APIs and use-cases such as volumes and immersive spaces. The platform removes some APIs we depend on, notably UIScreen, so some code paths have been disabled or mocked to get something up and running. As our current window management approach on UIKit platforms depends on UIWindow and UIScreen there is currently no way to bring up QWindows. This will improve once we refactor our window management to use window scenes. To configure for visionOS, pass -platform macx-visionos-clang, and optionally add -sdk xrsimulator to build for the simulator. Change-Id: I4eda55fc3fd06e12d30a188928487cf68940ee07 Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* CMake: Add _qt_internal_get_i18n_catalogs_for_modulesJoerg Bornemann2024-04-172-29/+37
| | | | | | | | | | | | | This function finds the translations that belong to the Qt modules that are used by the project. "Used by the project" means just all modules that are pulled in via find_package for now. This code was in Qt6CoreDeploySupport.cmake before. Now, we can call it in other places too like Qt6LinguistToolsMacros.cmake. Task-number: QTBUG-110444 Change-Id: I338d54d93cf285190b1430608b32334692ae4c07 Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* CBOR: Remove dead code: len[12] are not used with UTF-16Thiago Macieira2024-04-171-5/+0
| | | | | | | | | | | | The lengths are only needed to check if one of the two strings is empty and in the direct 8-bit comparisons with memcmp(). So we don't need this division by 2, which was here since the initial commit. Amends d4c7da9a07dc1434692fe08a61ba22c794574c4f. Pick-to: 6.7 Change-Id: Ie28eadac333c4bcd8c08fffd17c5ecbce564ccd1 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* CBOR: implement UTF16-to-UTF8 comparison without memory allocThiago Macieira2024-04-172-18/+62
| | | | | | | | | | | | This is similar to the UTF16-to-UTF16 comparison code added in commit d4c7da9a07dc1434692fe08a61ba22c794574c4f, but instead of converting to UTF-32, we convert to UTF-8 so we only need to convert one string. This change allows us to mark the entire recursive comparison sequence as noexcept. Change-Id: I5f663c2f9f4149af84fefffd17c07971d8b368cc Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* CBOR: fix the UTF8-and-UTF16 detectionThiago Macieira2024-04-171-41/+17
| | | | | | | | | | | | This isn't a bug, it just removes dead code. The code to compare US-ASCII to UTF-16 was never engaged because this conditional was wrong and effectively catching everything. Fortunately, because that comparison code is now wrong with the unit tests added to tst_QCborValue in the past few commits. Pick-to: 6.7 Change-Id: If1bf59ecbe014b569ba1fffd17c4ce184948e646 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>