For PicturesLocation we add a second path pointing to
system assets. This url is understood by both QFile (using
a dedicated file engine), and QFileDialog, such that if
you point the dialog to the url, it will show a native
image picker dialog.
Change-Id: Ic79393440ab399ed4802cc6d84ec7ad36cbb9369
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
This also reduces the number of variables modified in each loop from two
(l and i) to one (just i) and avoids calling str.length() all the
time. Those should be no-op changes, but why not help the optimizer?
Change-Id: I8895c35f84d545dba45bffff13bc4147ae53eaab
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Don't use index-based iteration, but use iterators assigning
end() to a variable.
Change-Id: Ia87532349855fa3baa748b62224fc8adf3395dc0
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
It wasn't Q_DECL_EXPORT'ed, and there is no other user in QtCore.
Effects on Linux GCC 4.9 stripped release builds:
text -344B
data +-0B
relocs +-0
Change-Id: Iea0577d58057a145f87a00ec33995d03bacd4f88
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
...instead of rolling a new one on each use.
Effects on Linux GCC 4.9 stripped release builds:
text -156B
data +-0B
relocs +-0
Change-Id: I49e20ea859928d010990fc7a22545dbc1ef106ec
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Help the compiler by building the new status flags in a local
instead of a member variable. Enables value tracking for that
piece of data across several non-inline function calls, leading
to less redundant reads through this->.
Effects on Linux GCC 4.9 stripped release builds:
text -248B
data +-0B
relocs +-0
Change-Id: I2db21439464ad0fff8163a908de3b15df7c4ab6d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Apparently, determining that constant at compile time is a bit too much
work for GCC.
Effects on Linux GCC 4.9 stripped release builds:
text -276B
data +-0B
relocs +-0
Change-Id: I23144e64d57e3a2e1061e69b20f2b72575c273d8
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
The short month names all have length 3, so store them in a multi-
dimensional const char array instead of as a pointer table.
Effects on Linux GCC 4.9 stripped release builds:
text -196B
data -64B
relocs -12 (est., somehow relinfo.pl reports nonsense on QtCore)
Change-Id: If5f83e4f1eb5ba0b0f54b4144abec8b88fb8529f
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Use Haiku's BVolumeRoster API to provide information
about available mount points in QStorageInfo.
Change-Id: I058bbb5f3f33372edc55d3e51079d3e16815f29f
Reviewed-by: Augustin Cavalier <waddlesplash@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
[ChangeLog][QtCore] Classes with the Q_GADGET function can now have properties and
invokable methods. QMetaMethod and QMetaProperty have new overloads that can be used with
a pointer to a gadget. The QMetaType system also gained knowledge of types with the
Q_GADGET macro
Change-Id: I017475f3809181c64fdd66f899e461ad27f5ae47
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
...where passing them by value was not intentional.
Change-Id: Ifd5036d57b41fddeeacfbd3f5890881605b80647
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
There are more than 1000 new entries since the table has been
generated the last time.
Some auto tests needed to be adjusted, because some entries in
the TLD table were removed while others were added.
Change-Id: I4ceec392836d2031dfef49a0c5a857c31b36bb4c
Reviewed-by: Richard J. Moore <rich@kde.org>
Adds conversion from QJsonArray and QJsonObject, and report missing
conversion failures for other QJsonValues.
Change-Id: Ic0c3a952657912401db877b068f7fcc3c08c94c2
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Don't use index-based iteration, but use iterators.
Change-Id: If8dabd56ff880191bb53861e31bfa6a007802c9c
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Make sure from{JulianDay,MSecsSinceStartOfDay}() are in a constexpr'able form
by introducing new private ctors that allow formulating these functions as
single expressions.
Change-Id: Iee98edb74e63c32e98781b885bbb2c5ef5867fd9
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This also enables NRVO in almost all callers (a macro
prevents it in one case), saving one default construction
and one (move) assignment per call.
Effects on Linux GCC 4.9 stripped release builds:
text -896B
data +-0B
relocs +-0
Change-Id: Id3cde01057baaa408c4cbf95d8d15eaeeeec1604
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Bring them into a constexpr'able form, by indexing into the
string literal directly instead of into a static const char[],
which is a declaration not allowed in a C++11 constexpr
function, then mark the functions constexpr.
Change-Id: I6b32a55bf24f85caeb980c0c855b8db0952f914c
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
To ensure QtCore can be rebuilt and get the exact same results,
it is undesirable to hardcode the build date into the library
Also deprecate QLibrayInfo::buildDate since it is relies on the build
date. QLibraryInfo::buildDate was originally meant for evaluation
licenses and such, but isn't used for that any longer.
Change-Id: I98e91ca3e55f877e6ac0e02de289dc29422fc9da
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Haiku supports the realpath implementation, but failed the
original #if check because of the wrong _POSIX_VERSION.
Change-Id: Ibad12de3bf7c1031b2dff3026b5c61e5afd3f3e6
Reviewed-by: Augustin Cavalier <waddlesplash@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The _POSIX_VERSION declared in Haiku is 199009L, so we have
to enable support for setenv/unsetenv explicitly until
Haiku POSIX version is updated.
Change-Id: Ic22374253b0512a6a816257db83b0c649be0585d
Reviewed-by: Augustin Cavalier <waddlesplash@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
TabAllWidgets in QPlatformTheme is replaced by TabFocusBehavior.
[ChangeLog][QtGui] Expose TabFocusBehavior in QStyleHints
Change-Id: Iafaad7c6a5c6bc888d1e124e6ddcdbdc46f37b1c
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
QSharedDataPointer is declared in qshareddata.h, not qsharedpointer.h
Change-Id: I4702f346ae01a8de07a6a9b50f951d2d4a89e1fb
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Short version: fix build on QNX 6.5.0.
C++11 has been included on QNX 6.6.0's libcpp (Dinkum C++11 libs), while
continuing to be unsupported by the older QNX 6.5.0 toolchain.
This patch updates the mechanism for detecting the QNX's libcpp that is being
used during compile time, and also updates the list of C++11 features to be
disabled when QNX C++11 support is not present by adding
Q_COMPILER_UNICODE_STRINGS and Q_COMPILER_NOEXCEPT to it.
Change-Id: Iddb3626206a0d97d7103c1ff17ba0ae953e9a4b9
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Instead of using QString::sprintf() (and converting the result back to QByteArray),
simply do the conversion from uchar to octal digits ourselves, using QtMiscTools.
Change-Id: I452c085b717c71609cd1a9465e31d90e6a0ba54b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The QTimeZonePrivate::Data type is larger than void*,
so holding them in QLists is horribly inefficient.
In addition, this type is held elsewhere in QVector,
so do that here, too.
As well as being faster, also saves 1.3K of text size on
optimized AMD64 builds.
Change-Id: I1ecf3ee0d955f6b19d2269204e2febc2ba2a9d9d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The implementation-private QTzType type is larger than void*,
so holding them in QLists is horribly inefficient.
Fix by holding it in QVector instead (it was already marked
as a primitive type before).
Text size grows by ca. 0.5K, but of course we got rid of all
those pesky heap allocations.
Change-Id: I3b70ed36fa9947b695ffc87c6f6199daa13cb7cd
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The implementation-private QTzTransition type is larger than void*,
so holding them in QLists is horribly inefficient.
Fix by declaring it as a primitive types (it just contains
various integers) and holding it in QVector instead.
Also optimize parseTzTransitions() by preallocating the expected
number of transitions and streaming directly into the container,
resizing to the number of successful read items on error.
Saves roughly 0.5K in text size, too.
Change-Id: Iadec7a7b0721893e477e1778c9fb54afd6e49544
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Both QTzTransitionTime and QTzTransitionRule are larger than void*,
so holding them in QLists is horribly inefficient.
Fix by declaring them as primitive types (they just contains
various integers) and holding them in QVector instead.
While we're at it, make the equality operator for QTzTransitionRule
a constexpr, noexcept non-member, and provide the inequality operator,
too.
As well as being faster, this also saves 1.5K of text size on optimized
AMD64 builds.
Change-Id: I37100522f19556101c334625818dcf8c9a712dd9
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Previously, number() was implemented in terms of setNum().
That makes no sense whatsoever. It creates a temporary
value which requires the function to have an exception
table and an unwinding trampoline. It also introduces
a default constructor (in number()) and a copy assignment
(in setNum()), which breaks the chain of RVOs originating
in the QLocaleData functions.
Instead, implement setNum() in terms of number().
This makes setNum() such a premature pessimisation that
it's probably best to deprecate it in the near future.
There are not many users of it in qtbase left, and it
just pollutes the QString interface.
Effects on Linux GCC 4.9 stripped release builds:
text -708B
data +-0B
relocs +-0
Change-Id: I015c9ddb1ba9c98c2c55e38e54ef7894954ac4ca
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Effects on Linux GCC 4.9 stripped release builds:
text -2024B
data +-0B
relocs +-0
Change-Id: I1a315eb0f94ade2b40be62770c6ddcfc56da9ec0
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
QString::vasprintf() deals just fine with a nullptr format string,
so don't check manually.
The main advantage of dropping the check is that in two of three
cases, we can replace assignment with initialization, thus saving
one default ctor and one (move) assignment.
Change-Id: I08dd24111cd0b92f21ef9f1c3e352ede0f66afe0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
asprintf() is a GNU extension that prints into a string it
allocates internally. Arguably, that's a better name for
QString::sprintf() since it also allocates memory internally.
The main problem with QString::sprintf() isn't that it's
dangerous to use (it is), but that it's not static. It also
returns a reference instead of by-value, breaking RVO.
There is a comment about removing this function completely
in Qt 6.0, but it remains the only printf-style function
in Qt that can allocate the target string, so it's vital
for logging, e.g., and the recommended replacement code
(http://linux.die.net/man/3/vsnprintf) is a nightmare.
So this patch adds static (v)asprintf() methods to replace it.
Further patches will fix up all in-tree callers and finally
deprecate the old (v)sprintf().
Test coverage is provided through the existing tests of
sprintf(), which is implemented in terms of asprintf().
Arguably, the in-tree callers show that QByteArray would
benefit from having an asprintf(), too, as most of the
in-tree code works around its lack with calls
to to{Latin1,Local8Bit}() after using the QString version.
[ChangeLog][QtCore][QString] Added asprintf(), vasprintf().
Change-Id: I8510f8d67c22230653ec0f1c252c01bc95f3c386
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Change-Id: If43dcc2b77fea5ae3ec40cc847467fc21fbd2c83
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Optional parameter DESTINATION to set target rcc file
Example:
qt5_add_binary_resources(GenerateFixture "fixture.qrc")
Task-number: QTBUG-41728
Change-Id: I9dc2fe8e7d5e9ad3873b89f75ab84a2a1b9d1d29
Reviewed-by: Stephen Kelly <steveire@gmail.com>
Qt copyrights are now in The Qt Company, so we could update the source
code headers accordingly. In the same go we should also fix the links to
point to qt.io.
Outdated header.LGPL removed (use header.LGPL21 instead)
Old header.LGPL3 renamed to header.LGPL3-COMM to match actual licensing
combination. New header.LGPL-COMM taken in the use file which were
using old header.LGPL3 (src/plugins/platforms/android/extract.cpp)
Added new header.LGPL3 containing Commercial + LGPLv3 + GPLv2 license
combination
Change-Id: I6f49b819a8a20cc4f88b794a8f6726d975e8ffbe
Reviewed-by: Matti Paaso <matti.paaso@theqtcompany.com>
Since argc/argv is modified by QCoreApplication-derived classes,
a copy of the original arguments is needed for comparison.
This fixes a crash in Qt Quick 2 tests (which use
the -qmljsdebugger=<port> argument) introduced
by dff18b8e80 .
Task-number: QTBUG-30330
Change-Id: Ic145ac923e0a7c504ab16602c8686268e4fd9700
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Unify the behavior of the different operator<< by always using
QDebugStateSaver (appending an optional space at exit), and making
sure that the space(), nospace() setting isn't 'leaked'.
Change-Id: I38e4f82fa6f7419d8b5edfc4dc37495af497e8ac
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
Q_OS_WINRT was missing in the Windows-condition.
Condition was simplified through use of Q_OS_WIN.
Change-Id: I1a49d2d9c413dc2156930b6915e1675abcdde36f
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>