summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
...
* 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>
* Get rid of the custom debug stream handling in QVariantLars Knoll2020-08-245-138/+6
| | | | | | | | Use the builtin support in QMetaType instead. Change-Id: Ifc0e88719a384aa7fb525652bada22b6f7ee1c45 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Automatically register data/debug stream operations in QMetaTypeLars Knoll2020-08-249-378/+179
| | | | | | | | | | | | | | | | | | | | | | And remove the old manual registration code for those operators. Add some special handling for long/ulong, as these types could be streamed as a QVariant so far, but are not directly streamable through QDataStream. [ChangeLog][QtCore][QMetaType] The QMetaType::registerStreamOperators() and QMetaType::registerDebugStreamOperator() methods have been removed. The streaming operators for a type are now automatically registered together with the type registration. This implies that the operators should be visible wherever the type is visible and being used. [ChangeLog][Behavior Incompatible Changes] Because the QDataStream and QDebug serialization operators are automatically registered with QMetaType, the declarations of those functions must be present at any point where the type is used with QMetaType and QVariant. Change-Id: I4a0732651b20319af4a8397ff90b848ca4580d99 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QWidget: drop an unncessary const_castGiuseppe D'Angelo2020-08-241-1/+1
| | | | | | | Thanks to the newly introduced indexOf overload. Change-Id: I00377591dba4104f1dfd34816cc74efcf5220a4d Reviewed-by: David Faure <david.faure@kdab.com>
* QLineF::intersects(): Make the output parameter optionalSze Howe Koh2020-08-231-1/+1
| | | | | | Change-Id: I1ccd290a81b38db2e86958fa8ce188878484dcc4 Reviewed-by: Konstantin Shegunov <kshegunov@gmail.com> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Fix include in public headerKai Koehne2020-08-231-1/+1
| | | | | | | | We shouldn't rely on include path containing also /QtCore Task-number: QTBUG-82615 Change-Id: I0f98f6097865cc5aa2c2fc9a0fabf2c4513b7afe Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
* Merge the two QUrl::fromUserInput overloadsDavid Faure2020-08-232-64/+36
| | | | | Change-Id: I4d4cd0961c30e898118c0a5f74bcd3234173384a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Leave a comment about a usage of a restricted bool trickGiuseppe D'Angelo2020-08-231-0/+2
| | | | | | | | | | | | | | I'm pretty sure we want to keep supporting statements like bool ok = connect(~~~); that is, statements that do use copy initialization and not direct initialization. As such, QMetaObject::Connection has to keep using the restricted bool trick and cannot be ported over to explicit operator bool. Change-Id: I07a38f7c134686e67b5984aa93fe5cf3201561d7 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QAutoPointer: port to explicit operator boolGiuseppe D'Angelo2020-08-231-3/+1
| | | | | Change-Id: Ic8ec02d7225e884bfd98d93398502a8b8b825da8 Reviewed-by: David Faure <david.faure@kdab.com>
* Remove the deprecated -qpa-platform-guard argumentJoerg Bornemann2020-08-234-17/+0
| | | | | Change-Id: I0bde5552c8801660e2be57531d64b6d2b499bb32 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* CMake: Workaround building DBus 'car' example with qmakeAlexandru Croitor2020-08-232-4/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While trying to implement instructions for building examples with qmake in the CI, an issue has surfaced. When building examples with CMake with -DBUILD_EXAMPLES=ON in the CI, the examples are built in-source, aka source dir == build dir. This means that the header files generated by qdbusxml2cpp will be placed in the qtbase source dir. The instructions that try to build examples with qmake build the examples in a separate build dir after building the examples with CMake. Unfortunately the qtbase/examples/dbus/remotecontrolledcar/car example includes the generated DBus adaptor header via a statement like #include "car_adaptor.h" and the compiler prefers to pick up the header file from the example source dir (the one generated by CMake), rather than the one generated by qmake in the example build dir. Because CMake's DBus integration uses different flags than qmake's DBus integration, the generated header file code is not compatible with the qmake generated cpp file, and the example fails to link when building with qmake, because it can't find an appropriate constructor symbol. In an ideal world, we wouldn't do in-source builds with the CMake build, but that leads to other issues which I currently don't recall. To circumvent the issue, adapt the CMake DBus qt6_add_dbus_adaptor function to allow not passing the problematic '-l' flag by making it optional. This shouldn't break existing code, but allows us to generate a compatible header that will be used by qmake and succeed in linking the example. Task-number: QTBUG-85986 Change-Id: I06759f79aeb66bb32da7f158f55dd4734c4a9887 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* QStringTokenizer: use sliced() instead of mid()Marc Mutz2020-08-231-2/+2
| | | | | | | | The code was developed against the narrow-contract version of mid(), but not updated when mid() became wide-contract. Change-Id: I038054fb3f5acc0085c48fbf36af13dd14c917b8 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Port QLatin1String to qsizetype and add narrow-contract substring functionsMarc Mutz2020-08-233-67/+147
| | | | | | | | | | | | | | | | | | | | | | QLatin1String::mid() etc were changed from narrow to wide contract, but the narrow-contract replacements weren't added. This blocks using the narrow-contract functions in QStringTokenizer. As a drive-by, Q_REQUIRED_RESULT -> [[nodiscard]] and Q_DECL_CONSTEXPR -> constexpr. Also centralize most Q_ASSERT()s in a single function, verify(), in an attempt to reduce the amount of string data generated from the asserts in assertive builds. [ChangeLog][QtCore][QLatin1String] Added from(), sliced(), first(n), last(n) functions. [ChangeLog][QtCore][QLatin1String] size_type/size() is now qsizetype (was: int). This makes QLatin1String(ptr, 0) ambiguous now between the (ptr, ptr) and (ptr, qsizetype) constructors. Change-Id: Ie195f66ae1974eb0752c058aa9f3b0853ed92477 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Drop spurious const from parameterEdward Welbourne2020-08-231-1/+1
| | | | | | | | Quanifying a parameter passed by value (which is correct for QTime, there is no need to pass it by reference) as const is pointless. Change-Id: I86850f65dfac28ffcc4a8633dd6d212259bb33d0 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix crash on serializing default-constructed QTimeZoneEdward Welbourne2020-08-231-3/+11
| | | | | | | | | | | | | | The serialization code neglected to check against null. Sinze zones are saved either by IANA ID or in our special OffsetFromUtc format, representing an invalid zone by a string that cannot possibly be a valid IANA ID will do. Fixes: QTBUG-86019 Pick-to: 5.15 Pick-to: 5.12 Change-Id: I6882026403d00f8b254aab34c645f1cf8f9fcc2d Reviewed-by: Taylor Braun-Jones <taylor@braun-jones.org> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix mistake in AESHASH algorithmAllan Sandfeld Jensen2020-08-231-2/+2
| | | | | | | The read data wasn't encoded into the state correctly. Change-Id: Ib0a3b50bfeb56968de5c5e8353b28383cb586271 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Ignore clang-format for GUI snippetsPaul Wicking2020-08-231-0/+2
| | | | | | | | | | | | Among other things, this allows for ignoring proper indentation of code that's contained in a wrapper function which serves the purpose of compiling the snippet only. This is useful because the extra indentation is included in the output generated by QDoc. Task-number: QTBUG-84470 Change-Id: I3d702e82169a87447939f357cbee15cb0f74a391 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Fix CaseSensitivity handling for QRegularExpression in QSortFilterProxyModelMarcel Krems2020-08-231-1/+2
| | | | | | | | | | | setFilterRegExp retains the caseSensitivity() while setFilterRegularExpression did not. Change setFilterRegularExpression to also retain the case sensitivity. Fixes: QTBUG-83313 Pick-to: 5.15 Change-Id: I46f494d320aee99d50612f01f63558c693276989 Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch> Reviewed-by: David Faure <david.faure@kdab.com>
* Fix truncation warning in qversionnumber.hMarcel Krems2020-08-231-1/+1
| | | | | | | qversionnumber.h(390): warning C4310: cast truncates constant value Change-Id: I26f525db84d1c3691d9ac3f91f67be0bc4034b41 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QVariant::metaType(): Add missing \since Qt 6.0Marcel Krems2020-08-231-0/+2
| | | | | | | Amends a68e4f3b96a82a93898f381e8ddc7f50f9c89d40 Change-Id: Ice8f83e11e03db1d76e12ffd2b548a6b69684842 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QSizePolicy: Fix warning about mixing different enumsMarcel Krems2020-08-231-2/+2
| | | | | | | | warning: C5054: operator '&': deprecated between enumerations of different types Pick-to: 5.15 Change-Id: I4e48a44f089d3eaca5d3f876da01335051192b28 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QPixelFormat: Fix warning about mixing different enumsMarcel Krems2020-08-231-14/+14
| | | | | | | | warning: C5054: operator '+': deprecated between enumerations of different types Pick-to: 5.15 Change-Id: If111b076914667fb149e62e051f52f408db9a338 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* xcb: remove QT_XCB_NO_XI2_MOUSE code pathGatis Paeglis2020-08-234-134/+13
| | | | | | | | | | | | | | | This code path was deprecated in 5.12 and scheduled for removal in Qt 6. See 9184384bc9d9d71a146fff535021357258a0295e. According to the source comments from f48170b479df359f47af12b03a501d9d0c386e66, apperantly XInput2 had some issues when running on Xinerama screens and therefore there was a check for it in xi2MouseEventsDisabled(). We plan to remove Xinerama support, therefore Xinerama handling in xi2MouseEventsDisabled() is irrelevant. Task-number: QTBUG-69412 Change-Id: I384d7c46337358caecccf644acc8ffbd381dc69d Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* qwsi: revert parts of 00ae1e6b7bf6efa5f5e57d37844e44d521604fb6Gatis Paeglis2020-08-233-26/+2
| | | | | | | | | | | | | | We actually do not need this "mode" in qwsi API. I think while writing the patch from 00ae1e6b7b I got confused by focusing on my test application. We can't know what the native event filter will filter out, therefore it makes sense that we unconditionally do filtering at qwsi level as well for user input vs other events in QWindowSystemInterface::sendWindowSystemEvents(). Pick-to: 5.15 Pick-to: 5.12 Change-Id: Idb23152a24bf3ba3b91804427a6e78f991969c29 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* QLayout: make its indexOf functions take pointer-to-constGiuseppe D'Angelo2020-08-232-5/+5
| | | | | | | | | | | | | | | | | | | | | Try to fix an API mistake there: there is no reason why these functions should take pointers to non-const widgets, as that actually preventing reasonable code (e.g. finding out the index of "this" inside a const method of a QWidget subclass). Unfortunately, indexOf(QWidget*) is also virtual, meaning that changing its signature is an API break. Hopefully, there are only few users that override this method (Woboq says 0). [ChangeLog][Potentially Source-Incompatible Changes] The QLayout::indexOf(QWidget *) virtual function has changed signature, becoming QLayout::indexOf(const QWidget *). This is source incompatible, although the fix (for the few users that do override indexOf() in their layouts) is straightforward. Change-Id: Id2183f5ecd9dc7e2a37c7355266e8494ef7929f2 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* Interbase: Close the cursor before reopening it later onAndy Shaw2020-08-231-3/+3
| | | | | Change-Id: If21d33262b8ca53c17a7d236baaa828907116cab Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* QFont: Extend the string description to include the missing elementsAndy Shaw2020-08-221-4/+17
| | | | | | | | | | This extends to/fromString to include style strategy, capitalization, letter and word spacing and stretch. QFont::fromString() keeps compatibility with strings from earlier versions as well. Fixes: QTBUG-67687 Change-Id: I5e95a58f1cd850214af2a7d8906a214facd4e661 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* xcb: Fix flushing of native subwindows when not using shared memoryTor Arne Vestbø2020-08-221-2/+11
| | | | | | | | | | | | | | | | | | | | | When using X-forwarding we're not using shared memory for the backing store image, and end up in a code path where we first copy the updated parts of the backing store from our client side image over to the server, and then flush those parts from the server-side image to the window. The problem was that this code path didn't account for the possibility that we'd flush a sub-window at an offset, and would end up uploading the sub-window local region directly, without applying the offset. This problem was revealed when 79bf1b7e348d started being smarter about what regions we flush and to what windows when we have sub windows. Fixes: QTBUG-81723 Pick-to: 5.15 Pick-to: 5.12 Change-Id: I1c9c8bc53c088cdc1ae8b892e17930f4a468ccad Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
* Properly deprecate Qt::MidButton in favor of Qt::MiddleButtonEdward Welbourne2020-08-2216-33/+35
| | | | | | | | | | | | MidButton had its // ### Qt 5: remove me upgraded to Qt 6 at 5.0; but it dates back to 4.7.0 Replace the many remaining uses of MidButton with MiddleButton in the process. Pick-to: 5.15 Change-Id: Idc1b1b1816673dfdb344d703d101febc823a76ff Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QGuiApplication: fix handling of spontaneous events' modifiersNicolas Guichard2020-08-203-53/+58
| | | | | | | | | | | | | | | | | | | | | | | | | QtQuickTest synthetized events can have modifiers, but those modifiers were not accessible globally, from QGuiApplication::keyboardModifiers for instance. eg. calling QML's TestCase::mouseClick with modifiers triggering a call to QGuiApplication::keyboardModifiers did not give the expected result. QtTest synthesised events can also have modifiers and those were correctly handled by QApplication to set modifiers globally. This fix moves the handling code from QApplication::notify to QGuiApplicationPrivate::maybeSimulateModifiers and calls this function from QGuiApplication::notify too. The definite fix would be to do as suggested in the comment attached to the moved code: > Qt Test should not call qapp->notify(), but rather route the events > through the proper QPA interface. This is required to properly > generate all other events such as enter/leave etc. Pick-to: 5.15 5.12 Change-Id: I734e5bbc82232b13828b1a1f82e06ee8eb695417 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Resolve the remaining open ### Qt6 comments of QJsonValueSona Kurazyan2020-08-204-108/+63
| | | | | | | | | Changed QJsonValue to use QCborValue for data storage. Removed unused internal methods. Task-number: QTBUG-85700 Change-Id: I784fc7c0c4407f79eb7ca87a1f5116f00c26155d Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QIODevice: implement a "zero-copy" strategy for buffered writesAlex Trotsenko2020-08-207-8/+38
| | | | | | | | | | | | | | | | | | | | | | | | It works as follows: - user calls write(const QByteArray &); - this function keeps a pointer to the chunk and calls a regular write(data, len); - write(data, len) calls a virtual writeData(); - subclass calls a new QIODevicePrivate::write(); - QIODevicePrivate::write() makes a shallow copy of the byte array. Proposed solution is fully compatible with existing subclasses. By replacing a call to d->writeBuffer.append() with d->write(), subclasses can improve their performance. Bump the TypeInformationVersion field in qtHookData, to notify the Qt Creator developers that the offset of QFilePrivate::fileName was changed and dumpers should be adapted. Change-Id: I24713386cc74a9f37e5223c617e4b1ba97f968dc Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Tidy up qnamespace.qdoc's enums' \omitvalue entriesEdward Welbourne2020-08-201-39/+36
| | | | | | | | | Moved \omitvalue entries to the end (unless there was only one, at the start). Sorted Qt::WidgetAttribute's to match their order in the declaration, as there were many and their order was haphazard. Change-Id: I41d27df0fc293f642f931177b0d8884fbbcb9b77 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* QCalendarBackend: format "enum" as code where usedEdward Welbourne2020-08-201-8/+11
| | | | | | | | Also mark some internal methods as \internal. Pick-to: 5.15 Change-Id: I0ae8dc315e5012eea2f3c35ae7d09c3cbb318ab5 Reviewed-by: Paul Wicking <paul.wicking@qt.io>