summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Remove QEventPoint::event() in favor of device()Shawn Rutledge2020-08-243-17/+16
| | | | | | | | | | | | | | | | | | | | | | event()->device() was the most common use case anyway. The idea that the "parent" of a QEventPoint is the QPointerEvent interferes with the ability to copy and move event objects: the parent pointers are dangling unless we use the QPointerEvent subclass destructors to set the points' parents to null. Since there is no move constructor, even returning a QEventPoint from a function by value results in destroying the temporary instance and copying it to the caller's space. So the parent pointer is often useless, unless we do even more work to maintain it when the event moves. If we optimize to avoid copying QEventPoints too much (and perhaps enable exposing _mutable_ points to QML) by storing reusable instances in QPointingDevice (which is the current plan), then the actual parent will no longer be the event. Events are usually stack-allocated, thus temporary and intended to be movable. Change-Id: I24b648dcc046fc79d2401c781f1fda6cb00f47b0 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Doc: provide a code example of QDirIterator's nameFilters parameterMitch Curtis2020-08-242-1/+10
| | | | | | Change-Id: I56f9251f17bab0f835979a5feadec1fa896c9d69 Pick-to: 5.15 Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
* Rename QSequentialIterable::refUlf Hermann2020-08-242-17/+17
| | | | | | | | Follow the naming convention and remove workarounds in ctors. Change-Id: Ic7f9de074edab7db369803612a2a2a4ea3deaf57 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Remove private QSequentialIterable begin/end methodsUlf Hermann2020-08-242-14/+2
| | | | | | | | | Those are only used by the only friend of the class. As that one can already poke into QSequentialIteralble's privates, there is no point in exposing further methods in the public API. Change-Id: I368e7bcfc43c31f38a42a41a339ff3135d79417c Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Remove the QPF2 font engineEskil Abrahamsen Blomfeldt2020-08-248-944/+7
| | | | | | | | | | | | | | | The QPF2 font engine has been kept around for compatibility reasons in Qt 5.x, and it is time for it to retire for now. If we want something like this in the future, we can revive it with hardware acceleration / Qt Quick as one of the primary use cases, but for now, it seems that Freetype and our existing caching is sufficient also for low-end use cases. [ChangeLog][QtGui][Text] Removed support for the legacy QPF2 font format as well as the makeqpf tool used to generate those files. Change-Id: Id43039c92fe5bd95b628cd769e045c029f39a350 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Make the canConvertMetaObject method safeLars Knoll2020-08-241-3/+4
| | | | | | | | | | This triggered a crash in QtQml, where an manually created metattype interface set the PointerToQObject flag to true while not providing a metaobject. Change-Id: I206fb9655058a1e8a2d04e44186b05db33358338 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Remove QVariant(QDataStream) constructorLars Knoll2020-08-242-15/+0
| | | | | | | | | | | | | | | The constructor wasn't constructing a QVariant holding a QDataStream, bug loading the variant from the datastream. This is opposed to how QDataStream works in all other places, and also not in line with all other constructors for QVariant. [ChangeLog][QtCore][QVariant] Removed the QVariant(QDataStream) constructor. Use QVariant().load(datastream) instead. Change-Id: I6ac54e12166b9383c09c3940eef2516f896fd359 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Use QMetaType in QMetaCallEventLars Knoll2020-08-249-34/+34
| | | | | | | And don't use int based type mapping anymore. Change-Id: I456e76d1933ef646a7bd39ce565886b89e938a44 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Pass QMetaType by valueLars Knoll2020-08-247-18/+17
| | | | | | | | Now that QMetaType is not refcounted anymore, we can and should pass it by value. Change-Id: I848db65070713762f548ca949097c27783aacad4 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Clean up int based convert() APILars Knoll2020-08-247-57/+73
| | | | | | | Pass QMetaType instances instead. Change-Id: I07366cea566fdebf5bb793aa8087f8109216ec0c Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Deprecate int based convert/canConvertLars Knoll2020-08-248-23/+66
| | | | | | | Better to provide the correct meta type to convert to. Change-Id: I8e0d46e4ba482186201c157e302c03874bd38e7b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Return a qsizetype from QMetaType::sizeOf()/alignOf()Lars Knoll2020-08-242-4/+4
| | | | | | | Object sizes in Qt 6 should use qsizetype. Change-Id: I76ceb5faf361d7f6be88d88c772358ad6d701d54 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Deprecate the static int based API in QMetaTypeLars Knoll2020-08-2425-254/+183
| | | | | | | | | | | | | And remove one of the type id to name mapping that still existed in QMetaType. QMetaTypeInterface can provide that, so there's no need to have a second copy of the data. qMetaTypeTypeInternal() can still map all the names of all builtin types to ids. That functionality is for now still required by moc and can't be removed yet. Change-Id: Ib4f8e9c71e1e7d99d52da9e44477c9a1f1805e57 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Remove refcounting of QMetaTypeInterfaceLars Knoll2020-08-245-76/+21
| | | | | | | | | It's only used for dynamic types in DBUS and QML, where we control things good enough to be able to handle the lifetime of those interfaces there. Change-Id: Ia7f8970d17a85b195db85fcdc2d8f1febd8753f4 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Cleanup the qRegisterMetaType functionLars Knoll2020-08-241-49/+13
| | | | | | | Remove the arguments that are nowadays unused. Change-Id: I97ed983b158aba57653f35e7e2f91f5c79dace8c Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
* Remove an unused enum value and document another oneLars Knoll2020-08-242-3/+2
| | | | | Change-Id: If9fed4f20242d789c1251b8798d7378d2d6911a6 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Cleanup qvariant_cast<>Lars Knoll2020-08-243-106/+46
| | | | | | | | | | Move the last functionality it had (casting between QObject derived types) over to QMetaType. Now qvariant_cast<> is nothing but a wrapper around QMetaType::convert(). Change-Id: Iab02b6b97c141d64052823646e18227d1eb403dd Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Move conversions to and from *Iterables into QMetaTypeLars Knoll2020-08-244-148/+196
| | | | | | | | Those were not yet supported by QMetaType. Change-Id: I9f85476049f200e35939ac58ef7e8b4e7cbe0b77 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Implement QMetaType::canConvert() and use it in QVariantLars Knoll2020-08-243-392/+147
| | | | | | | | | | | | | | | | | | | | Use the fact that we return the conversion function as a lambda to find out reliably whether a conversion between two types can be done. This requires some minor adjustments to our tests: * Nothing can convert to an unknown type and vice versa * Adjust results to the fact that we don't convert from char to QString anymore (where the old method was incorrect) * QStringList->QString requires some adjustments, as we only convert if the string list has exactly one element. For now we return true in canConvert(), but the conversion behavior in this case is something we should rethink, as it is very surprising. Change-Id: I3f5f87ee9cb99d690f5a7d13b13d6a6313d8038e Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
* Get rid of the old QVariant conversion codepathLars Knoll2020-08-242-56/+24
| | | | | | | All conversions do now happen through QMetaType::convert(). Change-Id: I70f7a883262087768acccf8361d34c0490ff2b43 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Move QJsonValue and QCborValue conversions to QMetaTypeLars Knoll2020-08-242-151/+127
| | | | | Change-Id: Id4796e0913c0c5b0abce0ea27bed0f7b41bc0cca Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Remove some unused codeLars Knoll2020-08-241-12/+0
| | | | | Change-Id: I184c0e00562b9cc61e628457629633f8157333ad Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Finish porting number conversions to QMetaTypeLars Knoll2020-08-242-253/+29
| | | | | Change-Id: I2861c6fb5f8192a627ffb41f1455c703849cf945 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Move enum conversions over into QMetaTypeLars Knoll2020-08-243-90/+151
| | | | | | | | Take the opportunity to properly handle the underlying type (size and signed vs unsigned). Change-Id: I0cb8cf40acac6de03c24ed3fe570db68268952c8 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Implement integral conversions in QMetaTypeLars Knoll2020-08-241-1/+108
| | | | | Change-Id: Ib2617d37b80bb45818dcd093744cfe5a37a74606 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Start porting conversions over from QVariant to QMetaTypeLars Knoll2020-08-243-581/+403
| | | | | | | | | | This will ensure full symmetry in what QVariant and QMetaType support. With this done, QVariant will become simply a container that can hold any QMetaType with fully symmetric functionality between both. Change-Id: I796d4368a2bc0f08cf4f70f4465ed6a0e07bdd76 Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
* Remove some dead codeLars Knoll2020-08-241-9/+0
| | | | | Change-Id: Ic1cd0a70b2412c0e4bfcc06bf5609f9d4590ae66 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Add a metatype helper class for Qt CoreLars Knoll2020-08-244-20/+32
| | | | | | | | | This helps get better symmetry with the other modules, and to unify the code paths for both conversion and retrieving the interface for static types. Change-Id: Icbd20de2563f36e3de20d826323acd057734abfb Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Always try to conversions through QMetaTypeLars Knoll2020-08-241-21/+9
| | | | | | | | | Always ask QMetaType to convert first before trying the builtin code in QVariant. That way we can migrate conversions piece by piece to QMetaType. Change-Id: I4fd1bad3ef045d37f84f68e748a6357e0ee0c16c Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Use QVariant::Private::typeId()Lars Knoll2020-08-241-96/+96
| | | | | | | | Avoid some atomic operations by using this instead of type().id(). Change-Id: Ic664794908d3a9fc3686f954b582740b73c052c6 Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
* Clean up QVariant::Private::DataLars Knoll2020-08-242-113/+88
| | | | | | | | | | | Remove all the internal members of the union. Instead replace it with raw storage (uchar[]) aligned to max_align_t. Place all accesses to the internal members with get<> methods for consistency. Change-Id: Icebf46b90c9375aa6ea0b5913b2132608e8c223d Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
* Get rid of the private v_cast<>() methodLars Knoll2020-08-242-213/+187
| | | | | | | Replace it with QVariant::Private::get<>(). Change-Id: I801742300d9b15f748bb91fcd6cfa176d2057271 Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
* Add QVariant::Private::storage(), get() and typeId()Lars Knoll2020-08-241-0/+19
| | | | | | | | | | | | | | Adds convenient access to the data from the Private pointer. data() determines the storage location at run time, get() at compile time. internalStorage() can be used if we're accessing one of multiple types, but know that the type is stored internally. typeId() is an optimization as it allows retrieving the type id of the metatype without atomic refcounting operations (which type().id() would be doing). Change-Id: I39a508c530a1588053248607c8932e501fd474dc Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
* Use QMetaTypeModuleHelper as the interface to do type conversionsLars Knoll2020-08-247-238/+123
| | | | | | | | | | | | | | Move the type conversions from QVariant::Helper to QMetaType. Only do this for Qt Gui in a first step. This makes it possible to completely remove the Handler struct in QVariant, and now allows QMetaType to also convert Gui types. Moving the conversion of Core types into QMetaType will require further work. Change-Id: I061f789deca1b595d92bb29227eb54b8e71a3ee3 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Clean up the converter function handlingLars Knoll2020-08-242-128/+43
| | | | | | | | Use std::function to register the converter functions instead of our own handrolled interface. Change-Id: Ifc1d1d383d21ee8d4239dbc3970c1f31bf0f4037 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Get rid of the additional bool * parameter to the internal convert methodLars Knoll2020-08-243-71/+61
| | | | | | | That parameter is duplicating the return value, get rid of it. Change-Id: I8d6ecee8aca90aecaf08e6d0072d83e9a08ce3d6 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Get rid of the unused meta type switcherLars Knoll2020-08-245-94/+0
| | | | | Change-Id: I8771feb68227bf69643b66314284c645cccdec6f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Cleanup v_construct and friendsLars Knoll2020-08-241-73/+9
| | | | | | | Streamline code using if constexpr and remove some unused code paths. Change-Id: I602acffab4b3e53fab9e2433856f6b7e8210cc60 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Inline QVariant::constData()Lars Knoll2020-08-242-10/+4
| | | | | | | This should speed up quite some of the QVariant operations Change-Id: Ifae2df39e47e2e1ef1d9a947802bdd17fc66aa66 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Cleanup unused codeLars Knoll2020-08-243-11/+0
| | | | | Change-Id: I27821ca7e63fccd5353c48eebfde19756846dd2e Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Cleanup QVariant::PrivateSharedLars Knoll2020-08-243-45/+56
| | | | | | | | | | | | | Remove the additional indirection through ptr and replace it with an offset calculation. Get rid of PrivateSharedEx that was handling certain types differently. This also fixes the support for overaligned types, by using the alignment field from QMetaType to determine the alignment requirements. Change-Id: Icc6a78eb57f664c7747450578fe58dfee8f2863b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Always use the variants internal space if possibleLars Knoll2020-08-242-4/+2
| | | | | | | | | | There's no point in storing small types with an external refcount, even if they aren't movable. Simply copying the type should be faster in pretty much all cases, while this uses less memory. Change-Id: I127474f8e3c5fa042f530684f9d5bfccbba134ca Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Simplify the QVariant copy constructor and assignment operatorLars Knoll2020-08-241-5/+7
| | | | | Change-Id: Id517dfc220adf06c5852745c92cfbe5e9c2e94a3 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Generate less code when creating QMetaTypeInterfacesLars Knoll2020-08-242-9/+21
| | | | | | | | | There is no need to generate wrapper functions for equals, lessThan or debugStream for pointer types, as those can easily be handled by a few lines of code in QMetaType itself. Change-Id: If79b3bc3a629249c1d17c9e592202f08b59f80ef Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Refactor Q*IterableLars Knoll2020-08-245-142/+95
| | | | | | | | | | | | Refactor the methods retrieving data in Q*Iterable so that we don't return pointers with unclear ownership. Instead, copy the data into a out pointer provided by the caller. This also means there is no need for the metatype flags anymore and we can remove those. Change-Id: I517de23a8ccfd608585ca00403aca0df2955f14b Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Cleanups in the Iterable classesLars Knoll2020-08-243-49/+43
| | | | | | | Store a QMetaType, not a meta type id in the classes. Change-Id: If27a60512a46fa029cc914d65b8cad7f89d7f3b0 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Clean up a custom void_t implementationLars Knoll2020-08-241-8/+3
| | | | | Change-Id: I30fcaef2a242cc2daee82d37debdb97e59a9a8f2 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Cleanups in QSequentialIterableLars Knoll2020-08-241-24/+10
| | | | | | | | | Remove the old revision of the interface, this is not required with Qt 6 anymore, as everything is being recompiled anyway. Change-Id: I66070c4dc6b5e2a6d22f5a9ebea7688ed38333fe Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Small doc fixLars Knoll2020-08-241-3/+1
| | | | | | | | Change-Id: I349f68c4b86558aba5db4e8fbe5d876447baaeb3 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Paul Wicking <paul.wicking@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Remove some dead codeLars Knoll2020-08-244-84/+0
| | | | | | | | This code is now unused, as streaming operators are registered automatically. Change-Id: I0e48944c33a92cf1f2f158fb2dc0ca49256d7938 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>