summaryrefslogtreecommitdiffstats
path: root/src/corelib
Commit message (Collapse)AuthorAgeFilesLines
* Make QLocale(QString) explicitLars Knoll2020-04-012-3/+3
| | | | | | | | We should not implicitly convert a QString to a QLocale object. It can easily create unwanted side effects. Change-Id: I7bd9b4a4e4512c0e60176ee4d241d172f00fdc32 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* QFuture - add ability to move results from QFutureTimur Pocheptsov2020-03-316-25/+223
| | | | | | | | | | | | | | | | | | | | | | | | | | | | QFuture's original design pre-dates C++11 and its introduction of move semantics. QFuture is documented as requiring copy-constructible classes and uses copy operations for results (which in Qt's universe in general is relatively cheap, due to the use of COW/data sharing). QFuture::result(), QFuture::results(), QFuture::resultAt() return copies. Now that the year is 2020, it makes some sense to add support for move semantics and, in particular, move-only types, like std::unique_ptr (that cannot be obtained from QFuture using result etc.). Taking a result or results from a QFuture renders it invalid. This patch adds QFuture<T>::takeResults(), takeResult() and isValid(). 'Taking' functions are 'enabled_if' for non-void types only to improve the compiler's diagnostic (which would otherwise spit some semi-articulate diagnostic). As a bonus a bug was found in the pre-existing code (after initially copy and pasted into the new function) - the one where we incorrectly report ready results in (rather obscure) filter mode. Fixes: QTBUG-81941 Fixes: QTBUG-83182 Change-Id: I8ccdfc50aa310a3a79eef2cdc55f5ea210f889c3 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Android: Update minimum version to 23 againEskil Abrahamsen Blomfeldt2020-03-301-1/+1
| | | | | | | | | | | | In 519ea72108fae7f5c4ed7c3e9fed3a999a16ed73, the minimum SDK version was moved away from the AndroidManifest.xml, and when the change was merged, we lost parts of the update to set the minimum version to 23. This redoes it in the remaining locations. Change-Id: Iada8188d3c0c8ec0a4801c1d219640ecb3976753 Reviewed-by: BogDan Vatra <bogdan@kdab.com>
* Make MatchRegExp an alias to MatchRegularExpressionLars Knoll2020-03-303-11/+3
| | | | | | | All matching happens using QRegularExpression now. Change-Id: I10bfcefbf4d9c79d235242e3e05116cdf7af02d1 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Remove QRegExp dependencies and mentionsLars Knoll2020-03-302-1/+2
| | | | | Change-Id: I399f8980f56eda5d60b554aa942bf045ab91e0d6 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Extend the configure test for C++17 filesystemMartin Storsjö2020-03-302-2/+8
| | | | | | | | | | | | | | If recent versions of libc++ are built with filesystem support disabled, the filesystem header still is installed., The std::filesystem::path() constructor is completely defined inline in that header, making the test pass on such configurations, despite C++17 filesystem not being implemented. Test a call to std::filesystem::copy instead, which requires the actual library implementation to be available as well (on recent libc++). Change-Id: Id997ab75f3299d8431b13cad871f2901f4d9f6ed Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Revert "QMetaType: support manual unregistration"Simon Hausmann2020-03-273-17/+0
| | | | | | | | | This reverts commit cf000d080c61cde44bd84e53ee018f36e33b7257. Reason for revert: This API is not needed (anymore) by qtdeclarative. Change-Id: I8af604c2babe3afc11f183ddb3ce3a9038a456ad Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Make QPropertyBindingPrivate accessible to QtQmlSimon Hausmann2020-03-276-38/+61
| | | | | | | | | | | | | | | | | | QtQml needs the private just for one detail which nobody else should need it for: Tracking additional dependencies and marking the binding as dirty. Exporting the private requires hiding some variables and providing accessors, to compile with MSVC - including the removal of QVarLengthArray usage. Upside: The binding structure shrinks by 8 bytes and the encapsulation makes it a little easier to change things without breaking declarative, ... in the unlikely event ;-) Also remove setDirty() from the public API as it's not needed by QtQml and using it is dangerous, because it means that there's a risk of somebody keeping a reference (count) to the untyped binding from within the binding closure, which introduces a memory leak. Change-Id: I43bd56f4bdf218efb54fa23e2d627ad3acfafeb5 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Speed up QSortFilterProxyModel filteringChristian Ehrlicher2020-03-271-8/+11
| | | | | | | | | | Speed up the QSortFilterProxyModel filtering by only updating the source_to_proxy entries which are really changed - When proxy intervals are added or removed, it is not needed to update the proxy_to_source indexes which were not touched. Change-Id: I35459ff1b04f4610ec74f4b01d58a71832a9ae22 Reviewed-by: David Faure <david.faure@kdab.com>
* Add a public qsimd.h headerLars Knoll2020-03-265-22/+161
| | | | | | | | This header only covers a part of what qsimd_p.h does, namely the compile time detection of simd extensions. Change-Id: I05f1d987f194a5bec335f2405cc2846fbaa88b66 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Move qsimd* from corelib/tools to corelib/globalLars Knoll2020-03-268-4/+82
| | | | | | | | | | | It's not used in tools at all and fits a lot better in global. Also fix the qsimd_x86* files to have a proper copyright header. Change-Id: Id3d8e7cfcd7769a1ca9f3d8cf6d357a31a99ba40 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Make QCborValue::toCbor() constLars Knoll2020-03-252-4/+4
| | | | | | | | Those methods don't modify the CBOR value, they should be const. Change-Id: I213984ed82e43429413344999a22ad1c4c3beac8 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QMetaType: Do copy constuctible check at compile timeFabian Kosmale2020-03-251-1/+1
| | | | | Change-Id: I2f6a9bbaa0153fa33fc6a0b68bcedfbe3b9b1a7c Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QMetaType::fromType: support classes with inaccessible dtorsFabian Kosmale2020-03-251-1/+4
| | | | | Change-Id: I60a1b2496d48651a8166173b420da37f59d7a395 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Don't call QSet::erase() on an end iteratorLars Knoll2020-03-251-1/+3
| | | | | | | | hash.erase(hash.constFind()) is bound to crash if the hash doesn't contain the item we're looking for. Change-Id: Icbefca87b0258970373ec55d5dc113e6ab39c5f0 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Remove QSignalMapper::mappedWidget()Lars Knoll2020-03-252-43/+2
| | | | | | | | | | | | | | mappedObject() can do exactly the same thing, there's no need for a mappedWidget() signal as well This removes a reverse dependency between Qt Widgets and Qt Core where QWidget pointers are being used inside Qt Core. [ChangeLog][QtCore] Removed QSignalMapper::mappedWidget. Connect to mappedObject instead, and use qobject_cast<QWidget *> to handle Widgets. Change-Id: I60618a34dd94575e993bd6d8a2cead95cfd71d55 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Remove qt6_use_modulesKai Koehne2020-03-251-46/+0
| | | | | | | | | | | qt5_use_modules has been deprecated in 2013 (commit d9ea4bb144153) and removed for the first time in 2018, but then brought back - see discussion in https://lists.qt-project.org/pipermail/development/2018-June/032837.html . Anyhow, I think we can finally put it to a rest in Qt 6. Change-Id: I770f7e93406ad68535d1d90e4a3bacfb920e2d5a Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Q{File,FileInfo,Dir}: add std::filesystem::path overloadsMårten Nordheim2020-03-246-5/+380
| | | | | | | | | | | | | | | | | | | | Add some overloads where (I thought) it makes sense for QDir and QFile to accept std::filesystem::path objects. Currently my thinking is to not add overloads for static functions where std::filesystem can already do the same job, e.g. create directory or file. Template and enable_if is needed due to both QString and std::filesystem::path being able to be constructed from string literals. The common shared code is currently in QFile because QDir had an implicit include of QFile, made explicit in this patch, and QFileInfo has an include to QFile as well. The QT_HAS_STD_FILESYSTEM macro is visible in user-code which I currently take advantage of in the tests, and users could too. Change-Id: I8d05d3c34c6c17e20972a6a2053862b8891d6c3c Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Make QFuture::d privateSona Kurazyan2020-03-231-2/+10
| | | | | | Change-Id: I5820fa1d6d0f003a7cb95db115ef90b32f380a79 Reviewed-by: Vitaly Fanaskov <vitaly.fanaskov@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Clean-up the duplicate code in QFuture and QFutureWatcherSona Kurazyan2020-03-233-135/+69
| | | | | | | | | | | | QFuture<void> and QFutureWatcher<void> are specialized to not contain any of result fetching methods, but otherwise they share almost the same implementation with QFuture<T> and QFutureWatcher<T> respectively. This change unifies their implementations to get rid of unnecessary code duplication. Change-Id: I9494ddc58c6db192c66edb988105927da6d61a3b Reviewed-by: Vitaly Fanaskov <vitaly.fanaskov@qt.io>
* CMake: Fix metatype file generation not to happen in the source dirAlexandru Croitor2020-03-231-0/+7
| | | | | | | | | | | | | | | | | When building qtdeclarative in a non-prefix configuration, metatypes.json files were created in the source dir. This happened because the default arg_INSTALL_DIR value is relative in qt6_generate_meta_types_json_file, and thus a file(TOUCH) with a relative path creats it in the source dir. The fix is to check if it's relative during a non-prefix build, and make it absolute (relative to the install prefix, which is the qtbase build dir). Change-Id: Ie9abbd5d93a64e79184d77655d8d8399e894fde5 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Leander Beernaert <leander.beernaert@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Change QTaggedPointer API to be more similar to other smart pointers in QtSimon Hausmann2020-03-193-11/+11
| | | | | | | * Rename pointer() to data() Change-Id: I8ef3e552d45c9990fee4b7efa98e2d878ed2cf98 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Fix warnings when building with MSVC2017Mitch Curtis2020-03-192-3/+4
| | | | | | | | | | | qstring.cpp(10210): warning C4267: 'argument': conversion from 'size_t' to 'uint', possible loss of data qcontiguouscache.h(141): warning C4003: not enough arguments for function-like macro invocation 'max' Change-Id: I01f1fc1c85341ea61c86dcffb1b01fe4cde50eea Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Add documentation for QTaggedPointerSimon Hausmann2020-03-192-8/+214
| | | | | | | | The class remains \internal though, as it has a very narrow use-case for low-level code inside Qt. Change-Id: I9d2b6486ce29b290af7f930a0bfc78590a83cc01 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Use QTaggedPointer in QPropertyObserverSimon Hausmann2020-03-195-81/+73
| | | | | | | | | | This replaces the private tagged pointer and the use of enums for the tag makes the observer handling code more readable. The pointer-to-tagged-pointer class remains in qpropertyprivate.h due to its exoticness. Change-Id: Icc88799136c6839426d994b42368526463265e66 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Add support for explicitly marking a property as dirtySimon Hausmann2020-03-192-0/+9
| | | | | | | | When a binding is backed by old-style property captures, then having this API is needed for Qml. Change-Id: Icf51efe057eaf845969ed2cda52d082dedde677e Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Enable generic property bindings to QProperty<T>Simon Hausmann2020-03-194-13/+68
| | | | | | | | | | A generic binding allows implementing the binding function in a way that enables the QML engine to run binding scripts and convert the V4::Value into a QVariant and then assign the value to the property with the help of QMetaType::construct. Change-Id: Id4807be92eee7e3501908e6c5e4c861cfcb7772a Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* CMake: Regenerate projects after harfbuzz-ng macOS adjustmentAlexandru Croitor2020-03-181-1/+1
| | | | | | | | Amends 21c242f9fd27523d0016b821d0a962231c4bafa6 Change-Id: I1041d27d2ab764950b574ff729d987b5efe5f2fe Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Remove garbageLars Knoll2020-03-181-1/+1
| | | | | Change-Id: Ie0b891b9e9c6d12d8684c85a7717d0828fcf1c0c Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Merge "Merge remote-tracking branch 'origin/5.15' into dev"Qt Forward Merge Bot2020-03-182-9/+29
|\
| * Merge remote-tracking branch 'origin/5.15' into devQt Forward Merge Bot2020-03-182-9/+29
| |\ | | | | | | | | | Change-Id: Ia79c2457f20f3428ef1b4358c1094e8dc1bbc33e
| | * Update Unicode license for CLDR and UCDEdward Welbourne2020-03-171-2/+17
| | | | | | | | | | | | | | | | | | Task-number: QTBUG-82747 Change-Id: I6bbecaf3f0a8f8e7e0ad31074d88dea7ec98dff2 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
| | * Fix memory leak on new QThreadPool::tryStart versionAllan Sandfeld Jensen2020-03-171-7/+12
| | | | | | | | | | | | | | | | | | | | | | | | Also documents the ownership of the traditional tryStart better, and remove a redundant check. Change-Id: I06202465b782926724fa33a901d08c1626f87373 Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
* | | Add support for exposing public QProperty members in the meta-object systemSimon Hausmann2020-03-184-1/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | At the moment this makes the type as well as the setter/getter available through the meta-call as well as the ability to register observers and bindings. Only QProperty members that are annotated with Q_PROPERTY(type name) are made public through the meta-object. Change-Id: I16b98fd318122c722b85ce61e39975284e0c2404 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* | | Add a way to filter only rows or columns in QSortFilterProxyModelGiulio Camuffo2020-03-182-16/+75
|/ / | | | | | | | | | | | | | | | | | | | | | | | | If we want to filter away a column without changing the filtering for the rows calling invalidateFilter() is wasteful because it will call filterAcceptsRow() for all rows even though that is not needed. This commit add two functions, invalidateRowsFilter() and invalidateColumnsFilter() that work the same way as invalidateFilter() except that they will invoke respectively only filterAcceptsRow() and filterAcceptsColumn(). Change-Id: Ib4351cf08c229bd97bbbfee6da92397dca579a84 Reviewed-by: David Faure <david.faure@kdab.com>
* | Make it possible to use QTaggedPointer within classesSimon Hausmann2020-03-171-12/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | A common pattern in declarative is to use the unused bits in linked list next pointers for additional information storage. The "next" pointer is typically then a tagged pointer of the containing class, which is not fully defined yet. Therefore alignof() can't be used at tagged pointer instantiation time. This patch delays the calls to alignment, etc. until the corresponding functions are used, as in principle the tagged pointer is just a quintptr and no additional information should be needed until operating on it. Change-Id: I87a3578ee921d471e1b60ed5903b549ef0610b97 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* | Property binding system: Fix developer build with MSVC 2019 (16.4.1)Friedemann Kleint2020-03-172-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Fix wrong forward declaration - De-inline constructor of QUntypedPropertyBinding(), fixing: qtbase\include/src/corelib/tools/qshareddata.h(184): error C2027: use of undefined type 'QPropertyBindingPrivate' qtbase\include/src/corelib/kernel/qpropertyprivate.h(60): note: see declaration of 'QPropertyBindingPrivate' qtbase\include/src/corelib/tools/qshareddata.h(184): note: while compiling class template member function 'QExplicitlySharedDataPointer<QPropertyBindingPrivate>::~QExplicitlySharedDataPointer(void)' qtbase\src\corelib\kernel\qproperty.h(143): note: see reference to function template instantiation 'QExplicitlySharedDataPointer<QPropertyBindingPrivate>::~QExplicitlySharedDataPointer(void)' being compiled qtbase\src\corelib\kernel\qproperty.h(142): note: see reference to class template instantiation 'QExplicitlySharedDataPointer<QPropertyBindingPrivate>' being compiled qtbase\include\/src/corelib/tools/qshareddata.h(184): warning C4150: deletion of pointer to incomplete type 'QPropertyBindingPrivate'; no destructor called qtbase\include\/src/corelib/kernel/qpropertyprivate.h(60): note: see declaration of 'QPropertyBindingPrivate' Amends 9f9049b486a47aef0c7e2e3852b20aa4ffdce748. Change-Id: Idd613e2487d5ab7f8ead74747acd976d5d210c28 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Introduce helper class QTaggedPointerTor Arne Vestbø2020-03-175-0/+220
| | | | | | | | | | | | | | | | | | Useful for attaching small bits of information in the alignment bits of a naked pointer. For use in the new property system as well as in qtdeclarative (where currently a similar class exists as private API). Change-Id: Idf9b93e714e15129f302e16425dbeda94bcd207b Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Introduce always constexpr variants of qNextPowerOfTwoFabian Kosmale2020-03-171-18/+35
| | | | | | | | | | | | | | | | | | Amends e464e1eb8eb63c631fb0916c3ea4540a88d8aad3. qNextPowerOfTwo has the same issue as qCountTrailingZeroBits. Change-Id: Ib1905986e932ac130bce7a1d98f4f7b5ef73991f Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | CMake: Regenerate projects and adjust after old harfbuzz removalAlexandru Croitor2020-03-171-11/+0
| | | | | | | | | | Change-Id: I3a00334f2b29caa739d6a1d8edd4c7311dda812f Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | Fix compilation with -no-feature-regularexpressionEskil Abrahamsen Blomfeldt2020-03-174-3/+24
| | | | | | | | | | | | | | | | | | This -no-feature has probably not been tested for a while and seems to have rotted a bit, both some unprotected uses and some warnings on unused parameters. Change-Id: Ie20a06c78d3b4c36860dab49d6615eaa8ffc9077 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | Remove QRegExpValidatorLars Knoll2020-03-171-1/+1
| | | | | | | | | | | | | | As QRegExp will be moved to a compat library in Qt 6. Change-Id: I181aec45bd798f49d2c50a0e7fb64782e004b854 Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
* | Remove the old harfbuzz library and integration codeLars Knoll2020-03-174-490/+0
| | | | | | | | | | | | | | | | | | It's not used anymore. harfbuzz-ng is a requirement in Qt 6 if you want any open type shaping. Fixes: QTBUG-82881 Change-Id: If7100aebdcfa078a999608bb8f07a2ef3a79d282 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
* | Remove harfbuzz dependency from qunicodetoolsLars Knoll2020-03-172-39/+1494
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Copy the relevant harfbuzz code over from Harfbuzz into qunicodetools.cpp This is basically the attribute functions from the different harfbuzz shapers. Those methods do not require any font support but operate purely on unicode input data. Adjusted the code to use Qt's own data structures and enums (QChar::Script and friends) instead of the harfbuzz equivalents. The code is 100% copyright The Qt Company, so we can do this without requiring any attribution. Change-Id: I8262ba34eae1837f031f07d1b6d9917c0224e160 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
* | Change signature of initScripts to take out pointer to a QVLA<ScriptItem>Lars Knoll2020-03-173-22/+9
| | | | | | | | | | | | | | This avoids one additional copy of data that we've been doing before. Change-Id: I3fae0ebe0cded632b41fdcf7efc01d5c7f2dc181 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
* | Re-generate various CMake projects and configure after mergeSimon Hausmann2020-03-162-4/+2
| | | | | | | | | | Change-Id: I02f5926c6664aab518c5c81e0c33dca0818a1871 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* | Merge "Merge remote-tracking branch 'origin/5.15' into dev"Simon Hausmann2020-03-1620-6604/+6994
|\ \
| * | Merge remote-tracking branch 'origin/5.15' into devSimon Hausmann2020-03-1620-6604/+6994
| |\| | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/kernel/qmetatype.cpp Change-Id: I88eb0d3e9c9a38abf7241a51e370c655ae74e38a
| | * Update the latest public suffix listEdward Welbourne2020-03-162-13783/+13887
| | | | | | | | | | | | | | | | | | Task-number: QTBUG-72623 Change-Id: I8e0450c41882f00a49264a99342eb2dcf1959abe Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
| | * Update UCD to Revision 26Edward Welbourne2020-03-145-6342/+6750
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Include WordBreakTest.html, since a test uses sample strings from it, albeit without actually reading the file. Had to comment out more of the new tests, as at Revision 24, pending an update to harfbuzz and the text boundary detection code. Task-number: QTBUG-79631 Task-number: QTBUG-79418 Task-number: QTBUG-82747 Change-Id: I0082294b09d67ffdc6a9b5c15acf77ad3b86f65f Reviewed-by: Lars Knoll <lars.knoll@qt.io>