Commit Graph

65655 Commits (7dec8f74a0ab383dd5ba60cbca41c244d69fe83e)

Author SHA1 Message Date
Giuseppe D'Angelo 7dec8f74a0 QPdfWriter: doc fix
When switching the default to Auto, forgot to also fix the
corresponding method documentation.

Change-Id: I4169680b6833a2ea381d950a3a7fad005c14bc71
Reviewed-by: Albert Astals Cid <aacid@kde.org>
2024-02-10 08:49:17 +01:00
Tim Blechmann 72f5793d2e qmake: make unity-buildable
msvc_objectmodel.cpp and qmakeparser.cpp have symbols that may clash.
Removing them from unity builds allows qmake to be unity-built.

Pick-to: 6.7 6.6 6.5
Change-Id: I46443ec979142ab2ebb686f9444b37e1043f0af1
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
2024-02-10 03:08:19 +00:00
Volker Hilsheimer a86321cb66 QTreeView: fix performance regression from accessibility updates
When expanding items in a tree view, the model as seen by accessibility
changes size and structure, and needs to be reset. This was done in
6a4afebc5c by emitting a ModelReset update
at the end of QTreeViewPrivate::layout when laying out the items had
changed the number of visible items.

However, QTreeViewPrivate::layout is called both recursively, and in a
loop when expanding all items, or expanding items to a certain depth,
resulting in a heavy performance hit when each recursion or iteration
causes the accessibility bridge to rebuild its representation from
scratch.

Instead, we now only store a flag that the model has to be reset in
QTreeViewPrivate::layout, and then trigger the reset in the function
that call layout, after the laying out is complete.

Fixes: QTBUG-122054
Pick-to: 6.7 6.6
Change-Id: Icb8384b56a4727c8c5050a1d501aebb55f48aafe
Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2024-02-09 23:16:39 +01:00
Christian Ehrlicher 16c27a83f0 SQL/ODBC: Remove code duplication - merge SQLFetch/SQLFetchScroll
... into an own function instead doing the check if fetchScroll is
available in every function.

Pick-to: 6.7
Change-Id: I8c8a1c8693f667ddf89a660b733e31505427073a
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2024-02-09 23:16:39 +01:00
Christian Ehrlicher 06039b523d SQL/ODBC: avoid code duplication
... by moving the adjustment for the table/schema/catalog name into
splitTableQualifier().

Pick-to: 6.7
Change-Id: Ia392b1c2e7f29e63ea88c21492f2116eac573b5e
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2024-02-09 23:16:38 +01:00
Christian Ehrlicher 686f953bdb SQL/ODBC: remove unneeded qMakeFieldInfo(... QString *errMsg)
This function can be merged with the other overload of qMakeFieldInfo()
because no-one uses it except qMakeFieldInfo() itself.

Pick-to: 6.7
Change-Id: I7ed07ac0c673801fed9c00c9b0ce1628cfea3837
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2024-02-09 23:16:38 +01:00
Alexey Edelev d2f7015184 Introduce NO_GENERATE_CPP_EXPORTS argument for qt_internal_add_module
The argument is inverted GENERATE_CPP_EXPORTS argument. Use it
explicitly for the modules that do not require the autogenerated cpp
exports.

Task-number: QTBUG-90492
Change-Id: Ic67772ba9ed5e40f132a97e7d6844102ad023ff3
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2024-02-09 23:00:04 +01:00
Marc Mutz 1a7edf3ba7 Add q20::erase_if(std::(multi)map, pred)
INTEGRITY has a pre-P1115 implementation of std::erase/erase_if that
returns void instead of the number of erased elements, so make q20's
implementation more specialized, so the compiler will pick it over
INTEGRITY's.

Same as 9b83574e83 did for std::vector.

Pick-to: 6.7
Change-Id: I65149d7c92593126696f281151309b8f02ba4038
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2024-02-09 20:33:05 +00:00
Marc Mutz e1f45ad818 QMap: add missing qHash() overload
Found in API review, but not deemed important enough to still get into
6.7.

Not implementing it for QMultiMap, because there we need to mod out
order of equivalent elements.

The GHS compiler acted up and tried to compile the noexcept
specification, hitting non-existing qHash(QVariant) for QVariantMap
and producing a hard error instead of SFINAE'ing out. As a
work-around, establish an artificial SFINAE-friendly context, but only
for that compiler.

[ChangeLog][QtCore][QMap/QHash] Added qHash() overload for QMap.

Change-Id: Ia7dbf488e8e5490962118e40581b7c4cc8ed95e5
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2024-02-09 20:33:05 +00:00
Marc Mutz 3a2d8c5828 QLoggingRegistry: disable copying
It's not copied, and copying would probably be a bad idea, so make
sure it's not done inadvertently.

Pick-to: 6.7 6.6 6.5
Change-Id: Ia7397906c0efb07ac5e079580bdbb15f4bf4911e
Reviewed-by: Kai Köhne <kai.koehne@qt.io>
2024-02-09 21:33:04 +01:00
Ahmad Samir c2f38c69fc QFileSystemMetaData: use QTRY_COMPARE*(10s)
After d4bb448cdd (thanks to Marc), now we
can use chrono literals with QTRY_* macros.

Amends 72f5b35b3d .

(Cannot be backported to older branches because the QTRY* commit is only
in the dev branch).

Change-Id: Ic31d1ee717af604dd762afa44741cf9ea9b33a8e
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
2024-02-09 22:33:04 +02:00
Shawn Rutledge 3f515fa7af QtIcoHandler::canRead(): avoid checking more than once
QtIcoHandler::canRead() calls ICOReader::canRead(), which assumes that
QIODevice::pos() is at the position where the .ico data starts (i.e.
pos() == 0 if this is a separate .ico file). But if an AnimatedImage in
Qt Quick opens an .ico file, canRead() gets called multiple times:
the first is when QQuickAnimatedImage::frameCount() eventually results
in QImageReaderPrivate::initHandler(); then ICOReader::readHeader()
is called, which moves the file position. The second time is when
QQuickAnimatedImage calls QMovie::isValid(). At that time,
QIODevice::pos() == 6: we need to avoid calling ICOReader::canRead()
because it's no longer at the start of the data.

Without this change, AnimatedImage reports "Error Reading Animated Image
File" and doesn't show anything.

The fix is to store the known-good state, the same way that
QTiffHandler::canRead() returns true if its d->tiff already exists
(TIFFClientOpen() succeeded).

The test checks that it's ok to call QMovie::frameCount() first and then
QMovie::isValid(). Calling frameCount() has the effect of moving
QIODevice::pos().

Pick-to: 6.5 6.6 6.7
Task-number: QTBUG-117429
Change-Id: Ie3a5225f2cea9a0d76d685e83ce4d4a10cbe9188
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2024-02-09 12:17:21 -07:00
Ahmad Samir 83f7125ac8 QFileSystemIterator/Unix: use QStringDecoder
The end result is a QFileInfo constructed from the QFileSystemEntry;
QFileSystemEntry's API will at some point convert the NativePath (QBA on
Unix) to a QString, e.g. when it calls findLastSeparator().

So instead of converting the parent dir path from Utf8 to Utf16 multiple
times, store the dir path as a QString once in the constructor.

Use QStringDecoder to convert the dirent->d_name to Utf16 and check the
decoder's hasError(); which as Thiago pointed out, is more efficient
than using isValidUtf8(), throwing away the results, then converting to
unicode anyway later on in QDirIteratorPrivate::advance().

(Ironically) `QFileSystemEntry::NativePath nativePath` is still used on
Windows.

Change-Id: Icd2b130103640b502862d210d64926b99c499a01
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2024-02-09 18:44:23 +02:00
Christian Ehrlicher 74722411d3 QSqlQuery: remove unneeded friend tst_QSqlQuery
... as it is no longer needed.

Pick-to: 6.7
Change-Id: Ia60b6e53675260ef0e793ac1b44c913af1454b35
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
2024-02-09 17:12:23 +01:00
Christian Ehrlicher 55d1480c99 SQL/OCI: fix QOCIDriver::formatValue()
The switch needs to be on QSqlField::metaType() instead the internal
QSqlField::typeID() which holds the db-specific type of this field.

This amends 7b391c0d2c.

Pick-to: 6.7 6.6 6.5 6.2
Change-Id: Id1d1791826f08adb01cc3da45bf5a66bad288046
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2024-02-09 16:12:23 +00:00
Christian Ehrlicher 02a77600e5 QHeaderView: make sectionsMovable/sectionsClickable properties
When those two attributes were added in Qt5 they were not marked as
property for unknown reason. Therefore propagate them now.

Fixes: QTBUG-1639
Change-Id: If9f0def2eb680c9c9e8a04b101768d87885d542b
Reviewed-by: David Faure <david.faure@kdab.com>
2024-02-09 17:12:23 +01:00
Tor Arne Vestbø 41b76ffbd0 Apple: Make Qt::Key_Backspace primary sequence for StandardKey::Backspace
This will show up in menus as ⌫, instead of ^H, which is a better fit
with the native behavior.

Task-number: QTBUG-122042
Task-number: QDS-11733
Pick-to: 6.7 6.6 6.5
Change-Id: I224971421a13baec2a0f65be8ae4a5791dabafdd
Reviewed-by: Doris Verria <doris.verria@qt.io>
2024-02-09 15:26:21 +01:00
Eirik Aavitsland b0056f052d Refix invalid glTexImage2D operation in FramebufferObject
A recent change fixed the texture format parameter to be RGB instead
of RGBA for opaque internal formats. However, this broke the RGB10
case, since the pixel type is then GL_UNSIGNED_INT_2_10_10_10_REV. The
doc says:

"GL_INVALID_OPERATION is generated if type is [...]
GL_UNSIGNED_INT_2_10_10_10_REV [...] and format is neither GL_RGBA nor
GL_BGRA."
https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexImage2D.xhtml

This modifies ba9e57d65f.

Pick-to: 6.7 6.6 6.5
Change-Id: I9a004331513179a3f840a007af0418d14e7f5dff
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2024-02-09 15:26:21 +01:00
Volker Hilsheimer a8da9829dc QTest: rename local `timeout` variable in QTRY_IMPL macro
`timeout` is a likely name for a variable in the scope in which a
QTRY_ macro is used, so don't use that name in the macro itself. The
other variables are all prefixed with `qt_test_`, so do that here as
well, and be explicit about what the variable stores.

Amends d4bb448cdd.

Task-number: QTBUG-121746
Change-Id: If05dccdc24a66e95a08156b820d185f184783ad6
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
2024-02-09 15:11:50 +01:00
Jonas Karlsson 28ecb523ce Improve KTX file reading memory safety
* Use qAddOverflow/qSubOverflow methods for catching additions and
  subtractions with overflow and handle these scenarios when reading the
  file.
* Add 'safeView' method that checks that the byte array view constructed
  is not out of bounds.
* Return error if number of levels is higher than what is reasonable.
* Return error if number of faces is incorrect.
* Add unit test with invalid KTX file previously causing a segmentation
  fault.

This fixes CVE-2024-25580.

Fixes: QTBUG-121918
Pick-to: 6.7 6.6 6.5 6.2 5.15
Change-Id: Ie0824c32a5921de30cf07c1fc1b49a084e6d07b2
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2024-02-09 13:08:44 +01:00
Paul Wicking a3bc8fc560 Doc: QRhi corrections
* There's no convenience header for the `QRhi` class, so add the
  `\inheaderfile` command to specify the correct include.
* The `QRhi` class belongs to the `QtGuiPrivate` module; use the
  correct name.
* QDoc needs to know about the QtGuiPrivate module. Add basic
  documentation for the private module.

Task-number: QTBUG-121855
Task-number: QTBUG-121991
Change-Id: I1ffd729a5f9c928f4cf91ce7127f40c7733fc42f
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2024-02-09 12:39:28 +01:00
Marc Mutz b28bad0b20 Add fast-path in QLibraryStore::findOrCreate() for empty fileName
The LibraryMap can never contain an object whose fileName is empty.

To see that, observe that the only insertion into LibraryMap is in
findOrCreate() and that refuses to add such objects there.

But if LibraryMap cannot contain such an object, and findOrCreate({})
is just an ugly way to get a default-constructed QLibraryPrivate (a
new one for each call), then we don't need to lock the
qt_library_mutex to produce one, and neither do we need to construct a
mapName that we know we'll not find, anyway.

So drag this case to before the mutex locking and the construction of
mapName.

It took me more coffee than I'm ready to admit to figure this out, so
leave a comment for the next reader indicating that an empty fileName
is actually a valid argument.

To avoid repeating the new-expression, wrap it in a lambda, together
with the ref() call. Move the remaining ref() call to where it's still
needed.

The final goal of this exercise is to get rid of the double-lookup in
LibraryMap.

Pick-to: 6.7 6.6 6.5
Change-Id: I781eafdb9516410d7a262ad27f52c38ad2742292
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2024-02-09 12:39:28 +01:00
Marc Mutz 6675e8c942 QFactoryLoader: cut out the QMap middle-man
In Qt 6, QMap is just a shared pointer to a std::map.

QFactoryLoaderPrivate::keyMap is never copied, though, so the implicit
sharing that QMap adds on top of std::map is useless.

Use the underlying std::map directly.

Yes, the std::map API is a bit raw around the edges (std::pair
value_type), but we're professionals here.

Saves more than 1.7KiB in TEXT size on optimized AMD64 GCC 11 C++20
Linux builds.

As a drive-by, fix the double lookup in updateSinglePath().

Change-Id: I0d59f43d490fb947f653fe8dc903cf7eb9af700a
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2024-02-09 11:39:27 +00:00
Marc Mutz e3cc87c5f4 QMimeBinaryProvider: cut out the QMap middle-man
In Qt 6, QMap is just a shared pointer to a std::map.

QMimeBinaryProvider::m_mimetypeExtra is never copied, though, so the
implicit sharing that QMap adds on top of std::map is useless.

Use the underlying std::map directly.

Yes, the std::map API is a bit raw around the edges (std::pair
value_type), but we're professionals here.

Saves more than 1.7KiB in TEXT size on optimized AMD64 GCC 11 C++20
Linux builds.

As a drive-by, cut out the insertIt temporary, too, and assign
directly to `it`.

Change-Id: If3fd98a7e7017909d00b8725f8c252b19459d5b6
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: David Faure <david.faure@kdab.com>
2024-02-09 11:39:27 +00:00
Kevin Keating 38c62c5851 WASM builds now handle bitmap and pixmap cursors
[ChangeLog][QtGui][Platform Specific Changes][wasm] Previously, bitmap
and pixmap cursors were nonfunctional in wasm builds and would trigger
warnings.  These cursors now work as expected.

Fixes: QTBUG-116796
Pick-to: 6.5 6.6 6.7
Change-Id: Idd9aa4d458a36452fd5b49f72cc595756fc50923
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
2024-02-08 23:55:51 +00:00
Artem Dyomin 1d6bb23f62 Fix loading QRhiTexture from image on gles
The code should consider that image may be created by
a pointer to user data, with original alignments.
It means that we the way of setting parameters from
raw data and QImage should be the same.

In Qt Multimedia we want to pass a zero-copy image
to rhi creation to get rid of an extra copy:
codereview.qt-project.org/c/qt/qtmultimedia/+/537062

Aslo, data align has been fixed.
Due to the documentation, GL_UNPACK_ALIGNMENT can
be 8, 4, 2, 1. Let's find the biggest possible align.

Task-number: QTBUG-121934
Pick-to: 6.7 6.6 6.5
Change-Id: Ic0f1617d4699217a7549c13e916be96108183d03
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2024-02-08 23:41:11 +01:00
Christian Ehrlicher 1d799e9108 QAbstractItemView: close all child editors when parent is removed
QAIV::rowsAboutToBeRemoved() closed all child editors when the child was
a direct ancestor of the removed index but forgot to check if the index
is an indirect ancestor. Some of those editors were removed later in
updateEditorGeometries() but not all as the testcase in the bug report
showed.

Pick-to: 6.7 6.6 6.5
Fixes: QTBUG-103476
Change-Id: I90b3d3bff3857aa79f96eecf23d980928693b7bc
Reviewed-by: David Faure <david.faure@kdab.com>
2024-02-08 18:31:26 +01:00
Marc Mutz a5f8592639 QVersionNumber: apply LWG 3346 work-around
QtWebEngine builds using GCC 10.2 have hit the GCC < 10.4 problem with
containers that define both element_type and value_type, so lift the
work-around from QList to QVersionNumber, too.

Amends 2188ca2c5d.

Fixes: QTBUG-122037
Change-Id: Idb59b5325ab6308cfd7d1a5559e45a01a5802099
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2024-02-08 17:43:59 +01:00
Marc Mutz 95feea933b QSpan: apply LWG 3346 work-around
We have not hit the GCC < 10.4 problem with containers that define
both element_type and value_type, yet, but we have with
QVersionNumber, so proactively apply it to QSpan, too.

While we're at it, copy the QList code to mark QSpan, too, as
contiguous.

Pick-to: 6.7 6.6
Change-Id: I883fd0b5f75db175a730262035ebbf0cb19de529
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2024-02-08 17:43:59 +01:00
Marc Mutz f4cfc21dec QList: give the LWG 3346 #ifdef'ery a symbolic name
We'll need this in more places, so centralize its definition in
qcompilerdetection.h.

Amends 595b4e1a9b.

Pick-to: 6.7 6.6 6.5
Change-Id: I87f84cb9ff3ad339c000604423295180176f5799
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2024-02-08 17:43:59 +01:00
Edward Welbourne 8b4536ccf5 QIcuTimeZonePrivate::displayName(): tidy and critique
Made the code simpler and amended comments. Computing the offset costs
less than computing full data at the given moment, especially when
we're going to ignore the daylight-offset that reports and call
another ICU function for it, if needed. Explain why the result is
unreliable and why, when that matters, we probably came via a
different code path that gets it right. Note the potential
inconsistency in locale between the UCalendar's construction and the
request for localized display name.

Change-Id: I2203c0bb053fa0e658373e4a818b77739be50a23
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2024-02-08 17:43:58 +01:00
Ievgenii Meshcheriakov 0e67553aac tst_qttextboundaryfinder: ignore unsupported tests
Qt currently has custom implementation for Indic grapheme breaks.

QTBUG-121907 was created to evaluate whether it is better to use
Unicode implementation instead.

Remove BLACKLIST. The remaining tests pass.

Fixes: QTBUG-121529
Task-number: QTBUG-121907
Change-Id: Ifd8fd76aeeba51d08c9f23b867abbf39750fc7d9
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2024-02-08 17:43:58 +01:00
Ievgenii Meshcheriakov 1f73d4b87c Unicode line breaking: Implement rules LB15a and LB15b
The new rules were added in Unicode 15.1 (TR #14, revision 51).

The rules read:

    LB15a: (sot | BK | CR | LF | NL | OP | QU | GL | SP | ZW)
           [\p{Pi}&QU] SP* ×
    LB15b: × [\p{Pf}&QU] (SP | GL | WJ | CL | QU | CP | EX
           | IS | SY | BK | CR | LF | NL | ZW | eot)

Add two new line breaking classes LineBreak_QU_Pi and _QU_Pf to
represent quotation characters with context that matches left
side of LB15a and right side of LB15b respectively. This way
it is still possible to use the line breaking classes table.

Also add a coment about the original source of the line
break table.

Task-number: QTBUG-121529
Change-Id: Ib35f400e39e76819cd1c3299691f7b040ea37178
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2024-02-08 17:43:58 +01:00
Ievgenii Meshcheriakov b2764f7802 QUrl IDNA: Update to Unicode 15.1
Unicode 15.1 (more spcifically UTS #46, revision 31) changes how
host names are processed. The initial Unicode host name mapping
is done without validity checking. That check was used in the past
to mark QUrl's invalid. This patch inserts simplified validity
check later. This check is similar to one performed before
conversion to unicode, but does not include BiDi check to keep
names starting with xn-- valid.

Additional complication is that U+1E9E LATIN CAPITAL LETTER SHARP S
must be mapped to "ss" with transitional processing.

It is not possible anymore to predict whether Qt implementation
considers a URL valid by using only error codes in the tests
vectors file. The test was adjusted to expect an empty string
(indicating invalid QUrl) or string matching the entry in vectors
file if there are any processing errors specified for that entry.

Unblacklist tst_QUrlUts46::idnaTestV2.

Task-number: QTBUG-121529
Change-Id: Iad5dadd1a6695fa54b432e35000b350cd6e06341
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2024-02-08 17:43:58 +01:00
Ievgenii Meshcheriakov bfd09ec38c unicode: Import version 15.1 (UCD version 32)
Add enumerator for the new Unicode version to QChar::UnicodeVersion.

Remap new line breaking classes to their Unicode 15.0 values:
* AK, AP and AS to AL,
* VI and VF to CM.
These are classes for new line breaking support for Indic scripts
that require more work.

Blacklist failing tests for now:
* tst_QUrlUts46::idnaTestV2
* tst_QTextBoundaryFinder::lineBoundariesDefault
* tst_QTextBoundaryFinder::graphemeBoundariesDefault

Regenerate the source files.

Task-number: QTBUG-121529
Change-Id: I869cc9fbaa53765d8ae6265c22cdbef9f19d05bf
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2024-02-08 16:43:58 +00:00
Tim Blechmann 25b89f2c88 cmake: build repo helpers - fine-grained test/example options
the tests/examples could only be enabled globally. when working on a
specific repo, it's beneficial to disable tests/examples for other
projects to reduce project sizes (and cmake configure/generate times)

Change-Id: I0026ba87b667d427043cc8eb1baa6c28b2046dd7
Pick-to: 6.7
Reviewed-by:  Alexey Edelev <alexey.edelev@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2024-02-08 23:30:29 +08:00
Juha Vuolle 68179f7605 Change type of internal locationHeader constexpr to QL1SV
QL1SV is what QNetworkReply::rawHeader() ingests, and also it's what
QHttpHeaders::nameAt() returns.

Pick-to: 6.7
Change-Id: I967416cf6f203fe0f0980ef7eae2de7efc6d5377
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
2024-02-08 17:02:52 +02:00
Juha Vuolle 7288db6083 Remove unnecessary case-insensitive header name comparisons
HTTP header name fields are case-insensitive and the QHttpHeaders class
stores them as lower-case. Therefore the case-insensitive comparisons,
when comparing against a lower-case value, are not needed.

Pick-to: 6.7
Change-Id: I7f38ef16aa7c61103abc4c81c13aebdd6e535dc8
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
2024-02-08 15:02:52 +00:00
Juha Vuolle 60f471f4b6 Replace QHttpHeaders::toListOfPairs() usage with iteration
... as a more computationally effective way, which was not present at
the time those usages were introduced.

As a drive-by add spaces around a binary operator

Task-number: QTBUG-122017
Pick-to: 6.7
Change-Id: I0528c995d1a3c1fe171486c5c313697d1706ee10
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
2024-02-08 17:02:52 +02:00
Alexandru Croitor a61ac2ca58 CMake: Add test for configuring a standalone test
A standalone test is one that uses
 find_package(Qt6BuildInternals REQUIRED COMPONENTS STANDALONE_TEST)
in its project code.

To ensure we don't accidentally regress this feature, test it as a
cmake test.
Also run test, this somewhat covers testing qt_internal_add_test.

Pick-to: 6.5 6.6 6.7
Change-Id: Ia9f27eef2bd7bd5bb57b96e553304924db252365
Reviewed-by:  Alexey Edelev <alexey.edelev@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2024-02-08 15:40:04 +01:00
Oliver Dawes 95c20ffac3 Initialize QRhiD3D12::activeAdapter for imported device path
This commit makes it so the QRhiD3D12::activeAdapter is set when
using an imported device. QD3D12MemoryAllocator::create would
crash before as it would attempt to call IDXGIAdapter1::GetDesc1
on the passed uninitalized pointer. With this change using an
imported device with the d3d12 rhi backend will no longer crash
the application.

Fixes: QTBUG-122007
Pick-to: 6.7 6.6
Change-Id: Iadc67fee0c7ee70ac904f66a523acd3b1a63e42b
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2024-02-08 14:40:04 +00:00
Ahmad Samir 803d65dc12 QFileSystemMetaData: add is{Readable,Writable,Executable} getters
Change-Id: I18cc56435f5e725ad6b80797291cabaf63fc2fb3
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2024-02-08 16:40:04 +02:00
Samuel Gaist f4cb42ed0b QDom: give name to all anonymous parameters as well as too generic ones
This patch has several different goals:
- Make the QDom classes easier to use through PySide6 by avoiding the
  the generation of variable names that have no meaning.
- Make the code cleaner as using unrelated single letter parameter is
  not the best way to convey the information.
- Improve the documentation.
- Make qdoc's work easier

Fixes: QTBUG-121670
Task-number: QTBUG-121468
Change-Id: Ia31d119b3a1cc3c92ed6f77a60280191db3b74bc
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2024-02-08 14:40:04 +00:00
Edward Welbourne b0f4bd7f23 Move QTimeZone's CLDR-derived data into a namespace
Introduce namespace QtTimeZoneCldr instead of having a Q prefix on
each class name used for the data.

Change-Id: Icb22a91340b67f9cc93173b77374a70f69f81bbe
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
2024-02-08 15:40:04 +01:00
Edward Welbourne a736e613fc Document LocaleScanner's constructor
I needed to know in order to make recent changes.
Save the need to work it out again next time.

Change-Id: Ibc606cbe2e6af16e6820fd753a643331a03cdfb3
Reviewed-by: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>
2024-02-08 15:40:04 +01:00
Nicolas Fella 00d9a9a9b5 QIcuTimeZonePrivate constructor: save iteration over all zone IDs
ICU returns a "valid" representation of GMT when given an unrecognised
ID, so QTZ's constructor has been checking the ID is available before
passing it to the backend constructor. That availability check was
done by generating the list of available IDs to see if the given ID
was in it; this is very inefficient. Furthermore, the QTZ constructor
was also checking availability, to work round the same issue in only
this one backend, making the check redundant.

So overide isTimeZoneIdAvailable() in the ICU backend, calling
ucal_getCanonicalTimeZoneID(), which answers the question directly;
and drop the duplicate check in the QTZ constructor. Expand a test to
verify an invalid name is rejected.

Fixes: QTBUG-121807
Pick-to: 6.7 6.6 6.5
Change-Id: I34f996b607b958d12607a94eb273bb1b406cca1a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2024-02-08 15:40:03 +01:00
Morten Sørvig b33b85cc46 qfreetype: Fix caching of memory fonts
Make QFreetypeFace::getFace() not return the same font
face for all memory fonts.

QtFreetypeData has a cache which maps QFontEngine::FaceId
to QFreetypeFace instances. Each FaceId should then
have a unique hash value, which is accomplished by
by hashing the font file name and a stored uuid.

However, we were not setting the uuid in all cases,
which means that in-memory fonts (which do not have
a file name) would hash identically.

Fix this by setting the uuid to a value based on the
address of the FontFile, which should be unique.

Pick-to: 6.7
Change-Id: I45de37b512fb666c26490551c831c0db824b5f35
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2024-02-08 14:37:50 +01:00
Jacek Poplawski ef5ab6e006 Disable unloading libraries on VxWorks
Unloading plugins after each test case in QtDeclarative autotests leads to crashes (signal 11) during type registration in subsequent test cases.
The issue arises due to the unloading process, where unloading and then re-registering types in the next test case leads to sig11.
Disabling the unloading of libraries prevents the crashes.

Pick-to: 6.7
Task-number: QTBUG-115777
Change-Id: I6712f687134fd452fb0b962363a8f0fde85344ff
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2024-02-08 14:17:49 +01:00
Michał Łoś 141cd13ab4 Override detection of OS for sqlite3
sqlite3 doesn't detect properly VxWorks. Add workaround that hardcodes
detected OS to "UNIX".

Change-Id: I255bb1af94caf7b15c0bd05a4d4d9df6a076fc22
Reviewed-by:  Alexey Edelev <alexey.edelev@qt.io>
2024-02-08 13:53:17 +01:00
Eirik Aavitsland 930535fe30 Modify the baseline testing framework to show new test items
If a commit adds new baseline test items, they would not be reported
to the server when doing a LanceBot test on that commit, and so not be
visible in the report either. This commit fixes the client side of
that issue; the server is already updated.

Change-Id: I60c2958def5e7b54ddc2789cf5727edcbb1a90e1
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Reviewed-by: Jonas Karlsson <jonas.karlsson@qt.io>
2024-02-08 12:29:17 +01:00