Commit Graph

11075 Commits (563fbe79e52cfbf904d2e26d775a2160980fa41a)

Author SHA1 Message Date
Edward Welbourne cd74c867d3 Remove some long-deprecated methods of QLibraryInfo
Change-Id: If5e85f813921b44971ca8572858051b53e1127a8
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Sune Vuorela <sune@vuorela.dk>
2020-06-29 09:37:39 +02:00
Mike Achtelik 76c3eee402 Remove pthread storage for thread local data
The thread specific QThreadData is currently referenced as a thread_local
variable and using a thread specific value via pthread_setspecific.

Having both is not necessary, as the pthread value is never directly accessed
and only used in the pthread destructor. Using a holder, we can achieve the same
and get rid of the pthread handling altogether.

This also fixes a bug, where the thread_local currentThreadData is already null,
when entering the pthread destructor. In this case it would lead to a new QThreadData
being created, when finishing an adopted thread.

Pick-to: 5.15
Change-Id: Ib23b840f804637e6b7cebd89016672a34a575380
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-06-28 19:12:32 +02:00
Joerg Bornemann 8c97ae0c1f CMake: Make the path variables in Qt6CoreConfigExtras.cmake relative
To be consistent with the Qt6HostInfo package, we're providing paths
without prefix in the variables like QT6_INSTALL_BINDIR.
The full path can be easily obtained by combining the relative path with
the QT6_INSTALL_PREFIX variable.

Also, the value of QT6_INSTALL_SYSCONFDIR was wrong. It usually is
located outside of the prefix.

Change-Id: I0035633a8c1c865d86d5ffc8b36565ceb2e7ea25
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-06-28 17:16:02 +02:00
Giuseppe D'Angelo b40f36603d QList: use =default for its default constructor
Change-Id: Id5270eac2464bf2d3810de18579d4dc295e98b38
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-06-26 20:51:21 +02:00
Eirik Aavitsland 95b5a56071 Improve deprecation message for QLine::angle(QLine)
angleTo() always gives an answer measured ccw, so between 0 and 360
degrees. The deprecated angle() would give either cw or ccw,
depending on which is smaller, so between 0 and 180 degrees.

Help users porting by showing a simple way to achieve the angle()
behavior in the deprecation message.

Change-Id: I66f77d2b4e688562e443428209737aa3332a448f
Pick-to: 5.15
Fixes: QTBUG-85087
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-06-26 13:24:17 +00:00
Lars Knoll e81330d327 Add explicit encode()/decode() methods to QStringConverter
The functional style interface is nice, but does feel alien in some
contexts, so better also have explicit encode and decode methods.

Change-Id: Ic07ced15f65cdb3a7f1cf044041e341d2ef87f79
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
2020-06-26 14:41:42 +02:00
Giuseppe D'Angelo d4bce57340 Unexport QModelIndex
It is entirely inline.

Change-Id: I626d6e4f6338dabfcc1e34127c898ed13c5a513b
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2020-06-26 14:41:41 +02:00
Thiago Macieira e7d76d79e8 QThread: Fix unnecessary stricter accesses to QThreadData::thread
Commit ec6556a2b9 changed the member from
a plain pointer to a QAtomicPointer. Not all accesses were caught.

Pick-to: 5.15
Change-Id: I3d4f433ff6e94fd390a9fffd161b4ff25508c48d
Reviewed-by: David Faure <david.faure@kdab.com>
2020-06-25 18:03:34 -07:00
Jarek Kobus 0475460102 Use QList instead of QVector in corelib
Applied to headers only. Source file to be changed separately.
Omitted statemachine for now to avoid conflicts.
Omitted qmetatype.h for now - to be handled later.

Task-number: QTBUG-84469
Change-Id: I317376037a62467c313467d92955ad0b7473aa97
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
2020-06-25 22:30:59 +02:00
Fabian Kosmale 844e4f7b98 moc: Fix QProperty code generation
This addresses two issues:
1. The generated code for QNotifiedProperty<T, ...> was broken when T is
   a pointer. Notably, const S* &  is not a constant reference to S*.
   This is addressed by consistently using T const& instead of const T&.
2. The Q_PRIVATE_QPROPERTY approach assumed that the property name and
   the getter are equal. This does break when they are not, and we are
   unable to change either of them due to API compatibility concerns. An
   example of this would be QQuickItem's parent property with a
   parentItem getter. Therefore, we now allow the usage of NAME to
   override the name of the property.

Change-Id: Idf2e85576c74371b5b0f6db15dbe6f2d17c5e33d
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-06-25 14:11:56 +02:00
Simon Hausmann b20c7df63a Remove QPropertyMemberChangeHandler again
Adding support for a static notifier within QProperty itself - through a
QProperty "sister" class - is more efficient in terms of memory
consumption and run-time performance.

The MemberChangeHandler permanently takes up at least three pointers,
while the notified properties only cost one pointer in the binding.

Change-Id: Ia1a8c2b66f1f3c2fe13ae0ad9f12cdb6bdcc35ef
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-06-25 14:11:56 +02:00
Fabian Kosmale e18a060c03 QNotifiedProperty: Add guard callback
A guard callback is a predicate which takes the new value set by
setValue or computed as the result of a binding expression. If it
returns false, the value is discarded and the old value is kept.
Note that due to lazyness, when setting a binding, we still notify
everyone as the binding is only evaluated on demand, and the guard can
thus only run when someone actually queries the value.
Note further that a guard is allowed to modify the value that is passed
to it (e.g. to clamp it to a certain range).

Task-number: QTBUG-85032
Change-Id: I3551e4357fe5780fb75da80bf8be208ec152dc2a
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-06-25 14:11:56 +02:00
Fabian Kosmale 6a24ac7c4e QNotifiedProperty: pass old value to callback if requested
Check at compile time whether the static callback takes an argument
(which has to be of the same time as the type of the property). If so,
retrieve the old value and pass it to the callback.

Change-Id: Ib1c4c9e05b826b6be492b03f66fa72ad015963ee
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-06-25 14:11:56 +02:00
Fabian Kosmale c2fb27f054 Fix QProperty
This fixes two issues with QPropery:
1. QPropertyBindingPrivate::evaluateIfDirtyAndReturnTrueIfValueChanged
   calls a user provided evaluaton function. That one might actually
   destroy the binding and delete the QPropertyBindingPrivate instance.
   We need however to keep it alive until the function returns.
2. There was an infinite loop between QPropertyObserverPointer::notify
   and QPropertyBindingPrivate::markDirtyAndNotifyObservers. This can be
   observed when running tst_palette in qqc2. By returning early in
   markDirtyAndNotifyObservers if dirty is already set, the issue is
   avoided.

Change-Id: I1f0df05a5a9fa98554183263a25e16747c4d2274
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Simon Hausmann <hausmann@gmail.com>
2020-06-25 14:11:56 +02:00
Tor Arne Vestbø 6d376ea5f4 cmake: Apply symbol visibility settings to Objective-C/C++ sources
Otherwise the Objective-C++ sources will be built with the default
compiler visibility (visible), and then linked with moc-generated
C++ sources that have the Qt overridden hidden visibility, resulting
in linker warnings such as:

  ld: warning: direct access in function 'X' from file 'moc_foo.cpp.o'
  to global weak symbol 'Y' from file 'bar.mm.o' means the weak symbol
  cannot be overridden at runtime. This was likely caused by different
  translation units being compiled with different visibility setting

Change-Id: I22e15e7e181a74de8c0a22c73d06e600e582d7fd
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-06-25 10:45:34 +02:00
Allan Sandfeld Jensen a418fd5cbb Improve casting
Make a handful of narrowing casts explicit

Change-Id: I318e9778840f2437963377b6b97f269d569909dc
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
2020-06-25 10:19:09 +02:00
Sona Kurazyan d7ccd8cb45 Remove QByteArray's methods taking QString and their uses
[ChangeLog][QtCore][QByteArray] Remove method overloads taking
QString as argument, all of which were equivalent to passing the
toUtf8() of the string instead.

Change-Id: I9251733a9b3711153b2faddbbc907672a7cba190
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-06-25 09:54:16 +02:00
Lars Knoll 95e84c0ea9 Allow qMin, qMax and qBound for types that can be losslessly converted
Add overloads for qMin and friends where the arguments are of different
type, but one can be easily promoted to the other. Return the promoted
type. Promotions are only allowed if both types are either signed,
unsigned or floating point numbers.

This should simplify writing code in many case (as for example
qMin(myint64, 1)) and also help reduce source incompatibilities between
Qt 5 and Qt 6, where the return types for sizes of our containers changes
from int to qsizetype.

Change-Id: Ia6bcf16bef0469ea568063e7c32f532da610d1cd
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-06-25 06:20:18 +02:00
Mike Achtelik 907027ab80 QMetaObject: Compare threadIds when checking receiver thread
Comparing threadIds is faster, especially if invoked from a non qt thread,
where QThread::currentThread() needs to create a QAdoptedThread/QThreadData first.

Pick-to: 5.15
Change-Id: I44b3013283754f1a5ac9d62debcf4c82be77c554
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-06-25 06:11:57 +02:00
Thiago Macieira cb1c66bd20 Fix conversion of QVariant() in QJsonArrays and Objects (through CBOR)
When I wrote the QCborValue to QJsonValue conversion, I used
QJsonValue::Undefined because it allowed to keep some level of
compatibility in CBOR, despite the function documentation saying that
CBOR undefineds became JSON nulls. Which they did.

But when we converted QJson{Array,Object} to be backed by CBOR classes,
that Undefined meant the insertion into the array/object actually
deleted the entry.

[ChangeLog][JSON] Fixed a regression from 5.14 that caused values of
default-constructed QVariants in QVariantLists, QVariantMaps and
QVariantHashes to disappear when converting to JSON via
fromVariant{,List,Map,Hash}.

Fixes: QTBUG-84610
Pick-to: 5.15
Change-Id: Ic0987177fe463f352db9bd84993f116e2bdacc75
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-06-24 22:43:57 +02:00
Edward Welbourne bcc3472aa2 Add a warning and tidy some trivia
An attempt to setSpec(TimeZone) gets treated as setSpec(LocalTime), as
the method has no parameter to carry *which* zone; this was done
silently, but should be brought to the caller's attention.  So warn.

Moved a declaration closer to its use, folded an if/else into a single
assignment using ?: and removed a fatuous \fn just before the function
it desribed.

Change-Id: Ia35c87e0ba373675d3ae1e6ef3bf05016c06c48d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-06-23 14:01:12 +02:00
Edward Welbourne a04411119e Save DST status when computed for a mutable QDateTimeData
Most calls to localMSecsToEpochMSecs() happen from functions that
can't save the DST status it repots (due to the data being const); but
refreshDateTime() can and (given its name) clearly should.

Pick-to: 5.15
Change-Id: Ib53c88d2233925da275f0ac52f768cada92c5d2d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-06-23 14:01:12 +02:00
Marc Mutz 44da43e8e4 QString: add char8_t overload of fromUtf8()
Use the overload-with-template trick from P1423 to avoid ambiguities
when existing callers pass 0 or nullptr.

Add a qdoc-ignored macro to hide the fact that the overload is a
template.

[ChangeLog][QtCore][QString] Added char8_t overload of fromUtf8().

Change-Id: Iaa2d365bfa161ef36cc73fa3bad50aabf34d01db
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-06-23 06:31:28 +00:00
André Klitzing 1304040e5d Fix living QObject after shutdown of QCoreApplication
QThreadPool is a QObject and must be deleted if the QCoreApplication
is being destroyed to release the underlying ThreadData.
A Q_GLOBAL_STATIC won't release any memory is not able to
manually release it.

Pick-to: 5.15
Task-number: QTBUG-84234
Change-Id: Ia82bcff2b564b753ed687f025ff86fa1bed1e64c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-06-23 08:31:00 +02:00
Thiago Macieira 727fab7d29 QCborMap: remove the optimization not to detach from non-const find()
All our tests were find() == end() or !=, which depends on the
evaluation order of the arguments to operator==(). If end() is called
first, then the detach happens before find() and all is well. But if
find() is called first, it may return end() before end() detaches.

[ChangeLog][QCborMap] Fixed a bug that could cause the iterator returned
from a failing key search with find() not to match end(). Now, every
call to find() will detach in shared QCborMaps; to avoid this, use
constFind() and constEnd().

Fixes: QTBUG-84583
Pick-to: 5.15 5.12
Change-Id: I552d244076a447ab92d7fffd161793496a8d03a8
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-06-23 00:29:50 +00:00
Thiago Macieira cdcb75c46b QMimeDatabase/zlib: fix build with z_const macro empty
The next_in pointer in z_stream is defined as "z_const Bytef *" but
z_const is actually an empty macro in most builds. Since our data is
read-only constexpr, we need this const_cast to compile.

Fixes: QTBUG-84457
Pick-to: 5.15
Change-Id: Ied637aece2a7427b8a2dfffd1612a01ae46f7c1a
Reviewed-by: David Faure <david.faure@kdab.com>
2020-06-23 00:29:31 +00:00
Marc Mutz ffb73175e6 QVarLengthArray: add missing move special member functions
A QVLA is copyable, so it should be movable, too.

Added a helper function a la P1144's uninitialized_relocate_n to deal
with the QTypeInfoQuery stuff. This way, the code is re-usable
everywhere it's needed. The same cannot be said for QArrayDataOps,
which only a parent can love...

[ChangeLog][QtCore][QVarLengthArray] Added missing move constructor
and move-assignment operator.

Task-number: QTBUG-39111
Change-Id: If0dc2aa78eb29062d73dcd3dc4647ba345ae39e6
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-06-22 17:24:07 +00:00
Lars Knoll 03326a2fec Move implementation of QVector/List back to qlist.h
And name the main class QList. That's also the one we document.

This gives less porting pain for our users, and a lot less churn
in our API, as we use QList in Qt 5 in 95% of our API.
In addition, it gives more consistent naming with QStringList and
QByteArrayList and disambiguates QList vs QVector(2|3|4)D.

Fixes: QTBUG-84468
Change-Id: I3cba9d1d3179969d8bf9320b31be2230d021d1a9
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-06-20 20:01:33 +02:00
Christian Ehrlicher 4298385ec3 Remove deprecated roles BackgroundColorRole and TextColorRole
Change-Id: I2729102d1efa9f3809ec22c29517961800e7dc6d
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-06-20 15:28:59 +02:00
Christian Ehrlicher 67fdb0fe6a QRect(F): remove deprecated functions
They were deprecated since Qt5.0 so it's time to go away.

Change-Id: Ib0192f9048ff15c9d47fb1a23046ccfe0ee7d807
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-06-20 07:58:35 +00:00
Christian Ehrlicher ef4bed7196 QSortFilterProxyModel: remove deprecated functions
Change-Id: I1775fafc6cca88c0c65032a1fd126dc3b42975c9
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-06-20 09:58:06 +02:00
Karsten Heimrich 18ec53156e Move QTextCodec support out of QtCore
* Assume UTF-8 on all Unix like systems
* Export some functions to be able to compile QTextCodec once
  moved to Qt5Compat.

Task-number: QTBUG-75665
Change-Id: I52ec47a848bc0ba72e9c7689668b1bcc5d736c29
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-06-20 02:04:38 +02:00
Giuseppe D'Angelo 3e1d03b1ea Port Q_STATIC_ASSERT(_X) to static_assert
There is no reason for keep using our macro now that we have C++17.
The macro itself is left in for the moment being, as well as its
detection logic, because it's needed for C code (not everything
supports C11 yet).  A few more cleanups will arrive in the next few
patches.

Note that this is a mere search/replace; some places were using
double braces to work around the presence of commas in a macro, no
attempt has been done to fix those.

tst_qglobal had just some minor changes to keep testing the macro.

Change-Id: I1c1c397d9f3e63db3338842bf350c9069ea57639
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-06-19 19:38:23 +02:00
Sona Kurazyan 5b686e208f Don't truncate parameters passed to QStringView::{first/last/from/slice}
QStringView doesn't need to convert qsizetype parameters to int.

Change-Id: Iba8b5259ab3ed7a24a57bb6748446fd3e45bb182
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-06-19 19:37:51 +02:00
Alex Trotsenko 7aa327648c QProcess/Win: Avoid reentering the code in _q_processDied()
In case drainOutputPipes() makes a recursion, setting 'dying' to true
should protect the code from reentering. But, the next call to
QProcessPrivate::cleanup() resets this variable, which allows a
secondary pass. So, we should postpone setting 'dying' to false until
a new process session is started.

Fixes: QTBUG-33731
Change-Id: I269ad3b8defa32aa714ea13f8803a07259f475dc
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-06-19 19:48:50 +03:00
Alexandru Croitor 10f8ebe3e2 CMake: Provide the minimum darwin deployment target needed by Qt
This is useful information for people that want to use Qt in their
project with CMake.

Unfortunately there is no good way to actually set
CMAKE_OSX_DEPLOYMENT_TARGET automatically with the Qt provided value,
because it needs to be set before the first project() call in a
CMake project.

This means it can be set either on the command line, or manually by the
application developer in CMakeLists.txt before the first project()
call or via a CMake toolchain.

In Qt 6 we provide a CMake toolchain file with the deployment target
already set, so if the application developer uses the Qt generated
toolchain, they will get the value automatically.

In Qt 5 the value can only be read for informational purposes only,
from the QT_DARWIN_MIN_DEPLOYMENT_TARGET property on the
Qt5::Core target. The same property is set in Qt 6 for compatibility
resons.

Task-number: QTBUG-76167
Task-number: QTCREATORBUG-22466
Pick-to: 5.15
Change-Id: Id61d70dc9a1b7a0e7cdb90b1e679171ea178126b
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2020-06-19 18:41:23 +02:00
Andreas Schwab 47a4e6a949 Fix note alignment
It is architecture defined whether .align means .palign or .balign.  Use
.balign to make that explicit.

Change-Id: I8c7e3760b37edfb207b7088319a338a1f583255b
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-06-19 14:28:47 +02:00
Andrei Golubev 68de38ded1 Document QPromise API
Documented QPromise. Added snippets under auto tests
to ensure they are compiled and run in CI.

Task-number: QTBUG-81586
Change-Id: I20084e38f9d2f6fc8540f95ee03ec3d2827177e8
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
2020-06-18 18:28:41 +03:00
Karsten Heimrich c1e5044d22 Fix QString{Encoder|Decoder} documentation
Change-Id: I8e29846db77581953d90c818060950744cb9f521
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2020-06-18 14:45:54 +02:00
Lars Knoll 7b5d5faae1 Remove unused functionality from QTypeInfo
Change-Id: I10fe4cde7a18047599e656cc3bb67b0dfe18a986
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-06-18 12:02:51 +02:00
Fabian Kosmale add1807d44 QMetaMethod: implement returnType via returnMetaType
Change-Id: I6c77331c3bfe83b00e4bbdf960216df696aadabd
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-06-18 11:57:38 +02:00
Andy Shaw 59b03992ab Undef Q_DECL_ENUMERATOR_DEPRECATED when having no deprecation warnings
Since Q_DECL_ENUMERATOR_DEPRECATED can be explicitly set to something
other than QT_DEPRECATED, then it needs to be explicitly undefined
when QT_NO_DEPRECATED_WARNINGS is used to prevent it from showing a
warning.

Pick-to: 5.15
Change-Id: Ibe73ff5e7b5aa5eff93d0c4c0a38a33855a9a330
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-06-18 11:54:09 +02:00
Lars Knoll 3898c022a6 Remove some dead code
Change-Id: I4e3906d5e6313014b207aa7bc63a0ff5e21b0261
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-06-17 22:05:27 +02:00
Lars Knoll a42dd2ffe0 Cleanup float-equal warnings
Consistently use the macro from qcompilerdetection.h instead of manually
disabling the warning for three different compilers.

Change-Id: Id59d30047c8a504e1082d7e47c02f4746fddf9d6
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-06-17 22:05:21 +02:00
Giuseppe D'Angelo a97cda8b8b QMath: make the math-related functions templates
This way we can take and return more datatypes than qreal,
just piggy-backing on the std:: functions (which take any
integral and any fp datatype).

This makes these functions pure ADL enablers (like qSwap).
A type (hi, QAngle!) that wants to have math related functions
simply needs those defined in its own namespace using the
"standard" names (sin, cos, etc.); and we'll find them
using the q-prefixed function.

qCeil and qFloor signatures however still return int
to avoid too much breakage.

The FP-related functions (qIsInf, etc.) have been left
alone. Those are "special"; a lot of care is in qnumeric
because some implementations define them as macros, which
blocks any possibility of user-defined overloads found via
ADL.

[ChangeLog][QtCore][QtMath] The math-related functions
(such as qSin, qCos, qPow and so on) can now take an
arbitrary parameter rather than just qreal. They will do
a ADL-enabled call to the respective free function, using
the functions in namespace std as a fallback. Moreover,
they will now return whatever datatype is returned by the
free function (e.g. long double if the call is placed on
a long double).

Change-Id: I111084eda52556663802e65a85e082187c2a6861
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2020-06-17 17:56:48 +02:00
Joerg Bornemann 4ab5432081 CMake: Write object libs of Qt resources to .prl files
Since commit e343affd63 we're creating object libraries for Qt
resources in static libraries. Those must be reflected in the
generated .prl files for static builds of Qt.

In qt_add_resource, we now calculate the install locations of the
object files of rcc-generated C++ files and save them in the target
property QT_RCC_OBJECTS. This property is then passed to
QtFinishPrlFile to write the object file paths to the .prl file.

Change-Id: Ic383892d723d02fc91f712bc2dbcbc90babad074
Reviewed-by: Simon Hausmann <hausmann@gmail.com>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-06-16 17:56:35 +02:00
Joerg Bornemann e817ac3d68 Document that Q_INIT_RESOURCE is not necessary for CMake-based projects
Since commit e343affd63 we're creating object libraries for Qt
resources in static libraries when building Qt or a Qt-based project
with CMake. The purpose of this is to remove the need for calling
Q_INIT_RESOURCE in static libraries.

Add a note to the documentation and a changelog entry.

[ChangeLog][CMake] Calling Q_INIT_RESOURCE in static libraries is not
strictly necessary anymore for CMake-based projects. There, for each
resource, an object library is created which is linked into consuming
projects. This ensures that the linker does not discard the resource's
object file, and its initializer is called automatically.

Change-Id: I70de439f964dc7257a2255683eda4d434fa451d0
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-06-16 17:56:09 +02:00
Sona Kurazyan 08699a8273 Use qsizetype instead of int in QByteArray's helper methods
This is needed as a preperation for introducing QByteArrayView, which
will use qsizetype instead of int for size. Since these methods will be
reused by QByteArrayView, they need to use qsizetype.

Change-Id: Ia2d94ec70742d4f9326de9548fd7534d56d3a5ac
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-06-16 17:10:44 +02:00
Lars Knoll 30ad4cf558 Warn about constructing QMetaTypes/QVariants with invalid type ids
Warn about using an invalid type id in all cases. So far, only some
constructors of QVariant would warn. Move the warning over to
the place where we map a typeid to a QMetaTypeInterface to catch all
cases.

Change-Id: I4cd48a2b5d6c597dbf2afbeae9b811cd0819b768
Reviewed-by: Karsten Heimrich <karsten.heimrich@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-06-16 13:49:45 +02:00
Lars Knoll 87bc5f7a7c Make the default constructor of QMetaType constexpr
And inline the copy constructor forwarding to another one.

Change-Id: I3c4f76f7b14edd84f512ef0687416b20940e333a
Reviewed-by: Karsten Heimrich <karsten.heimrich@qt.io>
2020-06-16 13:49:39 +02:00
Alexandru Croitor a08bf7f00a CMake: Fix usage of gc_binaries feature
The qt_internal_apply_gc_binaries function should apply both compile
and link flags, not just link flags.

The flags should be applied publically to all consumers of Bootstrap
regardless if the gc_binaries feature is enabled.

The flags should be applied publically to Core only in case if the
feature is enabled (aka for static builds only).

Change-Id: Id42af0d9b527004d74c04eff2c9e3c2be1e76aac
Fixes: QTBUG-84461
Task-number: QTBUG-83929
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2020-06-12 22:34:12 +02:00
Lars Knoll 413a9f9bde Port remaining usages of QStringRef in QtCore to QStringView
Task-number: QTBUG-84319
Change-Id: If77bc94c18e8d522b4577050091cd7d7aa941311
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-06-12 15:51:11 +02:00
Lars Knoll d6b7476134 Port qdatetime away from QStringRef
Task-number: QTBUG-84319
Change-Id: Ieeb25933a8062bdf0d2835f4d78e86daac1e8720
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-06-12 15:50:36 +02:00
Lars Knoll 4d31ddf573 Port QDir, QFile from QStringRef to QStringView
Task-number: QTBUG-84319
Change-Id: I7feb5c12eb5a8504c34292e0da75332b5ba9ef20
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2020-06-12 15:50:17 +02:00
Lars Knoll 5caf7ef3b1 Remove deprecated methods
Those aren't part of Qt 6 anymore.

Change-Id: I9ea7de07d89156e8d0fb6ae9deeb24e0de5fa429
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-06-12 15:50:08 +02:00
Giuseppe D'Angelo a769ca1d91 Assume static_assert is available everywhere in C++
I'm not adding a static_assert(Q_COMPILER_STATIC_ASSERT),
as ironic as that might be; we have enough
static_asserts around already which will surely cause
errors, in case of a broken compiler.

The detection itself has to stay around for C support.

Change-Id: Id32f5c8e0ab2e461fba7b0525da5eeaaea77c68d
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-06-12 14:30:37 +02:00
Mårten Nordheim a114b133f5 QByteDataBuffer: Remove the ctor and dtor
Remove the ctor as it was not doing anything special and the implicitly
generated one will do what we need anyway. And calling clear before
destructing wasn't useful, so just remove the dtor in general.

Change-Id: I9ed722d4db3ea220d32082d4cb38c10a9af34d5e
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2020-06-12 14:05:24 +02:00
Sona Kurazyan 838025bd73 Include qpromise.h in corelib/CMakeLists.txt
Change-Id: I2a854ae5774c0b98387782af685d903818475173
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-06-12 14:00:03 +02:00
Thiago Macieira 03dfd4199d QMimeDatabase/zstd: use -T1 instead of --single-thread
Some older versions of the command-line tool don't have --single-thread
but do have -T1. They're slightly different according to the
documentation, but it's not important to us. What we want is to make
sure we consume a single CPU during build.

Fixes: QTBUG-84792
Pick-to: 5.15
Change-Id: Ied637aece2a7427b8a2dfffd16129fe88a0466ee
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-06-12 07:26:58 +00:00
Marc Mutz 3f6142f5a1 Rename new slice() method sliced()
The recently-added slice() method has the problem that it's a noun
as well as a verb in the imperative. Like std::vector::empty, which
is both an adjective and a verb in the imperative, this may cause
confusion as to what the function does. Using the passive voice form
of slice(), sliced(), removes the confusion. While it can be read as
an adjective, too, that doesn't change the meaning compared to the
verb form.

Change-Id: If0aa01acb6cf5dd5eafa8226e3ea7f7a0c9da4f1
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-06-11 19:14:03 +00:00
Lars Knoll 03107d0ccd Add some support to flag alias properties
This is required if we want to be able to get rid of the property
cache.

Also reserve a flag for var properties, in case it turns out that we
need to keep the distinction between var and QVariant properties in QML.

Change-Id: I55c2191adcc2d94bd8f148216e26423defaa900f
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-06-11 19:39:57 +02:00
Lars Knoll d0689ec867 Get rid of the obsolete isEditable flag for properties
Change-Id: I54411bd8e223671523c9c8fad5c80bfa6b5b7097
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2020-06-11 19:39:56 +02:00
Fabian Kosmale 9b383f3d5c Further metaobject cleanups
Remove QMetaProperty index member. Instead, add a function to compute it
on demand from the QMetaObject.
Also remove the remains of the signature function.

Original-patch-by: Lars Knoll <lars.knoll@qt.io>
Change-Id: I5b16d444e7474216a535e3e93a118825cd0e6090
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-06-11 19:39:55 +02:00
Lars Knoll f5e8f9c814 Cleanup QMetaClassInfo
Change-Id: I0b4fa4568f8479106053e0fae72fc802fca74a65
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-06-11 19:39:55 +02:00
Fabian Kosmale 630c7b4811 Cleanups in QMetaProperty
This changes the layout of the meta object data, so
also bump the meta object revision.

Original-patch-by: Lars Knoll <lars.knoll@qt.io>
Change-Id: I176fb16c207e8ebe59e358e69554be813406232f
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-06-11 19:39:54 +02:00
Lars Knoll 5603be705e Qt6: remove support for property flags being functions
Property flags should be compile time booleans, not something to
be determined at runtime.

We've been using this to dynamically disable some properties in QWidget
based classes dependent on the state of a different property, but this
should better get implemented on top of our widgets.

Change-Id: I6296e8761303ecdf24d9e842142e8596304c015d
Reviewed-by: Simon Hausmann <hausmann@gmail.com>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-06-11 19:39:53 +02:00
Lars Knoll 679492ecc6 Clean up QMetaEnum code
Change-Id: I9c1fcfd72890fb3d69d2d9caed7f3cff931c3ff6
Reviewed-by: Simon Hausmann <hausmann@gmail.com>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-06-11 19:39:53 +02:00
Lars Knoll ee709e3236 QMetaMethod: clean up offset handling
Centralize the offset handling in one place and avoid lots of magic
numbers in various places. Expose the number of ints per method in
QMetaObjectPrivate as a constant, so that code in other places can
access it via private API.

Change-Id: I59790287a17ea47e6160ec65d9c8d0aaee748947
Reviewed-by: Simon Hausmann <hausmann@gmail.com>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-06-11 19:39:52 +02:00
Lars Knoll 39e229fe13 Remove more QStringRef overloads that aren't required
The QStringView versions will do the job just fine :)

Task-number: QTBUG-84319
Change-Id: I376b310deb27683fd98bbcc55e0f56014cacecc3
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
2020-06-11 15:52:25 +02:00
Lars Knoll 8ea11e0cf7 Remove most overloads taking a QStringRef from the QString API
Add QStringView overloads where they were missing. This keeps things
almost 100% source compatible.

Task-number: QTBUG-84319
Change-Id: Ica8ee773b2ce655e9597097786117959e34b236e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-06-11 15:52:25 +02:00
Marc Mutz bf5629af44 QString: remove remnants of old multiArg()
Change-Id: I3bc5bab491ce74daa37f320ea5d4324f9827e870
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-06-11 15:52:25 +02:00
Friedemann Kleint dee140a79a Windows: Fix registry string read failures
On Windows 7, it has been observed that the time zone registry key
is a string of size 256 padded with 0. Use QString::fromWCharArray(),
relying on 0-termination to cope with it.

Pick-to: 5.15
Fixes: QTBUG-84455
Change-Id: I5d242e2de73c1ea09344aee8de8eea941bc52bab
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-06-11 07:19:00 +02:00
Lars Knoll 82a0f4a193 Port mimetypes away from QStringRef
Task-number: QTBUG-84319
Change-Id: I2bed1149df7f11495fd9dc3577828c0790b17dab
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
2020-06-11 02:50:49 +02:00
Lars Knoll ecacb3c62f Port QLocale::quoteString from QStringRef to QStringView
Task-number: QTBUG-84319
Change-Id: I29726ebfda7a5f51a0a6ee29e905b0b904256c8d
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-06-11 02:50:16 +02:00
Kai Koehne 732c670590 Doc: Improve documentation for QLocale::FormatType
LongFormat and ShortFormat are not limited to day and month names.
Different locales might also use numbers for months instead of strings,
so the example is a bit misleading.

Instead of extending the enum description even more there's now
examples in the dateFormat(), timeFormat(), dateTimeFormat()
functions.

Task-number: QTBUG-83841
Pick-to: 5.15
Change-Id: Icea2cbce7e9505d706a2171e7d1f4486abdb20be
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2020-06-10 14:49:18 +00:00
Giuseppe D'Angelo 8e98a161e9 Long live std::pair!
Make QPair an alias for std::pair, and qMakePair just a forwarder
towards std::make_pair.

Why? Fundamentally to ditch a bunch of NIH code; gain for free
structured bindings, std::tuple and std::reference_wrapper
compatibility, and so on.

Breakages:

* Some that code manually forward declares QPair.
We don't care about it (<QContainerFwd> is the proper way).

* Some code that overloads on std::pair and QPair. Luckily
it's mostly centralized: debug, metatypes, testing macros.
Just remove the QPair overload.

* Usages of qMakePair forcing the template type parameters.
There are a handful of these in qtbase, but only one was actually
broken.

* std::pair is NOT (and will never likely be) trivially copiable.
This is agreed to be a mistake done by practically all implementations
in C++11, can can't be fixed without breaking ABI.
Some code using QPair assuming it's trivially copiable may break;
exactly one occurrence was in qtbase.

* QMetaType logic extracts the type names in two different ways,
one by looking at the source code string (e.g. extracted by moc)
and one via some ad-hoc reflection in C++. We need to make
"QPair" (as spelled in the source code) be the same as "std::pair"
(gathered via reflection, which will see through the alias)
when compared. The way it's already done e.g. for QList is
by actually replacing the moc-extracted name with the name
of the actual type used in C++; do the same here.
On libc++, std::pair is actually in an inline namespace --
i.e. std::__1::pair; the reflection will extract and store
"std::__1::pair" so we need an ad-hoc fix to QMetaType.

[ChangeLog][QtCore][QPair] QPair is now an alias to std::pair,
and does not exist as a class in Qt any more. This may break
code such as functions overloaded for both QPair and std::pair.
Usually, the overload taking a QPair can be safely discarded,
leaving only the one taking a std::pair. QPair API has not changed,
and qMakePair is still available for compatibility (although
new code is encouraged to use std::pair and std::make_pair
directly instead).

Change-Id: I7725c751bf23946cde577b1406e86a336c0a3dcf
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-06-10 16:49:08 +02:00
Marc Mutz ce5931aaf2 QLatin1String: add toString()
For symmetry with other views.

[ChangeLog][QtCore][QLatin1String] Added toString().

Change-Id: I4a0677e2dbd009e8da097f4cb0dbb27a6baf5469
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-06-10 16:48:43 +02:00
Lars Knoll 4ab3089a2c Port QUrl away from QStringRef
Task-number: QTBUG-84319
Change-Id: I6167599ac86f17d37fbb6ea90d302641969b0f72
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-06-10 09:09:29 +02:00
Lars Knoll 957b999683 Port QMetaObject away from QStringRef
Task-number: QTBUG-84319
Change-Id: I905c2e1780a2ec42b1d189494bd5399e124df354
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-06-10 09:09:22 +02:00
Lars Knoll 7b05e5df18 Port QLibraryInfo from QStringRef to QStringView
Task-number: QTBUG-84319
Change-Id: I500e43e1918b22d636f11c915967e75223be9ef2
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-06-10 09:09:15 +02:00
Giuseppe D'Angelo c208b648f9 qGetPtrHelper: make it work with null d-pointers
operator-> comes with the precondition that the smart pointer
is not null. Having null d-pointers is a valid use case, so
enable it by using get() instead of operator->().

Change-Id: I78d77ca8c44e92a65ca98b15d0620bc3a1917ad2
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2020-06-10 02:46:42 +02:00
Giuseppe D'Angelo d7c75ee005 Q(E)SDP: add get()
[ChangeLog][QtCore][QSharedDataPointer] Added get() for
STL compatibility.
[ChangeLog][QtCore][QExplicitlySharedDataPointer] Added get() for
STL compatibility.

Change-Id: I1acb3b4f4bd70842ed53f6437be10404b67d9909
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2020-06-10 00:08:12 +02:00
Joerg Bornemann 2a767ab4bb CMake: Fix libraries in qt_lib_XXX_private.pri files for NMC
qmake_use.prf understands the _DEBUG and _RELEASE suffixes for
QMAKE_LIBS_XXX entries. The CMake configuration "Debug" is considered
for the _DEBUG entries, "Release" and "RelWithDebInfo" for _RELEASE.

The qt_lib_XXX_private.pri files are now generated in multiple steps:
1. The QT_LIBS_XXX information is generated per $<CONFIG> and written to
   .cmake files.
2. A preliminary qt_lib_XXX_private.pri file is generated, containing
   only configuration-independent data.
3. A custom command runs the QtGenerateLibPri.cmake script that combines
   the files from step 1 and 2 into the final qt_lib_XXX_private.pri
   file.

The same is done for mkspecs/qmodule.pri.

To be able to trigger custom commands from header modules, which are
interface libraries, we introduce one XXX_timestamp ALL target per
header module that creates a timestamp file. To that XXX_timestamp
target we add the pri file generation target as dependency.

Fixes: QTBUG-84348
Change-Id: I610f279e37feeb7eceb9ef20b3ddfecff8cfbf81
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-06-09 21:04:26 +02:00
Lars Knoll d2833a3ce5 Ensure left/right/mid behave in a compatible way
QString and QStringRef did bounds checking for left/right/mid, whereas
QStringView was asserting on out of bounds.

Relax the behavior for QStringView and do bounds checking on pos/n
as well. This removes a source of potentially hidden errors when porting
from QStringRef (or QString) to QStringView.

Unfortunately, one difference remains, where QByteArray::left/right()
behaves differently (and somewhat more sane) than QString and
QStringRef. We're keeping the difference here, as it has been around
for many years.

Mark left/right/mid as obsolete and to be replaced with the new
first/last/slice methods.

Change-Id: I18c203799ba78c928a4610a6038089f27696c22e
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-06-09 16:51:16 +02:00
Andrei Golubev 385f0732d9 Add QPromise implementation
QPromise and QFuture created from it share the same internal state
(namely, QFutureInterface object). QPromise provides high-level
management of the shared resource, ensuring thread-safe behavior
on construction and destruction (also taking into account
QFuture::waitForFinished() semantics).

QFuture acts as a primary controller of QPromise via action
initiating methods such as suspend() or cancel(). QPromise is
equipped with methods to check the status, but the actual
handling of QFuture action "requests" is user-defined.

[ChangeLog][QtCore][QPromise] Added QPromise class to accompany
QFuture. It allows one to communicate computation results and
progress to the QFuture via a shared state.

Task-number: QTBUG-81586
Change-Id: Ibab9681d35fe63754bf394ad0e7923e2683e2457
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2020-06-09 17:21:38 +03:00
Albert Astals Cid 20ba86262f Add since markers for the Qt::endl, etc.
The Qt namespace was introduced in 461e89ee1a which is only since 5.14

Also remove QTextStreamFunctions:: from the documentation of the
deprecated functions since the QTextStreamFunctions namespace is a syntaxic workaround.

Pick-to: 5.15
Change-Id: I9c15bcc49984bf5f5099c2f7df6b8adb3d2c61fb
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2020-06-09 15:26:00 +02:00
Fabian Kosmale 4c32443bc9 metatype: Do not try analyze T in Q*Pointer<T> if T is incomplete
Change-Id: I41737ce470f6d2b071ad5e85f8cad1da3869241c
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-06-09 14:20:31 +02:00
Giuseppe D'Angelo 85c1009dbb QPointer: add get()
[ChangeLog][QtCore][QPointer] Added get() for STL
compatibility.

Change-Id: I84bf9d58cd92e1bc74f731c3e9002031045f8f5c
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2020-06-09 04:44:22 +02:00
Giuseppe D'Angelo c55f45e875 QArrayData: stop using std::is_literal_type
The trait is deprecated in C++17 and removed in C++20. Enforce
the same meaning by using a constexpr variable instead.

Change-Id: Ief13afc3f889af09094391e626037778d879c4f5
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-06-09 00:41:30 +02:00
hjk b12f82018d QResource: Use some qUtf16Printable() instead of toLocal8Bit().data()
Change-Id: Ia255052ea33e7d7fccb0627accd20315bbe5d393
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-06-08 18:20:42 +02:00
Eskil Abrahamsen Blomfeldt 078c3b7d68 Remove deprecated text-related enums
Fixes: QTBUG-82367
Change-Id: Iff2645759657f8e350754e90e791dbd583017671
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-06-08 15:04:19 +02:00
Lars Knoll 38096a3d70 Implement first/last/from and slice() for string-like classes
These methods are scheduled as a replacement for left/right/mid()
in Qt 6 with a consistent, narrow contract that does not allow
out of bounds indices, and therefore does permit faster
implementations.

Change-Id: Iabf22e8d4f3fef3c5e69a17f103e6cddebe420b1
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-06-08 13:17:32 +02:00
Marc Mutz 6ec41bd550 QSsl: port a local QStringList to QDuplicateTracker
Apart from a more fitting, minimal, API, QDuplicateTracker also
transparently uses C++17 pmr::monotonic_buffer_resource to avoid, or
at least reduce, memory allocations.

The code is the first user of the collected data, so make that
available by adding QDuplicateTracker::appendTo(Container&) methods.

Change-Id: Ibd8810c0070db7e6b3ead6d6a569facdab88b646
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-06-08 10:53:20 +00:00
Fabian Kosmale 3f5b5e4859 Use static function instead of lambda to workaround a MSVC compiler bug
The seemingly useless template parameters are needed to avoid a
(distinct) bug in MSVC 2019 < 16.6, and should be removed once we have a
newer version in the CI.

Task-number: QTBUG-82945
Fixes: QTBUG-83600
Change-Id: I5b22a2259aa16ae90eca7d4f3bd2e4fa1116a73b
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-06-08 12:49:01 +02:00
Christian Ehrlicher e0fc998e87 ItemModels: remove deprecated functions
Change-Id: Id3430493a62b11977f64e146f7668ca30935b959
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-06-07 19:02:47 +02:00
Christian Ehrlicher 32b586864e QAbstractItemModel: remove deprecated setRoleNames()
Remove setRoleNames() and all its now unneeded helper functions.

Change-Id: I0a83751aace35700655d4cc7c79278325994cbdd
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-06-07 10:01:48 +02:00
Oliver Wolff 45b0f1be68 Remove winrt
Macros and the await helper function from qfunctions_winrt(_p).h are
needed in other Qt modules which use UWP APIs on desktop windows.

Task-number: QTBUG-84434
Change-Id: Ice09c11436ad151c17bdccd2c7defadd08c13925
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-06-06 20:25:49 +02:00
Lars Knoll aa81b90738 Remove unused argument from method
Task-number: QTBUG-84635
Change-Id: I9a1789e0481977e9fa26a915ff3bc776d0a37e75
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
2020-06-06 17:19:02 +02:00
Lars Knoll 3615a5813a Remove unused function pointers in QVariant::Handler
Task-number: QTBUG-84635
Change-Id: Icfbd1aae26b0453426d93e0af64d84d6403b8e3b
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
2020-06-06 17:19:02 +02:00
Marc Mutz ccbf6ae0bb QDir: port from QStringRef/split() to QStringView/tokenize()
Port away from random-access of the returned sequences. That's
neither necessary nor does it make the code more readable than
the alternative single-pass implementation used here.

As a drive-by, make applying NRVO more likely by re-using the
`result` variable for all returns after its declaration.

Change-Id: I2c3bbaefa6b6f08ebf0b90fb7be62e3c6243f19d
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2020-06-06 13:43:04 +02:00