Commit Graph

66138 Commits (e2e818483fbc6fe04d364378640178ca5f91b2fb)

Author SHA1 Message Date
Christian Ehrlicher e2e818483f SQL/MySQL: retrieve default column value for QSqlDatabase::record()
Retrieve the default value (if set) of a column during
QSqlDatabase::record() but not for QSqlQuery::record() as it's done for
the other drivers which support retrieving the default column value.

Fixes: QTBUG-122723
Change-Id: I92e052bfa6d88e019c0151fbcbc1483a65770c55
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
2024-03-10 19:15:47 +01:00
Christian Ehrlicher 453e66c61b SQL/ODBC: sync usage of qSqlWarning()
Replace all qWarning() with qSqlWarning() to be able to get additional
error/warning output from the handles.

Change-Id: Ieaa947fe06216b3d20b20c509080fc409803683b
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
2024-03-10 19:15:46 +01:00
Giuseppe D'Angelo 003cef9d40 PNG: preserve ICC profiles that QColorSpace does not handle
QColorSpace::isValid() returns true if QColorSpace can handle the
profile. When called on a QColorSpace obtained via
QColorSpace::fromIccProfile, this doesn't necessarily mean that the ICC
profile itself was invalid; it could be that the ICC data was valid, but
QColorSpace didn't know how to use it. This is especially true on Qt <=
6.7, where only XYZ/RGB matrix profiles were supported.

We don't fully parse ICC v4, and we're lacking an API to differentiate
between "ICC data was valid but QColorSpace doesn't handle it" vs "ICC
data was invalid".

Still, an invalid QColorSpace will still the original ICC data, so it
can be saved again without loss of information.

So: 1) when loading a PNG with embedded ICC data, keep the loaded profile
even if it's "invalid"; 2) when writing a PNG, check if we have ICC data
to save, and unconditionally write it if it's the case.

This avoids data loss in the two directions.

This work has been kindly sponsored by the QGIS project
(https://qgis.org/).

Pick-to: 6.7 6.6 6.5
Change-Id: I1f27f603acbca1590c820e80f52f3b994f5ea5c7
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2024-03-10 11:59:32 +01:00
Cristian Adam 0804109d68 Android: Do Thread.sleep before loading Qt libraries in Debug Mode
Amends 269187bfa2 which added the sleep
but just loading the main library.

This commit moves the delay before any library is being loaded. Also log
the fact the thread is sleeping and advertise how to use the env
QT_ANDROID_DEBUGGER_MAIN_THREAD_SLEEP_MS variable.

Fixes: QTCREATORBUG-30425
Pick-to: 6.7 6.7.0
Change-Id: Ic1370e0b9fcce8c6074f768e5d94e5aa4a0a7824
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2024-03-09 20:35:32 +00:00
Christian Ehrlicher e68c3f025e Don't show mnemonics in dockwidget titles
Dockwidget title accelerators doesn't work in dock widgets, so don't
show them.
This amends cc67b25579.

Fixes: QTBUG-86407
Pick-to: 6.7 6.6
Change-Id: I83fb2da1304d1e2b5eedfc127e5db3d322756d06
Reviewed-by: Sune Vuorela <sune@vuorela.dk>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2024-03-09 13:52:22 +01:00
Christian Ehrlicher 1ac58f4ba3 QStyleSheetStyle: don't draw check indicator twice
When the styled check indicator is smaller than the one from the base
style, then the clip region was to small and the check indicator from
the base style was also drawn. Therefore add both check rects to the
clipRegion.

Pick-to: 6.7 6.6 6.5
Task-number: QTBUG-102820
Fixes: QTBUG-122821
Fixes: QTBUG-122825
Change-Id: I1b5b8d70d66475bbfa4a40652dc3fdd4cc670c32
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2024-03-09 13:52:20 +01:00
Tor Arne Vestbø fde358dd90 Delete QComboBoxPrivateContainer while the combo box is still alive
Destroying the QComboxBox will, once it reaches the QWidget destructor,
close all popups, including the QComboBoxPrivateContainer, which emits
signals on behalf of the QComboBox, that is now gone.

Regression after d8e1100548.

The old-syle signal-slot syntax had the advantage of not delivering
signals to slots in derived classes after that derived class's
destructor had finished running (because we called via the virtual
qt_metacall). The new syntax made no checks, so a conversion from the
old to the new syntax may introduce crashes or other data corruptions
at runtime if the destructor had completed.

See 0e72a846d3.

We also need a QPointer for the QComboBoxPrivateContainer, as the
container may be deleted from outside QComboBox, as seen in the
tst_QGraphicsProxyWidget::bypassGraphicsProxyWidget() test, where
the QGraphicsProxyWidget proxies the QComboBoxPrivateContainer.

Pick-to: 6.7 6.6 6.5
Change-Id: I7590cc2821c73a6762f281504aa62f0c2b472252
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
2024-03-09 13:52:19 +01:00
Giuseppe D'Angelo 0fa0d01c36 QT_NO_QEXCHANGE: add docs
Pick-to: 6.7 6.6
Change-Id: Ibb54de391a580814c9392b262966e2e2947364d9
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2024-03-09 10:34:08 +01:00
Eirik Aavitsland a5a6b657a7 Avoid QRubberBand leaving artefacts in QListView
On hidpi screens, the painted edges of the rubberband can extend
beyond the selection rect because of scaling. Extend the area to be
updated by 2x frame width, when the rubberband changes.

Fixes: QTBUG-113432
Pick-to: 6.7 6.6 6.5
Change-Id: Ie7aec1fefdc3fbf71c63952b693f462697adf849
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2024-03-08 20:50:51 +01:00
Edward Welbourne cb5aac06cf Correct documentation of QDateTime's comparisons
These previously claimed that date-times with different date, time or
zone are different; as pointed out by Marcus Tillmanns, this is not
true. Corrected the documentation to talk about representing the same
moment in time.

In the process, renamed the snippet shared with several other docs,
since the snippet name only focused on the other part of what it was
saying.

Pick-to: 6.7 6.6 6.5 6.2 5.15
Fixes: QTBUG-122973
Change-Id: Ifd74da84aad0b0dca688c131b6ae6a7b65633225
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2024-03-08 18:31:47 +01:00
Giuseppe D'Angelo 682d057aab QThread/Win: set the thread name on non-MSVC also
SetThreadDescription is a Win32 API provided by Kernel32.dll, the only
thing that MinGW is missing is the declaration of the function. We can
provide it ourselves.

Change-Id: Iad5fc6cb7b6eb190310f5888326b65f50ddbdca8
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2024-03-08 16:44:18 +00:00
Giuseppe D'Angelo 6e0c438a41 QObject: fix a documentation note in the destructor
The docs for ~QObject say:

> any pending posted events for the object are removed from the event
> queue

but then they also say:

> Deleting a QObject while pending events are waiting to be delivered
> can cause a crash

These two contradict each other. In fact, the first one is correct, the
second one is factually incorrect. Amend it to what I believe it's the
intended meaning: do not destroy a QObject which is _handling_ an event
(i.e. we're into QObject::event() or an override).

Change-Id: Id1d564f296e17a764e0f49ebfedf6e292085c221
Pick-to: 6.7 6.6 6.5 6.2
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Shantanu Tushar <shantanu.tushar@kdab.com>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2024-03-08 17:44:18 +01:00
Andy Shaw b8f9a86813 XCB: Unset the connection's mousePressWindow if it's this window
In some rare cases it can delete the window before this is handled by
other calls, so rather than crashing we clean up.

Pick-to: 6.7 6.6 6.5 6.2 5.15
Change-Id: Iddcd9890f0c13f4130626b0ed9c5b32f5890208d
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
2024-03-08 16:12:45 +01:00
Morten Sørvig b8584173ab wasm: send DPR change event on window update
Qt Gui expects that the platform sends DPR update
notifications if the DPR value has changed, before
sending expose/paint events or delivering update
request events.

The most straightforward implementation is to send
the DPR update event unconditionally and let Qt Gui
determine if the DPR value has changed, especially
if the native platform does not provide DPR change
events.

Pick-to: 6.6 6.7
Change-Id: Ica7a24a458b3b01f1c7b2e1e09d342114dc71331
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2024-03-08 15:12:44 +00:00
Juha Vuolle 419a1844af Bump Android platform version in documentation to 34
The supported level since Qt 6.7 is 34

Fixes: QTBUG-123059
Pick-to: 6.7 6.7.0
Change-Id: I5821dd78e43a6e487e1e8d4b55fd2022b2f91a89
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2024-03-08 11:46:58 +02:00
Giuseppe D'Angelo 143bcbb96f QGlobalStatic: suppress -Wtsan warning
QGS employs a call to std::atomic_thread_fence. Unfortunately TSAN does
not support it, and GCC >= 11 raises a warning. This breaks the build
when building under -Werror. Suppress the warning using the usual
pragmas.

There's a catch: qglobalstatic.h is built into a PCH, and GCC <= 13
will still generate a warning because of
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53431 .

Change-Id: I770f39b7563b66f483851444cd580bcafc5f288a
Pick-to: 6.7 6.6 6.5
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2024-03-08 10:31:21 +01:00
David Faure 652065b06b Honor QPrinter::setFullPage(true) on Windows too (no margins)
fullPage means the print engine shouldn't add any margins,
the application will take care of that. That's already what happens
on Linux and Mac, but the Windows print engine was offset-ting
everything to the bottom right by the value of the margins, erroneously.

As noted in QTBUG-95927, the workaround for this bug was to call
  printer.setPageMargins(QMargins(0,0,0,0));
when using printer.setFullPage(true), and this fix is compatible
with that workaround, existing apps won't be broken.

[ChangeLog][QtPrintSupport][Windows] setFullPage(true) now behaves
as expected, i.e. the QPrinter margins are ignored and the drawing's
(0, 0) is the topleft corner of the page. This is what setFullPage(true)
is documented to do, and how it was already working on other operating
systems. If this causes regressions in your application, consider
removing the call to setFullPage(true) so that the painting honors
the margins again.

Fixes: QTBUG-119003
Fixes: QTBUG-95927
Change-Id: Ia3d621302bf752833002614303dd64128027163a
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2024-03-08 10:23:57 +01:00
Axel Spoerl 6901ad665d QDockWidget: add notification signal to floating property
The toplevelChanged signal notifies about changes of the floating
property.

Add it in property declaration.

Change-Id: I06be59a24e2732030be26d87ce38f6ce58bdebbc
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2024-03-08 05:23:31 +00:00
Mitch Curtis d130886997 configure-cmake-mapping.md: add -qt-host-path and -DQT_HOST_PATH
Pick-to: 6.5 6.6 6.7
Change-Id: I6deb7b648c39adb8fb2765de5be29b0743ef2836
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2024-03-08 10:30:10 +08:00
Axel Spoerl 78a3301372 QDialogButtonBox: Don't set focus in a dialog with StrongFocus children
A QDialogButtonBox with the first accept button becoming default, didn't
explicitly set focus on such a button in a QDialog.
d44413d526 implemented this missing
functionality. It set focus to the automatic default button, unless the
QDialog had a focusWidget() set.

That has caused a regression, in cases where
- the QDialog has a QWidget child with a Qt::StrongFocus policy, and
- the QDialog is not yet visible, so focusWidget() returns nullptr.

Amend d44413d526ec12ed83acd7343c2005782178c7ad:

Implement a helper in QWidgetPrivate, that returns true, if a child
with a given focus policy is found.

Do not set focus to a QDialogButtonBox's automatic default button, when
- not located inside a QDialog, or
- a focusWidget() exists, or
- the dialog has QWidget child with Qt::StrongFocus, that is not a
child of the QDialogButtonBox.

Add an autotest function.

Pick-to: 6.7 6.6 6.5
Fixes: QTBUG-121514
Fixes: QTBUG-120049
Change-Id: I3c65ae36b56657f9af4a3a4b42f9b66e8bc5c534
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2024-03-07 23:00:33 +00:00
Allan Sandfeld Jensen 8a6d9ac7bc Add A2B tables, and PCSLab support to QIcc
This finishes off ICC color space support in Qt (short of the
optional multi process elements), and includes necessary parts for
potential CMYK support (PCSLab and A2B support)

[ChangeLog][QColorSpace] ICC profiles that are not three-component
matrix based are now supported.

Task-number: QTBUG-108175
Change-Id: Ie29b17a366d9ba0ea8135e1752530d6bb19e7520
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2024-03-07 23:42:41 +01:00
Michał Policht 5010eda534 Windeployqt: introduce --include-soft-plugins command line option
Some plugins may have dependencies on additional Qt modules. This is
handled by deployPlugin() function. Existing code does not look for plugins
associated with these modules however, because the loop iterates over
plugin directories only once. This change introduces an option that will
make windeployqt take into account all such soft dependencies by making
recursive calls to findQtPlugins().

Pick-to: 6.7
Task-number: QTBUG-121583
Change-Id: Id6535426a47f9b92a3035e864dfdd7577b82c9ad
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Timothée Keller <timothee.keller@qt.io>
2024-03-07 23:42:41 +01:00
Juha Vuolle d8f6425fef Add a QHttpHeaders convenience method for unique header name setting
The function replaces one of the found entries with the new value,
and removes any other entries. If no entries are found, a new entry
will be appended. The replacement search is done for performance
reasons; it's cheaper to replace an existing value.

All in all the function is a more convenient and performant
alternative for this sequence (which proved to be common while
porting QtNetwork internals to QHttpHeaders):
header.removeAll(<headername>);
header.append(<headername>, <value>);

[ChangeLog][QtNetwork][QHttpHeaders] Added replaceOrAppend()
convenience method, which either replaces previous entries with
a single entry, or appends a new one if no entries existed

Fixes: QTBUG-122175
Change-Id: I03957645d7e916a732ac7b8d3ae724bb6b16af87
Reviewed-by: Lena Biliaieva <lena.biliaieva@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2024-03-07 23:38:09 +02:00
Cristian Adam 269187bfa2 Android: Add Thread.sleep before loading main in Debug mode
This helps with the jdb debugging settling, and the native debugger
can hit breakpoints at the beginning of main() function or in case
of unittests at initTestCase() function.

By default in debug mode the delay is 1000ms. This value can be changed
with the environment variable: QT_ANDROID_DEBUGGER_MAIN_THREAD_SLEEP_MS

Fixes: QTCREATORBUG-30425
Pick-to: 6.7 6.7.0
Change-Id: Ica0c6080c55468579a28eecf8f45cff68d99c3a8
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2024-03-07 21:34:00 +01:00
Wladimir Leuschner 91b04d5cf1 QWindows11Style: Draw ScrollArea opaque in QAbstractItemView
Pick-to: 6.7
Change-Id: Ica2c62355a576dda4eaefacbc41b8609009d0073
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2024-03-07 15:13:38 +00:00
Inho Lee 50c81f5490 Fix offscreen rendering in QOpenGLWidget
Amends 68a4c5da9a

In a case sharing QOpenGLContext,
offscreen renderings cannot get QOpenGLContext from Rhi.

Fixes: QTBUG-123005
Pick-to: 6.7 6.6 6.5
Change-Id: I9baae5e5c77878885f73ee39df5cd39117e8f1c2
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2024-03-07 16:10:02 +01:00
Lucie Gérard f9136fd0db Correct wasm util file
License is set to that of the other files in the directory

Pick-to: 6.7
Task-number: QTBUG-121787
Change-Id: I9922feb2a520a549ab9cc1d82a85417202ad83c3
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Kai Köhne <kai.koehne@qt.io>
2024-03-07 16:10:02 +01:00
Friedemann Kleint 8cd7a3d472 Fix menu size in multiscreen setups
During QMenuPrivate::popup() and QMenuBarPrivate::popupAction(),
QMenuPrivate::popupGeometry() is called from updateActionRects() with
screen = 0 several times (from sizeHint() and various event handlers
triggered), which causes it to return the primary screen geometry
always.

To fix this for the non-QGraphicsView case, use the screen of
the menu when it is visible or the screen stored in a newly introduced
popupScreen member variable, which is set from a few places
in QMenuPrivate::popup().

Fixes: QTBUG-118434
Pick-to: 6.7 6.6 6.5
Change-Id: I6b18593d313719d628b0856004197ac59f46c270
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2024-03-07 15:09:58 +00:00
Giuseppe D'Angelo 9069b7fb20 Realign columns in the configure-cmake-mapping
Change-Id: Ie7c3c35b6e5a8d02d05650b86f6c2d47b72c3835
Pick-to: 6.7 6.6 6.5
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2024-03-07 16:09:57 +01:00
Piotr Wierciński c2b359721d wasm: Temporarily disable selenium tests
Task-number: QTBUG-122729
Change-Id: I923edcd10d410e7836b5e3868d11d14dcd3e1c13
Reviewed-by: Simo Fält <simo.falt@qt.io>
2024-03-07 11:39:17 +01:00
Lucie Gérard d5d1bfd8e8 Add a licenseRule.json file for checking of SPDX license identifiers
The license test in qtqa reads this file
in order to check the validity of the license used.
This file reproduce the QUIP-18 [1] rules, with some exceptions.

Each entry in the file corresponds to a set of licensing rules.

A set of licensing rules can depend on the file ending,
registered in "file_pattern_ending". The last entry in the
file has no "file_pattern_ending", it sets the rules for the
files whose licensing does not depend on their ending.

The license to be used depends on the location
of the file within the Qt module repository.
Let's call this "<true_location>".
The  "<true_location>" can also correspond to a file name,
offering flexibility for exceptions to the rule.
The "<true_location>" are registered in "location".

For each "<true_location>" there is a
"file type" entry and a "spdx" entry.
The "spdx" entry gives the rule:
the expected license tag(s) in SPDX format
for the file ending (if applicable) and "<true_location>".
The "file type" informs on the QUIP-18 type
the tested file corresponds to. It is purely informational
for the reader.

The set of rules are tested in order of appearance
in the json file. For this reason, a more constraining
ending (like "special.txt") needs to appear in
a "file_pattern_ending" located before
the "file_pattern_ending" of a less constraining ending (like ".txt").
Also, a file ending cannot be present in two "file_pattern_ending".

"file_pattern_ending" and "spdx" should list strings.
"<true_location>" can be regular expressions.

During the test the deeper "<true_location>" are
checked first. The order is which they appear in the json file
does not matter.

To test this file, run
QT_MODULE_TO_TEST=../qtbase perl tests/prebuild/license/tst_licenses.pl

[1]: https://contribute.qt-project.org/quips/18

Pick-to: 6.7
Task-number: QTBUG-121039
Change-Id: I720800507622701b80c76e78e68817c6c39c2407
Reviewed-by: Kai Köhne <kai.koehne@qt.io>
2024-03-07 11:08:18 +01:00
Lucie Gérard c2333f312f Correct license for examples files
Example takes precedent over build system file type.
According to QUIP-18 [1], all examples file should be
LicenseRef-Qt-Commercial OR BSD-3-Clause

[1]: https://contribute.qt-project.org/quips/18

Pick-to: 6.7
Task-number: QTBUG-121787
Change-Id: Id348a89884bb309b96abb31077f14a51086b5d0c
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Kai Köhne <kai.koehne@qt.io>
2024-03-07 11:06:43 +01:00
Wladimir Leuschner f75e554c6a QWindows11Style: Update font size in menubar items and spacing between items
Reduce the spacing between menu bar items and change
font size to 10pt.

Fixes: QTBUG-120639
Pick-to: 6.7
Change-Id: Ic16e74f4a2426be6d6ef40904919d92785d96ce5
Reviewed-by: Robert Löhning <robert.loehning@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2024-03-07 10:05:38 +00:00
Juha Vuolle 68ae776e73 Remove 'const' from variable that may be moved
std::move on const object is ineffective, and the code will
use a performance-wise costlier SMF

Amends: 0c05d2b43e

Pick-to: 6.7
Change-Id: Id4a639d9a037c3f1d79ea60faa2715075462fea1
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2024-03-07 07:21:58 +02:00
Eirik Aavitsland 210f2004df Update bundled libpng to version 1.6.43
[ChangeLog][Third-Party Code] libpng was updated to version 1.6.43

Pick-to: 6.7 6.6 6.5 6.2 5.15
Fixes: QTBUG-122989
Change-Id: Id439e64010bc3f6752f5589d663827a91f009173
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2024-03-06 23:40:12 +01:00
Thiago Macieira c0ac143114 Doc: fix warning "class Qt::TimerId' specified with '\enum'"
Amends 4bc0834bc1.

Change-Id: I6818d78a57394e37857bfffd17ba0f3897b2a5f5
Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>
2024-03-06 05:42:21 -08:00
Volker Hilsheimer 10afa38aa4 JNI: Fix error with overload resolution when passing string types
The variadic templates are supposed to be removed from the
overload set when any of the parameters is a literal string type,
as otherwise we get conflicts with the legacy overload taking
class names and signatures as const char *. The detection of
a literal string types was missing a few specializations, so that
we ended up with the wrong overload being called, and class
names getting interpreted as method names instead.

Add the missing specializations, and add more test coverage
for using the old overloads.

Task-number: QTBUG-122235
Pick-to: 6.7
Change-Id: I5488f2009c8f62d74fac6754844f57cf64011414
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Reviewed-by: Rami Potinkara <rami.potinkara@qt.io>
Reviewed-by: Lauri Pohjanheimo <lauri.pohjanheimo@qt.io>
2024-03-06 13:00:19 +00:00
Rym Bouabid 8103d29e94 QUrl: Use new comparison helper macros
The class had operator==(), operator!=() and operator <() defined as
public member functions, so use QT_CORE_REMOVED_SINCE and
removed_api.cpp to get rid of these methods and replace them with hidden
friends.

Use QT_TEST_ALL_EQUALITY_OPS macro in unit-tests.

Use new \compares command in the documentation to describe the
comparison operators provided by QUrl.

Task-number: QTBUG-120303
Change-Id: Ic4fa2335292cc4b75ad2373832c0b89d768f529c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2024-03-06 11:09:21 +01:00
Thiago Macieira 907e9a8b29 Move qAbort from qglobal.cpp to qassert.cpp
It makes more sense there, as all the other functions in that file are
about early termination. This allows us to remove qglobal.cpp from the
bootstrap library, because qglobal.cpp now only has the callback tables.

Amends 8f13af5d7b.

Change-Id: I01ec3c774d9943adb903fffd17b7ea92404bdbd3
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2024-03-06 02:09:16 -08:00
Thiago Macieira 1560e0161a QtPrivate::equalStrings(): enforce matching size where applicable
Commit 8a7b74f6e7 added these functions
and already placed the checking for the size in the inline code. Aside
from the operators==, the only other place that calls equalStrings()
directly is QAnyStringView::equal() and that also checks the size for
the non-UTF-8 string views do match. Unfortunately, the size checking
for UTF-8 was only added in 52e0a91fbc.

This reverts commit e0eb93d9a2
("QLatin1StringView: delegate operator== to QByteArrayView") because
that would compare the sizes again.

Change-Id: I83dda2d36c904517b3c0fffd17b38e422b5e2c25
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
2024-03-06 02:09:16 -08:00
Thiago Macieira a6a5681470 QLibrary: remove the unnecessary parentheses around dlerror()
We don't need a message like:

"Cannot load library nosuchlib: (nosuchlib: cannot open shared object file: No such file or directory)"

Pick-to: 6.7
Change-Id: I01ec3c774d9943adb903fffd17b76599cea47502
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2024-03-06 04:09:16 -06:00
Thiago Macieira 24245d2a85 tst_toolsupport: make the i386 case really about i386
Specifically, don't use it for either of the x86-64 ABIs (LP64 and
ILP32). The generic case below should work for everyone.

Fixes: QTBUG-122720
Pick-to: 6.7
Change-Id: I01ec3c774d9943adb903fffd17b75fc79095e089
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2024-03-06 11:09:16 +01:00
Marc Mutz ff7e5987ec Revert "QStringView: simplify the constructor from QString"
This reverts commit 7d18ad49a3.

Reason for revert: This changes the constructor from being a template
to being a normal function, so changes overload resolution. The commit
message gave no indication on why this is safe. Since it's just a nice
to have, revert instead of running the risk of breaking code.

Pick-to: 6.7
Change-Id: Icd506e7221bb50c99f276f6a43c15403ec0be7a9
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2024-03-06 11:09:16 +01:00
Giuseppe D'Angelo 7f7b5ff3a1 QSpan: add construction from initializer_list
P2447 has been merged in C++26, backport the same functionality.

This makes QSpan<const T> a proper replacement for a const QList<T>&
parameter, because now both can be built via a braced-init-list.

  // void f(const QList<int> &l); // old
  void f(QSpan<const int>);       // new

  f({1, 2, 3});                   // now OK

This is, technically speaking, SiC: in the presence of both `f`
overloads, the code above would have called the QList one. Now instead
the call is ambiguous.

We've been there already -- this is QString and QStringView all over
again, and the solution is the same: get rid of the owning container
overload. I'd rather have this construction *sooner* rather than *later*
in order to minimize the fallout.

And just like QString vs QStringView, there's nothing really doable to
prevent instant-dangling situations:

  QStringView v = getString();    // dangles
  QSpan<const int> s = {1, 2, 3}; // ditto

except for using QSpan (QStringView) as a *parameter type only*.

Note that QSpan with dynamic extent was already convertible from
std::initializer_list through its ranged constructor. However this fact
alone doesn't unlock the above syntax. QSpan with a static extent was
also convertible for the same reason. (This is non-standard:
std::span's range constructor for static extents is explicit, but QSpan
doesn't follow that design choice and makes the constructors implicit
instead.)

Found in API-review.

Pick-to: 6.7
Change-Id: I160ab5b292b0c2568cd9a7ad1b4430085f475c29
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
2024-03-06 08:44:46 +00:00
Juha Vuolle a83248dd9f Add include for QT_CONFIG
To not rely on transitive includes.

Pick-to: 6.7
Change-Id: I116483f94bba4a6edb0a78941da676b1a3e6e1bd
Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>
2024-03-06 06:41:11 +02:00
Juha Vuolle 033b52c0ad Add QT_CONFIG(signaling_NaN) around the signaling_NaN limit function
Amends: 398a51686e

Found in API-review.

Pick-to: 6.7
Change-Id: Ia9be5bc5bdcf7aa2960e9c88f961bf8168435a70
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
2024-03-06 06:41:07 +02:00
Shawn Rutledge d14eec536d QTextMarkdownImporter::import(): don't crash if file has only yaml
If a markdown file has FrontMatter, we look for the end of the newlines
after the `---` marker to begin parsing the actual markdown. But check
bounds in case the file contains only front matter and not markdown.

Fixes: QTBUG-122982
Change-Id: I09c4ae90c47ebd84877738aecc1d1cad0b0bfca2
Reviewed-by: Anton Kudryavtsev <antkudr@mail.ru>
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
2024-03-05 16:12:33 -07:00
Shawn Rutledge 81f174d796 Add categorized log message in QTextMarkdownWriter::writeFrontMatter()
There is logging in QTextMarkdownImporter::import(); in case something
goes wrong, it's useful to compare the size during reading and writing.
Amends bffddc6a99

Task-number: QTBUG-120722
Change-Id: I5f60305ca84d48f91bbb18e9c10ea4010005b356
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
2024-03-05 16:12:23 -07:00
Nodir Temirkhodjaev 1e836fff18 QFutureInterface: Rename "interface" variables to "iface"
On Windows the "interface" is defined as "struct".
Do not #undef it to fix a unity build.

Task-number:  QTBUG-122980
Pick-to: 6.7
Change-Id: I9379c996d8b67b16a8b825af0ff3469111533291
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2024-03-05 19:58:15 +03:00
David Redondo 986de654b8 Map drag event positions to global during dock/toolbar drag
Drag event positions are window relatives, QMainWindowLayout::hover
expects global coordinates however.

Fixes: QTBUG-122949
Pick-to: 6.7 6.6
Change-Id: I28469ba1b5ef88661e744d4cf87f6acab3eb2c72
Reviewed-by: David Edmundson <davidedmundson@kde.org>
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
2024-03-05 17:58:15 +01:00