summaryrefslogtreecommitdiffstats
path: root/src/corelib/global
Commit message (Collapse)AuthorAgeFilesLines
* Teach QOperatingSystemVersion to handle new OS entries in patch releasesMårten Nordheim2021-11-124-75/+197
| | | | | | | | | | | | | | Adding new entries to QOperatingSystemVersion in patch releases was previously breaking our BC guarantees because the entries are exported, thus users cannot freely switch between different patch-releases without a recompile if they adopted the new entries. Move the data itself to a base class so that the entries can be constructed inline. Task-number: QTBUG-97808 Change-Id: Ic44f07488af8a04a3bedc10bebb740c4d68f43f3 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix not respected qt.conf settingsMichal Klocek2021-11-111-6/+13
| | | | | | | | | | | | | | | | Change 6fb569af951 introduces reloadOnQAppAvailable for QLibrarySettings, however it is missing a reload check for hasPaths, this breaks essentially reading custom qt.conf Add missing check. Fixes: QTBUG-97382 Fixes: QTBUG-97383 Fixes: QTBUG-97947 Pick-to: 6.2 Change-Id: I28379d9dd38357c290edd44b93d3bea489b9cefe Reviewed-by: Alexey Edelev <alexey.edelev@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Bump WINVER, _WIN32_WINNT and _WIN32_IE to _WIN32_WINNT_WIN10 (0x0A00)Yuhang Zhao2021-11-101-18/+11
| | | | | | | | | | | And bump NTDDI_VERSION to 0x0A00000B (NTDDI_WIN10_CO) at the same time, to unblock the developers from accessing the latest Windows APIs. Pick-to: 6.2 Change-Id: Ifbc28c8f8b073866871685c020301f5f20dc9591 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* qoperatingsystemversion_win: fix thread raceMårten Nordheim2021-11-081-3/+4
| | | | | | | | | | | | If two threads call the function at the same time before the static is initialized one of them may end up with a half-written object. Amends 3fe89eec61e2c819bb54a5d3dfe4bc29dba49ff3 Pick-to: 6.2 Change-Id: Ie08970f9ee283fd75292a8b44a1fca89de4b04eb Reviewed-by: Yuhang Zhao <2546789017@qq.com> Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* Revert "QOperatingSystemVersion: Add support for Win10 sub-versions"Thiago Macieira2021-11-062-63/+0
| | | | | | | | | | This reverts commit 9568362bfe9bdbd6a67ab4bbf9fd9504d3868529 because the implementation does not use the agreed-upon solution of static constexpr (thus, inline) variables. This change needs to be re-issued after that suppotr lands. Change-Id: Ib42f3828dcbed66603adc2a699cdac2a8469b263 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QOperatingSystemVersion: Add support for Win10 sub-versionsYuhang Zhao2021-11-042-0/+63
| | | | | | | | | | | | | | Windows 10 has many sub-versions such as 1809/1903/1909/etc, currently Qt6 can only detect if the application is running on Win10 or not, which I think is not accurate enough. Different Win10 version may introduce different features and bugs, the developers will have to know the exact version. Only give a general Win10 as an answer is not ideal. I think Qt should add variables for these sub-versions. Change-Id: I772d25a528ee2f8a4afba314d701142a06c718f9 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* qlibrary.cpp: avoid the +12 constant in too many placesThiago Macieira2021-11-031-1/+1
| | | | | | Pick-to: 6.2 Change-Id: I2bbf422288924c198645fffd16a9a5f99bf9499e Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* qlibraryinfo.cpp: use qOffsetStringArray for qtConfEntriesThiago Macieira2021-11-031-37/+35
| | | | | | | | | | Beats a manual array with too wide strings. I thought even to simply replace this with a switch (loc)... it's not like this is performance-critical code, given it uses QString. Change-Id: I2bbf422288924c198645fffd16a977778ff8d52d Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* qoperatingsystemversion_win: cache the retrieved versionYuhang Zhao2021-11-021-6/+8
| | | | | | | | | | Make it a static variable to avoid acquiring the system version multiple times. The system version won't change at runtime after all. Pick-to: 6.2 Change-Id: Ic381e5dd7b482fedc9c01242482559ffca9d3f2b Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Remove pre-Win10 code paths in QtBaseYuhang Zhao2021-11-021-5/+2
| | | | | | | | | | | | | | Mostly a removal of dynamically loaded API. They should all exist on Windows 10 1809 (Qt6's minimum supported version). accessibility parts left untouched to make sure MinGW still compiles. Task-number: QTBUG-84432 Pick-to: 6.2 Change-Id: I7a091fc967bd6b9d18ac2de39db16e3b4b9a76ea Reviewed-by: André de la Rocha <andre.rocha@qt.io>
* qconfig.cpp: use qOffsetStringArrayThiago Macieira2021-10-292-19/+16
| | | | | | | | | | It's been there for ages, we may as well use it and remove unnecessary complexity from CMake. Pick-to: 6.2 Change-Id: I2bbf422288924c198645fffd16a9742567a7e4af Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* qglobal.h: Do not include <algorithm>Fabian Kosmale2021-10-291-2/+0
| | | | | | | | | | | | | | | | algorithm is a rather heavy header, so we do not want to include it everywhere. It most likely was put into qglobal, because before C++11, swap could be found there. However, since C++11 it is located in <utility>, which we already include. Thus drop the superfluous include. [ChangeLog][QtCore][Potential source breaking change] The <algorithm> header is no longer transitively included with qglobal.h. If you used functionality from that header and relied on the transitive include, you will now need to explicitly add the header. Change-Id: Idc1912956b483d313dafd61b8f6a49d60eed8d3c Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix -trace build on WindowsIvan Solovev2021-10-251-1/+1
| | | | | | | | | | | | | | | | | | | | | | The TraceLoggingValue template does not have overloads for Qt types, so it was throwing multiple template instantiation errors while trying to log the unknown types. Fix it by serializing such types to QString using QDebug::toString, and the logging this string. Apart from that, fixes some other compiler errors on Windows build with -trace enabled: - implicit size_t to ULONG conversion - complaints on std::min - add QT_BEGIN_NAMESPACE/QT_END_NAMESPACE to the generated *_tracepoints_p.h headers to fix the namespace build. Task-number: QTBUG-97246 Fixes: QTBUG-97241 Pick-to: 6.2 Change-Id: Ifba134bab8d7fda7f1e30da9938e25cae813e1c6 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Update windows version detectionMårten Nordheim2021-10-241-1/+11
| | | | | | | | Since the API still doesn't return 11. Pick-to: 6.2 5.15 Change-Id: Ifd4f7f845915702fcbb0f857487358ae8e806273 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Move the ABI tag from minimum-linux.S to qlibraryinfo.cppThiago Macieira2021-10-213-94/+44
| | | | | | | | | | | | | | | We don't need the assembly file any more. According to a comment to patchsets 2 in the Gerrit code review for commit bb8a61866ec6a6de2426012f8c4219d41b3a414a, the section ended up as SHT_PROGBITS instead of SHT_NOTE. I didn't know then that the section type is not actually important, only whether it's present in the segment pointed by a PT_NOTE is. That isn't recorded in the review. Since we now depend on the linker properly placing the .note.* sections for Qt plugins, we can rely on this working. Change-Id: Icb2516126f674e7b8bb3fffd16ad659149e34a23 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Q_GLOBAL_STATIC: suppress warning about expressions in noexcept()Thiago Macieira2021-10-181-1/+4
| | | | | | | | | | | | | | We use a simple statement to try and mark the holder as noexcept and that works for most cases (but not all). It triggers a warning when the expression is complex, though, like this in qlocale.cpp: Q_GLOBAL_STATIC_WITH_ARGS(QSharedDataPointer<QLocalePrivate>, defaultLocalePrivate, (new QLocalePrivate(defaultData(), defaultIndex()))) Pick-to: 6.2 Change-Id: Iea05060bc2c046928536fffd16adf4be6126d039 Reviewed-by: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Deduplicate lastWindowClosed handlingTor Arne Vestbø2021-10-161-4/+4
| | | | | | | | | | | | | | | | | | | | | | | Whenever a window was closed, we had logic to check if it was the last window, and if so emitted lastWindowClosed and then tried to quit the application. But the automatic quit process also checked if there were any remaining windows, as this process could be triggered as a result of a QEventLoopLocker going out of scope. The two paths now share the same logic for determining if there are any remaining windows. The docs have been updated to reflect the original intent of the logic, dealing only with primary windows (top levels without a transient parent). This was how both the original code paths implemented their logic. For historical reasons the Qt::WA_QuitOnClose attribute is closely tied to the lastWindowClosed signal, and isn't merely limited to controlling whether we try an automatic quit when the last window closes. For now this behavior has been kept, but the docs have been updated to clarify how the attribute is handled in practice. Change-Id: If3d06b065236aad2e59e9091cac3146bc4cf79f6 Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Remove zlib from bootstrap libraryJoerg Bornemann2021-10-161-0/+2
| | | | | | | | | None of the bootstrapped tools use zlib anymore. Change-Id: I2cd7cb855ed671916a21c23449d9b6c4506f8546 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* qtlogging: Document QT_MESSAGELOGCONTEXT defineKevin Funk2021-10-141-1/+5
| | | | | | | | | | Document it here to let people know about the pitfalls with some placeholder values. Link the QMessageLogContext class doc for more information. Pick-to: 6.2 Change-Id: I8e7b4c0dcb8bceeeee645664c98e63ae7ca7e854 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* CMake: Make LTO build workThiago Macieira2021-10-131-1/+0
| | | | | | | | We don't need to check FEATURE_ltcg, just add -fno-lto unconditionally. That makes QtCore compile with -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON. Change-Id: Icb2516126f674e7b8bb3fffd16ada2c71d7334aa Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* qfloat16: re-merge the F16C content into qfloat16.cppThiago Macieira2021-10-132-101/+29
| | | | | | | | | The bugs we had noticed previously are believed to be fixed. MSVC will do per-function updating of AVX content where necessary and the ICC issue is no longer relevant. Change-Id: I2bbf422288924c198645fffd16a9235f2d73cc19 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Add suffixes to loop variables for Q_FOREACHIevgenii Meshcheriakov2021-10-131-4/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently using nested Q_FOREACH loops produces warnings about shadowing local variables (if enabled). For example, this code: QList<int> aList; QList<int> bList; foreach (int a, aList) { Q_UNUSED(a); foreach (int b, bList) Q_UNUSED(b); } produces the following warning with MSVC: warning C4456: declaration of '_container_' hides previous local declaration This is due to using variable _container_ as loop variable for both loops. This patch appends current line number to the name of the loop variables so that most of the uses of Q_FOREACH will not result in shadowing. The patch originally by Benoit Regrain. Fixes: QTBUG-79081 Pick-to: 5.15 6.2 Change-Id: I55235e917e920171b138c8b3239a95dfe2ac7988 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* corelib: Fix typos in documentationJonas Kvinge2021-10-122-3/+3
| | | | | | Pick-to: 5.15 6.2 Change-Id: I64d63af708bc6ddaabd12450eb3089e5077f849e Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* corelib: Fix typos in source code commentsJonas Kvinge2021-10-127-11/+11
| | | | | | Pick-to: 6.2 Change-Id: Ic78afb67143112468c6f84677ac88f27a74b53aa Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* qconfig.cpp: Remove the install dateThiago Macieira2021-10-111-2/+0
| | | | | | | | | It's not used anywhere. It's been a legacy since 5.0 anyway. Pick-to: 6.2 Change-Id: I2bbf422288924c198645fffd16a9740444c7f13b Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* wasm: add simd supportLorn Potter2021-10-052-1/+8
| | | | | | | | | | | | | | | | | | Emscripten only supports SSE1, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, and 128-bit AVX instruction sets at this time. https://emscripten.org/docs/porting/simd.html Browsers might need to enable simd support in the advanced configurations about: config or chrome:flags Enable by configuring Qt with -sse2 Pick-to: 6.2 Fixes: QTBUG-63924 Change-Id: Ifeafae20e199dee0d19689802ad20fd0bd424ca7 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* Fix __cpp_lib_hypot related error when building in macosAlexey Edelev2021-10-051-1/+1
| | | | | | | | | | | | | | | If __cpp_lib_hypot is undefined in macos you may observe the error: error: '__cpp_lib_hypot' is not defined, evaluates to 0 [-Werror,-Wundef] Adding the explicit check for definition suppresses the warning that is treated as an error. Change-Id: Ie4c185fefde2f5bab699d8fc79b6a170e64af393 Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> Reviewed-by: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>
* Fix reference to quitOnLastWindowClosed in WA_QuitOnClose docsTor Arne Vestbø2021-10-041-1/+1
| | | | | | | | The property is nowadays on QGuiApplication. Pick-to: 6.2 Change-Id: I8759761b08b0cdcef786ca96a7fa6364331f157d Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Remove checks for features available in C++17Ievgenii Meshcheriakov2021-10-021-10/+2
| | | | | | | | | | This patch removes most of the checks that are made using C++20 __cpp_* macros for features available in C++17 and earlier. Library feature check macros (__cpp_lib_*) are unaffected. Change-Id: I557b2bd0d4ff09b13837555e9880eb28e0355f64 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Purge Q_NO_TEMPLATE_FRIENDS and platforms lacking support for themFabian Kosmale2021-10-021-32/+0
| | | | | | | | | | Given that we rely on C++17, it should be safe to mandate that level of language support. Change-Id: If07ccb36bea2a5113a8f5aacf635be7d2590baf7 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* MSVC: enforce that we are under /permissive-Giuseppe D'Angelo2021-09-291-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | MSVC defaults to a C++ dialect which is not standard-compliant. For a number of years, it has offered a switch (/permissive-) to enable standards conformance, but it was entirely opt-in. While we do build (and test) Qt under /permissive-, our users do not necessarily do that for their own software. Meaning, we risk subtle bugs and build issues for the code present in our headers (because users may use them in non-/permissive- mode). This has already happened multiple times (QTBUG-95880, as well as 19b5520abfb5f66d4b83c7a18cc72d68673d098a). So far, we couldn't *enforce* /permissive- for client code, as MSVC didn't deem it stable, and various SDKs (like Windows') were not even building under it. This has now changed. /permissive- is now deemed fully stable and supported, and turned on by default when using /std:c++20 (since VS 2019 16.11 [1]). So, starting from 6.3, we can now pretend its presence. Unfortunately /permissive- does not set any special macros for us to test [2], so test one of its side-effects: that an implicit conversion from std::nullptr_t to bool is ill-formed (the conversion is explicit). [1] https://devblogs.microsoft.com/cppblog/msvc-cpp20-and-the-std-cpp20-switch/ [2] https://developercommunity.visualstudio.com/t/Pre-define-a-macro-when-compiling-under/1253982?space=62&q=permissive-+sfinae&entry=myfeedback [ChangeLog][Platform Specific Changes][Windows] When using MSVC Qt now requires standards compliance mode. This requires passing the /permissive- command line switch. Note that when using C++20 or above, the /permissive- switch is implied by default. Change-Id: I464ed36ff707fa3ada52c543433a6b0ab715748e Reviewed-by: Kai Koehne <kai.koehne@qt.io>
* Add private qAbort helper functionTor Arne Vestbø2021-09-223-25/+35
| | | | | | | Used from qt_message_fatal(), but is useful in other situations too. Change-Id: I3c0e438536d40271061c76d954c7878abfe37b8e Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* tst_qmetatype: Fix operator< detection for std::optionalFabian Kosmale2021-09-211-0/+2
| | | | | | | | | | Amends ca54b741d6edda24773137aacee229db31dd3585. operator< is not constrained in MSVC's standard library, either. Pick-to: 6.2 Fixes: QTBUG-96690 Change-Id: Ibcbb9e53a1f9e8b13786f6d8c01489c61d8d2d7f Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Improve version-related docs in qglobal.cppEdward Welbourne2021-09-211-21/+23
| | | | | | | | | | Give a more pragmatic illustration for QT_DEPRECATED_BEFORE. Make various minor tweaks to wording, use slightly less antique versions in examples. Make usage of "runtime" standard in qglobal.cpp, at least, since "run-time" seems to be less used generally. Change-Id: I1db4950d0d0e97903b1586d98ecba75576493b1c Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix assorted misindented end-comment markers in qglobal.cppEdward Welbourne2021-09-201-14/+14
| | | | | | Change-Id: I240e7d32c4aa004f2bd7dd8cafd39b7c7d64e014 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
* Encourage use of QT_VERSION_CHECK()Edward Welbourne2021-09-202-13/+23
| | | | | | | | | | | | Document that QT_VERSION should normally be compared against it, rather than raw hex, and mildly update the example versions used in docs. (Left the snippets testing old version, since the code in which the #if-ery is used might actually make sense for those versions.) Improve related documentation in the process. Change-Id: Id3e97f41bfb0f81a117cf7b3a3ccd5f244e2a99a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Remove conditioning on Android embeddedEdward Welbourne2021-09-173-8/+8
| | | | | | | | It is no longer handled separately from Android. This effectively reverts commit 6d50f746fe05a7008b63818e77784dd0c99270a1 Change-Id: Ic2d75b8c5a09895810913311ab2fe3355d4d2983 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* Doc: Update some links to Microsoft's documentationLuca Di Sera2021-09-131-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The documentation links on `msdn.microsoft.com` and `msdn2.microsoft.com` now redirect to `docs.microsoft.com`. Some of the links in the documentation were to those domains. In particular: - An `\externalpage` link to the `Mitigating Cross-site Scripting With HTTP-only Cookies` article. - An `\externalpage` link to `Microsoft Actibe Accessibility Event Constants` - A link to the `RtlGetVersion` function in `qoperatingsystemversion.cpp` - A link to the `GetCommandLine` function in `qcoreapplication.cpp` - A link to the `KNOWNFOLDERID` constant in `qfiledialog.cpp` While the redirection works, our script to catch broken links on dev-snapshots builds of the documentation doesn't handle redirection correctly, reporting it as broken. Both to appease the broken-links script and to avoid an unneccesary redirection, the above links were modified to point to the equivalent address in the new domain. Task-number: QTBUG-96127 Pick-to: 6.2 Change-Id: I0e9a132f06af7fc43bca6c8ad2054feb6e3e27cd Reviewed-by: Paul Wicking <paul.wicking@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 compilation for recursive Qt containersSona Kurazyan2021-09-071-0/+17
| | | | | | | | | | | | | | | | | | | | 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>
* Use QByteArrayView::toInt() instead of duplicating its implementationEdward Welbourne2021-08-311-31/+2
| | | | | | | | | | The code in qEnvironmentVariableIntValue() to parse the text as an int can now delegate it to QByteArrayView, so that keeping in sync with QByteArray::toInt(), as a comment requested, is now automatic. Change-Id: I09a6b7245ecd02f39a850a4ce187f86709282e8c Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Convert various callers of strtou?ll() to call strntou?ll()Edward Welbourne2021-08-301-2/+4
| | | | | | | | Where size is known or can readily be determined. Change-Id: I442e7ebb3757fdbf7d021a15e19aeba533b590a5 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Doc: Fix documentation issues for Qt CoreTopi Reinio2021-08-241-1/+1
| | | | | | | | | | | | | | * Tag deprecated Q(Multi)Map operators in the header to correctly match them with documentation \fn commands. * Add documentation for QByteArrayView comparison operators. * Add a dummy typedef 'jfieldID' for generating docs correctly on non-Android platforms * Fix other minor issues Pick-to: 6.2 Task-number: QTBUG-95860 Change-Id: I141d2f75d6aa10557aa374201f09ad74b4cd6e81 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Add note about ImCursorPosition/ImAbsolutePosition not including preeditTor Arne Vestbø2021-08-211-2/+5
| | | | | | | | | | | | The cursor position as reflected by these two properties is not affected by the offset of the cursor in the preedit area. That means that when composing text, the cursor position stays the same, at the preedit insertion point, regardless of where the cursor is positioned within the preedit string by the QInputMethodEvent::Cursor attribute. Pick-to: 6.2 Change-Id: Ic2584369f92271e3f242d51f2e647f6f05c72d53 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Forward declare Objective-C classes as class, not typedef objc_objectTor Arne Vestbø2021-08-171-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Forward declaring an Objective-C class in Objective-C/C++ mode is done by using the `@class` syntax, e.g.: @class NSString; In C/C++ mode however there's no documented approach, so we chose to flatten the type down to the opaque objc_object "base class": typedef struct objc_object NSString; As it turns out, when Objective-C classes are used as arguments or return types in C++, the signature they produce is equal to what it would have been if the type was a normal class. For example: void foo(NSString *) -> __Z3fooP8NSString The is due to @class in Objective-C++ just being just sugar, so an NSString pointer is not treated as `struct objc_object *` but rather a pointer to a distinct type, which then gets mangled as such by LLVM's Itanium mangler in CXXNameMangler::mangleType(const ObjCObjectType *T). With our current forward declaration however, we are expecting: void foo(NSString *) -> __Z3fooP11objc_object As a consequence exported helper functions such as QString::fromNSString() are not possible to use from plain C++ right now, as it will give a linker error for the missing QString::fromNSString(objc_object*) function. And even if we did define the extra signature, it would not be possible to declare overloaded functions taking Objective-C classes, as they would all produce ambiguous overloads in C++ mode. To fix this we change the forward declaration to a plain old class, which matches the signature in both Objective-C++ and plain C++ mode, and allows overloads. This is a binary compatible change, as no client were using any of these functions from C++ anyways as they would have produced linker errors. It does have a slight source compatible break, for clients that manually forward declared classes using the old style, but that use-case is deemed fringe enough to accept, and clients can work around this by defining Q_FORWARD_DECLARE_OBJC_CLASS to their preferred format, which Qt will respect. Pick-to: 6.2 Change-Id: I04813c60a7da22379dd9de1be56cc12c53a38232 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Short live namespace q20!Marc Mutz2021-08-162-0/+196
| | | | | | | | | | | | | | | | | | | | | | | | | | As proposed already for Qt 5 (then with q14 and q17), add reimplementations of C++20 library features into a q20 namespace. The advantage is that we can later just s/q20::/std::/ and be sure that a) the q20 functionality works (within reason) like the std counterparts and b) we don't have to re-indent the code after the replacement. Start with std::identity in q20functional.h, required by std::ranges::{any,all,none}_of() (ex ranges[1]) in q20algorithm.h, which I happen to require in QLibrary next. [1] We can't provide the nice range-based overloads (any_of(vector, pred)), yet, because that would require to reimplement all the range-related concepts, as the overloads are ambiguous if unconstrained. First, we should check whether we can't just depend on Nieber's ranges-v3 library instead. The q20 namespace is independent of this decision, as it's more universally useful (q20::remove_cvref comes to mind). Unlike in q14/q17 times, a single header, q20.h, would become unwieldy very soon, so use separate headers. Change-Id: I14b98c865e242d2dc9674bc1bff5f7a9e4db9940 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Add default constructor and Q_DISABLE_COPY_MOVE to native interfacesTor Arne Vestbø2021-08-101-0/+2
| | | | | | | | | | We currently define a non-default destructor, but without defining a constructor, copy constructor, copy assignment operator, move constructor, or a move assignment operator Pick-to: 6.2 Change-Id: I0dcaef61d86292df5963fac410d22cb3fcf12af3 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Improve documentation signature for native interface accessorTor Arne Vestbø2021-08-101-0/+6
| | | | | | | Pick-to: 6.2 Change-Id: I8fd0633fb993cf1544a1fd5d897fe59f8687705a Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Qt namespace: add a Qt 7 note about enumerator orderMarc Mutz2021-08-061-0/+1
| | | | | | | | | | | | | LayoutDirectionAuto is the default in qguiapplication.cpp's layout_direction. Because the numeric value isn't zero, it forces the variable into the DATA segment instead of the more efficient BSS one. At a less technical level, LayoutDirection{} should really produce the default, Auto, instead of LeftToRight. APIs have been changed for lesser violations of inclusivity :) Change-Id: I06b42f0bc00ea539805280ef0aa9694e6d739f41 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QLibraryInfo: Add MSVC 2022Mårten Nordheim2021-08-031-1/+3
| | | | | | | Pick-to: 6.2 6.1 5.15 Change-Id: Ie66effde6832152ee2903c467269a2822ded6653 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>