Commit Graph

43845 Commits (313720fef09d321194fbd717fc04c14e793cd8b8)

Author SHA1 Message Date
Volker Hilsheimer eac9e74d92 Dark windows: use background/foreground colors for tooltips
That follows what File Explorer on Windows 11, or the system UI does for
tooltips in modern UI elements (the tooltip for the "minimize" button in
a titlebar still shows the yellow-colored tooltip). Using the accent
color makes the tooltip pop a lot more, but doesn't look native.

Also make the toolTipPalette helper function do something useful in dark
mode.

Pick-to: 6.5
Change-Id: I2b07abd72eee50508f19f46aaec3408183c27100
Reviewed-by: Santhosh Kumar <santhosh.kumar.selvaraj@qt.io>
Reviewed-by: David Schulz <david.schulz@qt.io>
2023-01-07 04:57:32 +01:00
Ahmad Samir c630b231ec Untangle QLatin1StringView from qstring.{h,cpp}
Searching in qstring.{h,cpp} is slightly easier (it's already too
long).

From the task:
Having similarly-structured header files for all the view classes would
help rebasing the different view classes onto a common template come Qt
7.

Diff best viewed in terminal with git's diff.colorMoved config set to
default.

Task-number: QTBUG-103509
Change-Id: Ie791760bb5bfa23def98d67c206ae8fd00c5f6e6
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-01-07 04:03:22 +02:00
Ahmad Samir 905bc62933 QDir: when sorting by Type, cache the suffix in QDirSortItem's ctor
The predicate passed to e.g. a std::sort shouldn't modify the objects
it's called on, so move filling the cache to the QDirSortItem
constructor where possible. While that can't be done in all cases, e.g.
filename_cache is used as the tie-breaker when two items have the same
time or type ...etc, so it's only assigned to _if_ needed, we can at
least move some stuff out of the predicate to the QDirSortItem c'tor.

Drive-by change: replace comment with asserts

Change-Id: I0199797ab8e261fe3c0fcb791cfc69b23b6fdc48
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-01-06 19:57:21 +02:00
Thiago Macieira ce8fc1e88e QUrl/doc: explain that the scheme-less URL is probably not intended
It is a valid URL reference, which is not what people may want.

Fixes: QTBUG-109855
Pick-to: 6.4 6.5
Change-Id: I69ecc04064514f939896fffd173783ce2228c1d2
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2023-01-06 14:31:38 -03:00
Thiago Macieira a2fe332033 Fix improper ELF versions of two more classes
They got marked as Qt6_PRIVATE_API because of these ARE private classes,
however their pointers are used in user code. For QMutexPrivate, because
we manipulate the pointer in inline code; for QPostEventList, because
it's used in a virtual member function's parameter list.

Pick-to: 6.5
Fixes: QTBUG-109605
Change-Id: I69ecc04064514f939896fffd1736d1fa8d3f1768
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
2023-01-06 14:31:38 -03:00
Thiago Macieira dd7931d580 syncqt: add some debugging to the ELF version script parsing
Drive-by fix spelling-grammar.

Pick-to: 6.5
Task-number: QTBUG-109790
Change-Id: I69ecc04064514f939896fffd1736d3bb49e73ee1
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
2023-01-06 17:31:37 +00:00
Morten Sørvig 1d3d7bfbbc wasm: sync pointer button state on pointer down
We may get PointerDown events with "no buttons" as the button
state in some cases such as for tap events on Apple trackpads.

Make sure the mouse button which caused the pointer down
event is in the mouse buttons set for the event.

Fixes: QTBUG-108639
Pick-to: 6.4 6.5
Change-Id: I0a49abc398308bbfed657b99fc74f60c16e05a59
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2023-01-06 17:57:17 +01:00
Morten Sørvig daba0b8c19 wasm: Fix secondary thread event processing
Fix test failure in WasmEventDispatcherTest::postEventSecondaryThread()

Revert to using qGlobalPostedEventsCount() for determining
pending events state, but move the final check to after
sending posted events. Also remove a superfluous check.

This partially reverts/amends cc60d706.

Task-number: QTBUG-109066
Pick-to: 6.5
Change-Id: If4f437ce9379282c3d60b0272845a975794883de
Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
2023-01-06 16:42:45 +00:00
Marc Mutz 4225116260 QJniHelpers: replace some Q_GLOBAL_STATIC with QBasic* statics
For both QMutex and QAtomicInt, we have QBasic{Mutex,AtomicInt}, which
are PODs, and therefore constant-initialized. Q_GLOBAL_STATIC, otoh,
forces dynamic initialization, so don't use it.

Raw pointers don't need Q_GLOBAL_STATIC, either.

Patch up users. Instead of adding &'s to QMutexLocker arguments, port
directly to qt_scoped_lock, which takes by reference.

Change-Id: I1a13db2a5e88a52d4338a174a80522a3f5e58fa2
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2023-01-06 16:42:45 +00:00
Ahmad Samir fe7a0c19a6 QFileSystemModel: add lastModified() overload that takes a QTimeZone
This is useful when sorting by time and using QTimeZone::UTC, since
native filesystem API uses UTC, that means less conversions, which is
potentially faster.

Use UTC internally except for strings that are going to be shown in a
GUI to the user, these should be in QTimeZone::LocalTime.

[ChangeLog][QtGui][QFileSystemModel] Added lastModified() overload that
takes a QTimeZone, this is useful when e.g. comparing file timestamps
and all that's needed is time in UTC (this is faster as no time zone
conversions is required). QTimeZone::UTC is used internally when sorting
by time (using the sort() function), which should ideally make it
faster too.

Task-number: QTBUG-100349
Change-Id: I0e58f8eb7856b8da7d55db86ddd2c009ff83d970
Reviewed-by: Kai Köhne <kai.koehne@qt.io>
2023-01-06 17:52:07 +02:00
Kai Köhne eeb469869e Fix deprecation of QApplication:setActiveWindow()
The method is now deprecated in Qt 6.5, not Qt 6.4.

Also, keep the documentation for now, but mark it as
deprecated there, too.

This amends  2436e259ce.

Pick-to: 6.5
Change-Id: Iff3e2c170a8fdb8834c0283de9554b503ed3aca4
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2023-01-06 15:00:57 +01:00
Sona Kurazyan 9e61cc4f72 Fix crash when cancelling a QFuture that has continuation with context
To support cancellation of continuations attached via the parent future,
we store a pointer to continuation future's data in parent. This
requires preserving the lifetime of continuation future's data while the
parent is still alive (see 24dedaeaa1).
This is achieved by capturing the promise in the continuation's lambda,
which is only cleaned up after the parent's data is destroyed. This is
already the case for continuations without context, but was overlooked
for continuations with context: they transfer the ownership of the
continuation promise to lambda passed to QMetaObject::invokeMethod(),
which destroys the lambda's context after it's run. As a result, the
continuation's promise (and data, if there are no other copies of it)
is also destroyed, leaving the parent pointing to deleted continuation
data.

To fix this, capture a copy of continuation future's ref-counted data in
the continuation's lambda. This will guarantee that the continuation
data remains alive until the parent is destroyed and the continuation
is cleaned up.

Fixes: QTBUG-108790
Pick-to: 6.5 6.4 6.2
Change-Id: Ief4b37f31e652988d13b03499505ac65c7889226
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2023-01-06 14:00:56 +00:00
Andy Shaw cac325fdc1 SQLite: Update SQLite to v3.40.1
[ChangeLog][QtSQL][SQLite] Updated SQLite to v3.40.1

Pick-to: 5.15 6.2 6.4 6.5
Change-Id: Ic17019f65083b24238025fe6ea6ee9872ac783fe
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
2023-01-06 12:24:13 +00:00
Jannis Xiong 80f44954f6 Fix cache maybe invalid while the signal is actived from queue
with default QObject::connect signal may active from next message loop. invalide cache will hit while accessibility interface is called from windows. Invalide cache will lead to a crash

Fixes: QTBUG-106653
Pick-to: 5.15 6.2 6.3 6.4
Change-Id: I5359672bcd60ed6cfb2edf238645225164cb1b88
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2023-01-06 14:24:13 +02:00
Alexey Edelev fdeaf3054c Avoid full optimization of syncqt if QT_USE_DEFAULT_CMAKE_OPTIMIZATION_FLAGS is set
Skip adding full optimization flags when compiling syncqt if
QT_USE_DEFAULT_CMAKE_OPTIMIZATION_FLAGS is set.

Pick-to: 6.5
Task-number: QTBUG-109792
Change-Id: I585a459f3ca014cbeb3398b4f55d1da393c3c7d1
Reviewed-by: Amir Masoud Abdol <amir.abdol@qt.io>
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
2023-01-06 12:02:39 +01:00
Leon Zhang 0d251afdda Add resetTransform to see also of setTransform in QGraphicsView
Pick-to: 6.5 6.4
Change-Id: I4a38d44f2109f8b92069651c23717da02f5b3091
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-01-06 10:02:16 +00:00
Christian Ehrlicher 65a5efae69 SQL: more documentation and test cleanups
Remove some stuff no longer supported and refine others.

Pick-to: 6.5
Change-Id: I29730d5acfcf4a7ef3f569f101d3a4f72dd8b3aa
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-01-06 05:42:01 +00:00
Amir Masoud Abdol 2b2065bf35 Slow Deprecation of FILENAME_VARIABLE, replacement by OUTPUT_SCRIPT
As discussed in the latest CMake API Review, we are deprecating the
FILENAME_VARIABLE variable name everywhere, and replacing it with
OUTPUT_SCRIPT.

[ChangeLog][CMake] The FILENAME_VARIABLE option of
qt_generate_deploy_script and qt_generate_deploy_app_script is now
deprecated, use OUTPUT_SCRIPT option instead.

Change-Id: Ic8be33eefbc48540166ea0fcf1d1948b052d4b8a
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
2023-01-05 21:56:21 +01:00
Axel Spoerl 812666fe7c Document QGtk3Storage
Add internal documentation to header and implementation of
QGtk3Storage.

Pick-to: 6.5
Change-Id: I8e12dad57c2458dea4446cddc8df1ceef59c070c
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2023-01-05 19:09:20 +00:00
Eirik Aavitsland 7eccd7ac1c Fix potential corruption with image format conversion on arm neon
For tiny scanline lengths, even the initial offset to align on 16
bytes may overflow.

Fixes: QTBUG-109477
Pick-to: 6.5 6.4 6.2 5.15
Change-Id: I198c6fa5a2551a951893515f905bb7cc35479608
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2023-01-05 20:09:20 +01:00
Alexey Edelev 6f7d09677a Change the RUNTIME_OUTPUT_DIRECTORY for configure-time executables
Set the RUNTIME_OUTPUT_DIRECTORY for configure-time executables so
executable will be located inside the QT_BUILD_DIR. This allows to
re-build syncqt and make sure ithat ts binary is replaced and located
in the libexec directory.

Comment on how to rebuild syncqt. Configure-time tools reserve the
original tool name for the imported executable. To re-build syncqt use
'syncqt_build' target.

Task-number: QTBUG-109792
Change-Id: Id7d912b1d75d18d82cb2a69fbd62b89440120d78
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
2023-01-05 20:01:21 +01:00
Marc Mutz 91f18c92d7 Android: requestPermissionsInternal(): use more makeReadyFuture()
Only use an actual QPromise when the calculation will be async.

Change-Id: I5900c6498f56721dd04c4da204c0270492f52eee
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2023-01-05 19:01:21 +00:00
Timur Pocheptsov 6128a92e07 TLS backend SecureTransport: properly clear SSLContextRef
Simply calling SSLClose on context is not enough. Properly clear
the context by calling 'reset' member-function.

Pick-to: 6.5 6.4 6.2 5.15
Change-Id: Ic6a32f6e4193bb19809d1cce184651b78d6273a7
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2023-01-05 15:13:54 +01:00
Julian Greilich b832a5ac72 Android A11Y: Only access the main thread when it is not blocked
When the qtMainLoopThread calls QSGThreadedRenderLoop::polishAndSync(),
it waits for the QSGRenderThread.

In the QSGRenderThread, QAndroidPlatformOpenGLWindow::eglSurface()
calls QtAndroid::createSurface() and waits for the "android main
thread" to return a valid surface.
When the "android main thread" now calls "runInObjectContext" (e.g. by
calling QtAndroidAccessibility::childIdListForAccessibleObject()) it
waits for the qtMainLoopThread and the program is stuck in a deadlock.

To prevent this, we protect all BlockedQueuedConnection from the
"android main thread" to the qtMainLoopThread by acquiring the
AndroidDeadlockProtector.
When QAndroidPlatformOpenGLWindow::eglSurface() already acquired the
AndroidDeadlockProtector we abort the current A11y call with an emtpy
or default value.

Note: b8a9527544 already tried to fix
this by checking "getSurfaceCount() != 0", but there are situations,
where a new surface is being created while an old surface is still
present.

Task-number: QTBUG-105958
Pick-to: 6.5 6.4 6.3 6.2 5.15
Change-Id: Ie40e8654c99aace9e69b0b8412952fa22c89f071
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2023-01-05 15:09:50 +01:00
Paul Wicking f10ae4b887 Doc: Drop link to deleted page
The standard accelerators page was deleted, drop the link to it.

Pick-to: 6.5 6.4
Change-Id: I2fa9a94200d0e5f8895bb8c6981c73b3e9dd159e
Reviewed-by: Kai Köhne <kai.koehne@qt.io>
2023-01-05 15:09:46 +01:00
Ahmad Samir b5701ca5a2 RCCFileInfo: get lastModified file time in UTC directly
These are time stamps, and they use toMsecsSinceEpoch(), no point
getting the time in Local time zone then converting it.

Change-Id: I2db2db5f9ebc062e65514a592fa7fa00cf1d179d
Reviewed-by: Kai Köhne <kai.koehne@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-01-05 14:46:38 +02:00
Ahmad Samir a608744c90 Docs: adjust docs after the QLatin1String to QLatin1StringView rename
Unify wording as "{Latin-1,UTF-16} string viewed by \a str".

Drive-by change: Fix a grammatical error, it's "a US-ASCII", not an
(because it's pronounced by the letter name "U" which is pronounced
like "you", so "a" not "an").

Task-number: QTBUG-108711
Pick-to: 6.5
Change-Id: Iff763f4008341c35317bb3d7a2a228767ff6a648
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2023-01-05 14:46:38 +02:00
Axel Spoerl d18f142062 Document QGtk3Interface
Add internal documentation to header and implementation of
QGtk3Interface.

Pick-to: 6.5
Change-Id: I3e6e970afa0c2ab26e0ce9efe6285cad1edfdb94
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2023-01-05 13:33:07 +01:00
YAMAMOTO Atsushi d05e75ade4 Tweak comment about QCocoaWindow
Remove duplicate 'for', and unify the article of NSWindow to "an".

Change-Id: Iccf762ac54e90816f61634404fb88c9fdd1a43e1
Reviewed-by: Kai Köhne <kai.koehne@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2023-01-05 11:52:20 +00:00
Laszlo Agocs f486d1f4d2 rhi: metal: Add enablers for pre-querying window stuff on the gui thread
Pick-to: 6.5
Task-number: QTBUG-97518
Change-Id: Ia8fb5128149c9f91ebedfa914d1fe3e3d49774dc
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2023-01-04 19:22:16 +00:00
Ahmad Samir 41867c25f8 Use QFileInfo's file times in UTC for file timestamps
This is inherently faster than getting it in UTC from the underlying
native API stat call, then converting it to the Local Time Zone just to
compare them. The same goes for any use-case where you get a QDateTime
then the first thing you do is call t.to{Msec,Secs}SinceEpoch().

Change-Id: Ic13bcfd99b937c9f10f102ea7741832950a553c6
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Kai Köhne <kai.koehne@qt.io>
2023-01-04 19:15:52 +02:00
Marc Mutz 7eff78e8a5 Android: checkPermission/s(): use makeReadyFuture()
... instead of manual QPromise handling.

QtFuture::makeReadyFuture() is both more efficient and more readable.

As a drive-by, replace size() > 0 checks with !isEmpty().

Change-Id: I299fbe8e6be10d8f65b8f86fcc6b586ac3cbd9d2
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Sona Kurazyan <kurazyan.sona@gmail.com>
2023-01-04 16:55:35 +00:00
Marc Mutz 080e1b6011 QAndroidExtras: release mutex earlier in requestPermissionsInternal()
The g_pendingPermissionRequestsMutex protects only the
g_pendingPermissionRequests QHash, so we can drop it immediately after
the QHash::insert() call. In particular, we don't use reference into
the QHash afterwards, and the following runOnAndroidMainThread() call
is internally synchronized, anyway.

Change-Id: I66a0e402e9ed1edb5fd9fec14e85f9371cc4fc36
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2023-01-04 17:55:35 +01:00
Tor Arne Vestbø 7e7bae35f7 macOS: Include text in key events triggered by insertion key-bindings
In 705665957b we started relying on the
input method to decide whether a key event should include the resulting
text or not, based on the assumption that text insertion would happen
via the insertText:replacementRange: selector.

But the NSStandardKeyBindingResponding protocol includes several other
commands for inserting content, including insertTab:, insertBacktab:,
and insertNewline:.

  https://developer.apple.com/documentation/appkit/nsstandardkeybindingresponding

We explicitly handle the latter, but for any command we didn't handle,
we concluded that the input method didn't want us to insert text, and
sent the key event without text, which broke tab character insertion
in text edits.

As long as we're not handling these commands explicitly, we adjust
the logic to treat any command starting with "insert" as an unhandled
request to insert text, and forward it as a key event with the text
included, as before 705665957b.

Fixes: QTBUG-109754
Task-number: QTBUG-106393
Pick-to: 6.4 6.5
Change-Id: I4a164bc809c3606b43f267514a66ff017efeb4af
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-01-04 17:05:19 +01:00
Ahmad Samir 96708cf161 QDateTimeParser: use a local var instead of multiple str::at()
Better readablility.

Change-Id: I936a915d50222c644cda493e01dccfe223a881bd
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
2023-01-04 16:49:12 +02:00
Tor Arne Vestbø ba639edd27 Reflect QStyleHints in AA_DontShowShortcutsInContextMenus
There are two ways to override whether shortcuts (key sequences) should
be shown in menus, QStyleHints::::showShortcutsInContextMenus() and
the Qt::AA_DontShowShortcutsInContextMenus application attribute,
but only the latter is checked by our own menu implementations.

This was confusing, as overriding the style hint had no effect.

It makes sense for the QStyleHint to be based on the platform style
hint, but since we also allows overriding it, the logic in QGuiApp
that initializes Qt::AA_DontShowShortcutsInContextMenus should be
based on the QStyleHint.

Note that the inverse relationship is not maintained, as the app
attribute should not affect the style hints.

This creates a somewhat awkward situation in terms of when you need
to override the behavior, so we might consider deprecating one of
the options.

Fixes: QTBUG-109590
Task-number: QTBUG-69452
Change-Id: I366c17ff00fd8ae10553bbfb88d162ffd2c8040f
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-01-04 15:49:11 +01:00
Yuhang Zhao 9af5a70c55 Update the documentation of QScreen::name()
Task-number: QTBUG-109569
Pick-to: 6.5 6.4
Change-Id: I24ed586e9094e7cd2277c6289ffbd4210dd6e430
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2023-01-04 21:26:25 +08:00
Alexey Edelev f071421558 Check if "-stagingDir" is passed from the command
Check if "-stagingDir" is passed from the command line before trying
to copy files to it.

Pick-to: 6.5
Change-Id: Id39882e4e955bd54328c8e747377b9d49f977378
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-01-04 13:42:07 +01:00
Alexey Edelev ad7ad62d17 Avoid breaking version script generator state
Pass every line to parseVersionScriptContent to not break the
version script generator state. The parser doesn't collect characters
from comment block, so the line containing the 'ignore-next' ELFVERSION
tag produces empty buffer for the further parsing process. Call the
parseVersionScriptContent function even on empty buffers to make sure
that 'ignore-next' counts lines correcly.

Pick-to: 6.5
Fixes: QTBUG-109790
Change-Id: I5f77893462d397f6738a5da1af6ed8dd8a2df70a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-01-04 13:42:06 +01:00
Volker Hilsheimer fb8701cb8b QListView: Prevent infinite loop when wrapping text of item with null-icon
If an item in a list view has a null icon, then the decorationSize gets
calculated as -1, -1. The style would then try to wrap the text to a
lineWidth of -1, ending up in an infinite loop in viewItemTextLayout.

To prevent that, don't set the HasDecoration flag of the style option
when the icon is null, and don't fall back ot the decorationSize unless
the flag is set.

Add a test for this particular item configuration. This also fixes the
widget baseline test with styles that don't provide all standard icons.

Pick-to: 6.5
Change-Id: I691db6abede9a9b2ad300f3ee7fbfdae5fb6097f
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
Reviewed-by: Santhosh Kumar <santhosh.kumar.selvaraj@qt.io>
2023-01-04 13:42:06 +01:00
Eskil Abrahamsen Blomfeldt 84a68ef75c Fix assert when resizing text table with percentage widths
Since Qt 6.3.x, qBound() has started asserting that max > min.
This caused a crash in the QTextDocumentLayout code for assigning
widths to table columns that were sized using percentages, which
depended on previous qBound() behavior of just snapping to the
minimum size if max < min.

There are some specific conditions for this to happen: First
of all, the available width in the table must be too small to
fit all minimum widths (which is calculated based on content).
In addition, the requested widths have to be given as
percentages of the table width, and these have to add to
something lower than 100%. With these conditions, you may get
a case where the calculated percentage width of a column is
larger than the minimum width, but lower than the remaining
width in the table, causing the assert in qBound().

We simply accept the minimum width as the rule in these cases,
which matches behavior without the assert and which looks
correct when resizing the window to be smaller than the table.

Fixes: QTBUG-108183
Pick-to: 6.4 6.5
Change-Id: I16d18dd9b2e7a77fe86d1a353b426075b5050b8e
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars@knoll.priv.no>
2023-01-04 13:42:06 +01:00
Joni Poikelin 7584871f4d Fix a warning about extra semicolon in qstylepainter.h
Pick-to: 6.5 6.4 6.2
Change-Id: I104037ff58ade4b2ceffd73687355a5d237ab571
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
2023-01-04 07:36:05 +00:00
Eirik Aavitsland b1bb732639 Doc: note QWindow::winId() will cause platform window creation
Worth it to emphasize this, as such a side effect from a const
accessor may well be unexpected.

Change-Id: I0b70d81927e0b66799cbe736ce5d488e2ec77ce0
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
2023-01-04 00:09:50 +01:00
Eirik Aavitsland f091026be1 Fix deletion order in QImageReader/Writer destructors
The device would be deleted before the image format handler, and hence
be a dangling pointer that could easily cause a crash if the handler
or codec would access it on destruction, e.g. for cleanup.

Pick-to: 6.5 6.4 6.2 5.15
Change-Id: I51d16b1feddc5945955ac75a2e8701233dba7b82
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2023-01-04 00:09:06 +01:00
Tor Arne Vestbø 3b60534ab9 macOS: Limit cursor update workaround to Monterey and below
The AppKit issue has been fixed in Ventura.

Change-Id: Ic2c0a0ed4ad52ef2d52410ec2c8ba061907cbe8e
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2023-01-03 19:06:17 +01:00
Tor Arne Vestbø a080fc9f89 macOS: Send synthetic cursorUpdate events for utility windows
In faffaa7292 we limited our cursor update
workaround to key windows, but macOS also sends cursorUpdate events
to non-key windows with the NSWindowStyleMaskUtilityWindow style mask,
so we include this in our workaround logic from ae8e96d4c2. We
include NSWindowStyleMaskTitled in this check, as macOS seems to
require a window to be titled to treat it as a utility window.

Task-number: QTBUG-96374
Change-Id: I1c54da181acbe472c2f598fec37aeadada3956bb
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2023-01-03 19:06:16 +01:00
Axel Spoerl 49a8311ae5 Change parsing log output in QGtk3Json from qCDebug to qCInfo
When a palette mapping is imported from a Json file, parsing errors are
logged with qCDebug. This prevents errors from being logged in release
builds.

This patch replaces qCDebug with qCInfo for Json parsing to make errors
visible when the logging category qt.qpa.gtk is activated.

Pick-to: 6.5
Change-Id: I3f92ecc3ab51f863f62ccef9f9061902320d3c3c
Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
2023-01-03 18:25:19 +01:00
Marc Mutz 7a6016aec4 QWindowsKeyMapper: make the code locale-independent
The C toupper function is locale-dependent. Given the right locale
(Türkiye, e.g.), toupper(i) is either

- İ (LATIN CAPITAL LETTER I WITH DOT ABOVE; if representable) or
- i (unchanged; if it isn't)

The latter is clearly wrong. The former might be what is wanted, but
since most locales these days are UTF-8, Í will be unlikely to be
representable in char.

So I conclude that what's intended here is that i gets mapped to I,
even in the Türkiye locale, so use the new QMiscUtils::toAsciiUpper()
instead of <ctype.h> toupper().

Fixes: QTBUG-109520
Pick-to: 6.5 6.4
Change-Id: I6fee2fb15c2facae79f1727455180567698fed80
Reviewed-by: Samuel Ghinet <samuel.ghinet@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2023-01-03 15:57:37 +00:00
Kai Köhne 5de97970b8 Remove cmake output about module major/minor/patch version
I don't quite see the relevance of this. We have explicit warnings
if versions don't match a bit below.

Pick-to: 6.5
Change-Id: I08253fb99313896adb2c13d193ed3ec3954fb0b0
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
2023-01-03 13:53:47 +01:00
Liang Qi 3790821b22 ibus: support high dpi for cursor rectangle
on both X11/xcb and Wayland.

Following similar approach in QFcitxPlatformInputContext::cursorRectChanged()
https://github.com/fcitx/fcitx5-qt/blob/master/qt5/platforminputcontext/qfcitxplatforminputcontext.cpp#L490-L532

Tested with following configurations:
* GNOME on xorg, 100%/125%/150%/200% scale, 1 and 2 monitors
* KDE/Plasma X11, 100%/150%/200% scale, 1 monitor
* GNOME on Wayland, 100%/200% scale, 1 and 2 monitors

Enable fractional scale on GNOME:
gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']"

Pick-to: 6.5 6.4 6.2 5.15
Fixes: QTBUG-103393
Change-Id: Idfd3153e4cd9f9530b4db6f089830ec47451a19e
Reviewed-by: Ilya Fedin <fedin-ilja2010@ya.ru>
Reviewed-by: Weng Xuetian <wengxt@gmail.com>
Reviewed-by: Liang Qi <liang.qi@qt.io>
2023-01-03 12:07:44 +01:00
Liang Qi 54002671bd ibus: add SetCursorLocationRelative in InputContext.xml
Task-number: QTBUG-103393
Pick-to: 6.5 6.4 6.2 5.15
Change-Id: I90c48a0d698636ed289d6f6c1485875e2e91fb34
Reviewed-by: Ilya Fedin <fedin-ilja2010@ya.ru>
Reviewed-by: Weng Xuetian <wengxt@gmail.com>
Reviewed-by: Liang Qi <liang.qi@qt.io>
2023-01-03 12:07:44 +01:00
Tor Arne Vestbø 9bf42425f1 Don't use var-args for Q_DECLARE_EXPORTED_LOGGING_CATEGORY
MSVC should deal just fine with a single argument macro, and this
prevents the silent mistake of passing a single argument to
Q_DECLARE_EXPORTED_LOGGING_CATEGORY which would result in
no error or warning, but without exporting the category.

Pick-to: 6.5
Change-Id: I4190027f8914ad1ef3957759f8e8c0e6cbd8ba97
Reviewed-by: Kai Köhne <kai.koehne@qt.io>
2023-01-03 00:41:21 +01:00
Tor Arne Vestbø 76cef0f171 macOS: Ensure NSEvent processing during NSApp initialization
After 27f0854813 we are ensuring NSApp
initialization without relying on our own runloop sources. But stopping
the app only happens after it has processed an NSEvent, such as a mouse
move or key press, which in the case of an auto tests might not happen.

To ensure that the [NSApp stop] has an effect we post a synthetic event,
that has no other effect than waking up the runloop.

Change-Id: Ifa8912a80f9deff62645cbef56c1b1230542f3e4
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2023-01-03 00:41:10 +01:00
Alexey Edelev 947dd880cc Replace syncqt arguments with rsp file
syncqt arguments contain full paths and may exceed the supported
command line size on some platforms. Use a single rsp file to pass
all arguments to syncqt.

Added the missing end-of-line terminators for error messages.

Pick-to: 6.5
Change-Id: I60ad0f6770458d5256e67f042a63a3c16cd5ecb5
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
2023-01-02 23:16:30 +01:00
Tor Arne Vestbø 351d3e50f9 macOS: Stop using the deprecated [NSWorkspace openFile:] API
We can use openURL instead, which also opens local files in the
associated application.

Pick-to: 6.5
Change-Id: Ieddc6fb68d6b9e64195ed261953b9fffb6b0b73e
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2023-01-02 19:01:30 +01:00
Kai Köhne 7a37114af9 Doc: Fix snippet for Q_DECLARE_EXPORTED_CATEGORY
The name argument must be a C++ variable name, not a string.

Pick-to: 6.5
Change-Id: I6bc45bc9a57fd8429cf033aa118eebff0fcfc4a5
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2023-01-02 18:06:29 +01:00
Jonas Kvinge 314a4d121f QFileSystemEngine: URL encode path in trash info, use relative path
According to the specifications, the path in .trashinfo should be URL
encoded.

The path can be relative when possible, otherwise changing the
mountpoint will break restoring files from trash.
But don't do that for root (/) and home.

For more info, see.:
https://specifications.freedesktop.org/trash-spec/trashspec-1.0.html

Pick-to: 6.5 5.15
Change-Id: Id8271a893a007f4cb5c10611f2b1bc71c1ff4860
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-01-02 17:39:37 +01:00
Alexey Edelev 9c56a77027 Move '--sign' argument to the end of the androiddeployqt command
The '--sign' argument may and may not accept two follow arguments
to specify signing path and alias from the command line. This
functionality breaks the parsing of command line arguments that
follow the '--sign' argument and expect that '--sign' is used with
no follow arguments. It does make sense to check if the arguments
passed after the --sign staring with '--' to make sure that '--sign'
with no arguments is meant to be used.

Pick-to: 6.4 6.5
Fixes: QTBUG-109619
Change-Id: I4ee7fe953e5378c00760d84ec58f9e89e4348944
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
2023-01-02 14:50:51 +01:00
Mikolaj Boc 644036b597 Return to the two-step destruction in compositor
The two-step destruction we used to employ is needed as destroying
a screen which contains a window crashes.

Pick-to: 6.5
Change-Id: I722828be5408a7f079d66e845eeee34ed19cbf34
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
2023-01-02 11:17:57 +01:00
Morten Sørvig a594e95c9a wasm: support setting Emscripten configuration
Support passing Emscripten configuration options to
the QtLoader constructor using the "moduleConfig"
key.

Previously, it was possible to set Emscripten config options
on the global Module object. However, recent versions
if Qt has switched to using the MODULARIZE=1 build setting,
in which case there is no global object.

Fixes: QTBUG-107979
Pick-to: 6.5
Change-Id: Ie99b772ddbb1d9f5464c868a43c821bae01519e0
Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
2023-01-01 23:50:42 +01:00
Ahmad Samir 9aaf258211 QStringBuilder: document issues with using "auto" keyword
Cleanup QStringBuilder API docs.

Task-number: QTBUG-104354
Change-Id: I00029c8f4bfdf35869396ac14d7d9ba0da34cdb5
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-01-01 17:47:04 +02:00
Ahmad Samir 5d76c49e9c Use more documentation snippets for QString and its siblings
Pick-to: 6.5
Change-Id: Ia569806b586923473f68b9fe1d98a3628ba46a58
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2023-01-01 14:13:50 +02:00
Ahmad Samir bab660d124 QStringConverter: add QLatin1::convert{To,From}Unicode()
With the methods that use helpers from qstring.cpp defined in the
latter.

Change-Id: I11d6b0bfb95efe34e56d33d2ecbfe8f4423a9e6c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2022-12-30 16:36:24 +02:00
Alexey Edelev 6a18bc8090 Revert "CMake: Expose generated resource files to IDEs"
This reverts commit 30efb24d45.

Reason for revert: Breaks resource handling in examples: QTBUG-109678. 

Change-Id: I4abfd9960cc26d9b45317f84e63ff7424982d12f
Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
2022-12-30 10:41:37 +00:00
Marc Mutz f68a2316d8 Long live QPromise::addResults()!
Makes the pre-existing QFutureInterface functionality available via
the public QPromise API.

[ChangeLog][QtCore][QPromise] Added addResults() to report multiple
results at once.

Change-Id: I18e6ef2781df422020b9022d78d6c45107b01668
Reviewed-by: Sona Kurazyan <kurazyan.sona@gmail.com>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2022-12-30 07:03:51 +01:00
Giuseppe D'Angelo 114b94c26e QTypeInfo: fix pointer detection
Although redudant, people are allowed to use Q_DECLARE_TYPEINFO on a pointer
type. There's no reason to mis-detect the isPointer trait in that case.

Change-Id: Ic116f24397c91f5a3d31f5d8ee9fa2e587823257
Pick-to: 5.15 6.2 6.4 6.5
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2022-12-30 01:52:11 +01:00
Giuseppe D'Angelo e8f5f20319 QMetaType: fix value-initialization in a corner case
If a type is trivially default constructible, QMetaType (and QVariant)
think that it can be built and value-initialized by zero-filling a
region of storage and then "blessing" that storage as an actual instance
of the type to build. This is done as an optimization.

This doesn't work for all trivially constructible types. For instance,
on the Itanium C++ ABI, pointers to data members are actually
value-initialized (= zero-initialized, = initialized to null) with the
value -1:

https://itanium-cxx-abi.github.io/cxx-abi/abi.html#data-member-pointers

This means that a type like

  struct A { int A::*ptr; };

is trivially constructible, but its value initialization is not
equivalent to zero-filling its storage.

Since C++ does not offer a type trait we can use for the detection that
we want to do here, and since we have also decided that Q_PRIMITIVE_TYPE
isn't that trait (it just means trivially copyable / destructible), I'm
rolling out a custom type trait for the purpose.

This type trait is private for the moment being (there's no
Q_DECLARE_TYPEINFO for it), and limited to the subset of scalar types
that we know can be value-initialized by memset(0) into their storage
(basically, all of them, except for pointers to data members).

The fix tries to keep the pre-existing semantics of
`QMetaType::NeedsConstruction`. Before, the flag was set for types which
were not trivially default constructible. That included types that
aren't default constructible, or types that cannot do so trivially.
I've left that meaning unchanged, and simply amended the "trivial" part
with the custom trait. A fix there (to clarify the semantics) can be
done as a separate change.

Change-Id: Id8da6acb913df83fc87e5d37e2349a4628e72e91
Pick-to: 6.5
Fixes: QTBUG-109594
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2022-12-30 01:51:08 +01:00
Thiago Macieira 41b38c802b Fix improper ELF versions of certain symbols
They got marked as Qt6_PRIVATE_API because of these private header
defining classes that don't follow Qt's naming convention ("mutex",
"condition_variable", "ControlElement"). We have an exclusion for
classes whose name start with Q.

Introduced by 5d903a64ac in the old Perl
syncqt and ported over.

Pick-to: 6.5
Fixes: QTBUG-109605
Fixes: QTBUG-109604
Change-Id: I69ecc04064514f939896fffd173369623c960bcc
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
2022-12-29 17:53:54 -03:00
Christian Ehrlicher cb62cdbaa6 SQL: rework the connection options documentation (typos)
Fix some typos found after the initial commit for the connect options
documentation update

Change-Id: I9cf201363117a2f05e611c26a058f035fa945ddb
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2022-12-29 20:04:17 +01:00
Hannah von Reth 5b8d7d239c DB2: Fix typo in QMetaType
Change-Id: I6ada1fec3ce16670dd7346788db4e9c80ffae8d9
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2022-12-29 18:43:32 +01:00
Axel Spoerl e29ffd3bd1 Fix size calculation of unplugged dock widgets
When unplugging a dock widget, it still grows by the separator size
when dragged upwards or to the left. The unplugged dock widget's size
can become too small to drag it or to access window handles.

This patch corrects the size offset for all drag directions. It expands
the target size to a minimum size, making sure that title bar and
window handles can be accessed after unplugging.

Fixes: QTBUG-106531
Pick-to: 6.5 6.4 6.2
Change-Id: Ie771a9338ebfb4c0eafd3b3b4205de730cbd20ac
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2022-12-29 14:53:50 +01:00
Morten Sørvig 8a20a278fa wasm: avoid LocalStorage past-the-end access on clear()
We were looping over all keys and removing the Qt keys
using an integer index. However, removing one key shifts
all other keys at higher indexes down one step such that
the loop eventually indexes past the end.

Fix this by getting the keys first in a separate step,
and then remove keys without relying on a stable iteration
order (which is also not guaranteed by the standard).

Pick-to: 6.4 6.5
Change-Id: I8bc577d1831d6931ebca2b2e04faf65c9affb429
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2022-12-28 18:14:44 +00:00
Morten Sørvig b36e624c89 wasm: use public API for converting from Uint8Array
Use the new QByteAaray::fromUint8Array() function.

Change-Id: I7bb7a8184e1bfde2a89af2efb331db64f0b4d285
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
2022-12-28 17:57:48 +02:00
Lu YaNing 3c24bb026e QWidgetLineControl: Add missing emit keywords
Add emit keyword to avoid misunderstanding

Change-Id: Iec3a896b75769a0bbc791e186d335ed0f728434f
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2022-12-28 14:50:23 +00:00
Morten Sørvig fbf2a318dd wasm: align QWasmLocalFileAccess API with 6.4
This API is undocumented, but by keeping unchanged makes
it easier to use from external projects.

openFile(): Copy the accept/filter list parsing function
from 6.4. It makes sense to implement this behind the
API, so that user code doesn't have to reimplement it.

saveFile(): Slightly more complicated; the new variant which
takes a QByteArray is better since the implementation can
then keep a reference to the data for as long as it needs,
without copying the data. Add the const char * variant to
keep existing code going for now.

Adjust the calling code in widgets.

Pick-to: 6.5
Change-Id: I1899ebffdb90e40429dcb10313ccc5334f20c34f
Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
2022-12-28 13:21:37 +00:00
Axel Spoerl 7b64eb71c0 Detect appearance by colors unless GTK theme name contains "dark"
QGtk3Theme detects the appearance property by theme name: If the name
contains the keyword "dark", the theme is considered to be dark and
otherwise light.

This detection logic fails, when the GTK theme is dark without
containing the "dark" keyword, e.g. the dark theme "Adapta-Nokto".
While QGtk3Theme imports the right colors in that case, it wrongly
identifies a light theme.

This patch adapts the detection logic: If the theme name contains the
"dark" keyword, it is considered a dark theme without further checks.
If it doesn't, the current GTK3 theme's default background and
foreground colors will be read. If the foreground is lighter than the
background, the theme is considered dark. If the background is lighter
than the foreground, the theme is considered light. If both colors are
identical, the appearance will be Qt::Appearance::Unknown.

Task-number: QTBUG-93955
Pick-to: 6.5
Change-Id: I0e0f4870a1397b6a7918331a852284bb1c91199e
Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
2022-12-28 09:04:21 +01:00
Mikolaj Boc 988c7bfcae Fix the handling of dead keys on WASM
1) Do not attempt to take the first character of event.key when the
key is a dead key - this always returns D as in Dead
2) Do not attempt to immediately modify the pressed key with the dead
key as the dead key itself will be modified

Pick-to: 6.5
Fixes: QTBUG-109629
Change-Id: Ic66536b8b27df23c2f1c4ebf1c02e713990e62ef
Reviewed-by: Aleksandr Reviakin <aleksandr.reviakin@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2022-12-27 21:51:23 +01:00
Shreya Pattani 040b4a4b21 wasm: Work on wasm accessibility elements and events
Implement a11y support by adding html elements (Checkbox, Radio Button,
TabView,Spinbox, ScrollBar, Slider, Event for Button) and events of
the appropriate type and/or with the appropriate ARIA attribute
behind the canvas.

Pick-to: 6.5
Change-Id: I52902eae2bd4ac7a125815e1d2dd3077211fc118
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2022-12-27 14:30:25 +00:00
Sharad Sahu 13c3fd959e wasm: Work on wasm accessibility elements and events
Implement a11y support by adding html elements (Toolbar, Menu,
DialogBox) and events of the appropriate type and/or with the
appropriate ARIA attribute behind the canvas.

Pick-to: 6.5
Change-Id: If9c9fbff9a451b44e57de5d8834f4a78f33f41bc
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2022-12-27 14:30:25 +00:00
Morten Sørvig 42d4619967 wasm: add end-user accessibillty opt-in
We want to make support for screen readers available
incrementally to avoid destabilizing existing functionality.

Accomplish this by initially adding a single "enable
screen reader" button only. When pressed, this button
will remove itself and populate the page with the actual
accessibility elements.

Pick-to: 6.5
Change-Id: I65036d249c408d4dc1fa75e8c807d9b7300e4722
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2022-12-27 14:30:25 +00:00
Morten Sørvig f4dd67461d wasm: add accessibility container to QWasmWindow
Add accessibility (a11y) container QWasmWindow. This
container should underlap the canvas with identical
geometry but ordered below.

Pick-to: 6.5
Change-Id: I7b91e3e69e3b1afa1b03ef7f7b7336e48f1a1594
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2022-12-27 14:30:25 +00:00
Marc Mutz 436501d877 QTextDocumentPrivate: de-inline {add,remove}Cursor()
In a 'ninja qtdeclarative' build, the addCursor() function alone is
compiled 458x for a total of almost 10s cumulative compilation time.

This makes it one of the top-20 template instantiations in a Clang
-ftime-trace build.

The removeCursor() function doesn't show up quite as much, but
de-inline, too, while we're at it.

Pick-to: 6.5
Task-number: QTBUG-97601
Change-Id: I37b920a8b364861efab78f736d71642dc82d8982
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2022-12-27 11:29:24 +01:00
Giuseppe D'Angelo e5a7487c62 QTypeInfo: start moving away from isIntegral / isPointer
They offer no value over the traits in the standard library (in fact,
they're implemented precisely in terms of those traits).
This commit is done in preparation for their removal.

Change-Id: I3fb67e03e1c476f6ac0b369dfbbcf46b291270c8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2022-12-27 04:13:32 +01:00
Marc Mutz dbcbadb7ac runOnAndroidMainThread(): optimize shared pointer use
- port from QSharedPointer to std::shared_ptr (one instead of two
  atomic ops per shared-pointer copy)

- port to std::make_shared (one instead of two memory allocations for
  shared-pointer + payload creation)

Pick-to: 6.5
Change-Id: Idecef5732d181a63e6936f54204eeb7ecbdc4a0f
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2022-12-26 10:05:35 +00:00
Giuseppe D'Angelo f46a7698d3 Update a cppreference link
The reason for having a link to a "user page" on cppreference was to
have in the same place the papers, feature-test macro and corrisponding
value. This information has now been updated in a "official" page so we
can just link to that one instead.

Change-Id: I42658a46c8c0d3b78e1c10c06c81fa4bc78af9aa
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2022-12-24 22:28:42 +01:00
Laszlo Agocs 3e619aff30 windows: gl: Fix WGL_SAMPLES reduction
The logic for writing 0 and false to the keys and values
is off by one.

While we are at it, unify the naming between the two settings
that are possible to reduce (samples and sRGB).

Amends d64f776a9a

Pick-to: 6.5 6.4 6.2
Fixes: QTBUG-109453
Change-Id: I97f3a3c7175bcb555c70967056ab2de45b077f48
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2022-12-24 09:58:37 +01:00
Giuseppe D'Angelo a057b026b8 QSqlDatabase: remove a pointless const_cast
The history of that one line of code is... interesting, to say the
least. `defaultConnection` was originally declared as `char *`, which
happened to work on older MSVC versions. Then it gained a workaround for
other platforms by conditionally marking it const, with a const_cast to
keep the code working on MSVC. Now it is unconditionally declared as a
const char *, but the const_cast is still there. Get rid of it.

Change-Id: Ibfb6728e05f15f540137c94f2d278bd5db988b63
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2022-12-23 22:23:05 +00:00
Marc Mutz 3642d5680d Fix UB (reference to local variable leaving scope) in runOnAndroidMainThread()
The QAndroidApplication::runOnAndroidMainThread() function creates a
task on QThreadPool::globalInstance() to wait for a timeout and cancel
the QFuture representing the task.

It does so by passing a lambda to QThreadPool::start(std::function)
that captures the future, a local variable, by reference. This is UB
when the lambda is ever executed, because the local stack variable's
lifetime will have ended.

To fix, simply capture the future by value, not by reference. Since
QFuture::cancel() is not const, we need to make the lambda mutable.

Fixes: QTBUG-109586
Pick-to: 6.5 6.4 6.2
Change-Id: Icacfb0dc76bcd3a145f90126f535e7c0f4b5ef6a
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
2022-12-23 23:22:58 +01:00
Marc Mutz b6fdf34dfc QAndroidNaticeInterface: replace a pair with a struct
Nicer member names make the code using the type more readable. It also
allows to add other members later.

Pick-to: 6.5 6.4 6.2
Change-Id: I69f1f97673a8f1ad8eb73e4f1e5323eccf929413
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2022-12-23 23:22:58 +01:00
Marc Mutz 500e161987 runOnAndroidMainThread(): Use QThreadPool::start() instead of QtConcurrent::run()
The latter is in a module (QtConcurrent) that depends on QtCore. Don't
make QtCore depend on QtConcurrent...

The code doesn't use the QFuture returned from QtConcurrent::run(),
anyway, so QThreadPool::start(function<void()>) is more than an
adequate replacement.

Task-number: QTBUG-109586
Pick-to: 6.5 6.4 6.2
Change-Id: Id00a42525c3d7454a1fa2d4812de634dbbea1035
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2022-12-23 23:22:58 +01:00
Marc Mutz c049601348 runOnAndroidMainThread(): Don't block QThreadPool::globalInstance() with timout awaiters
A waiting task on QThreadPool::globalInstance() will block the worker
thread that it was scheduled on, making it unavailable for productive
work. That's why one should only put CPU-bound tasks onto
QThreadPool::globalInstance(). When blocking nonetheless, use the
releaseThread()/reserveThread() trick to avoid deadlocks caused by the
pool running out of workers.

So, do that here.

Task-number: QTBUG-109586
Pick-to: 6.5 6.4 6.2
Change-Id: Ia2660c69e1f23b5df0c308576301aac6e05d4725
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2022-12-23 23:22:57 +01:00
Marc Mutz 26ea6157e6 Don't create a QRunnable in QAndroidApplication::runOnAndroidMainThread() w/o timeout
Creating a QRunnable is expensive business, incl. setting up
QThreadPool::globalInstance() if it wasn't set up already, so don't do
it for a no-op task.

Somewhat mitigates, but doesn't fix, QTBUG-109586.

Task-number: QTBUG-109586
Pick-to: 6.5 6.4 6.2
Change-Id: If2043134414d68adc9188e5bb7650ca08046b4aa
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2022-12-23 23:22:57 +01:00
Ahmad Samir ad32854409 Add QUtf8::convertToUnicode(char16_t *, ....) overloads
Mark private API docs as \internal.

Change-Id: Ia2fae84832d5f253ea730c1993ce1810f43dff78
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2022-12-23 19:22:30 +02:00
Ahmad Samir c25e8851e3 qfloat16: fix a compiler warning about shadowed variables
"f" is used a lot as the name of the argument to methods in this class,
so rename the member to something else.

Change-Id: Iddb0e1ba1f6a3e0adf5d1b8ff00a8f82a68f6738
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2022-12-23 19:21:56 +02:00
Ahmad Samir 2fc50a914d QDir: when sorting by time, get last modification times as UTC directly
PASS   : tst_QDir_10000::sorted_byTime()
RESULT : tst_QDir_10000::sorted_byTime():
     345 msecs per iteration (total: 345, iterations: 1)

PASS   : tst_QDir_10000::sorted_byTime()
RESULT : tst_QDir_10000::sorted_byTime():
     0.000015 msecs per iteration (total: 54, iterations: 262144)

Change-Id: I7976c8668aa821d2b7ed3f774f29bdf1ba4a99d1
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2022-12-23 15:13:14 +02:00
Ahmad Samir 605829546f QSettings: use QFileInfo::refresh()
Not so much about performance as it is better readability, it's the same
file, we're just rereading its metadata from the filesystem.

Change-Id: Ia7ae35aea5fec67ead1fc8ead99586b3b0a14727
Reviewed-by: Kai Köhne <kai.koehne@qt.io>
2022-12-23 15:13:00 +02:00
Ahmad Samir 39de5717de QSettings: get file timestamps in UTC directly
These are timestamps, so UTC is all we need. This is faster than getting
the times in the Local Time Zone just to compare them.

Change-Id: I5ceebafea12a7015dce9e3c00d1b35f8da2afb1d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2022-12-23 15:12:55 +02:00
Oliver Wolff c3f8198d07 QWindowsContext::setProcessDpi[V2]Awareness check current value before setting it
Our previous assumption was that the right value was used if we ran into
an "access denied" error. That error only states that the function has
been called before though. The warning should be omitted if the right
value has been set before.

Pick-to: 6.5
Change-Id: I1379242f68e2f09bc6a25dd322fe3634622d8e8e
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2022-12-23 20:34:19 +08:00
Lu YaNing 585614ec22 QFileInfoGatherer: Add missing emit keywords
Add emit keyword to avoid misunderstanding

Change-Id: Ib57edc7f195d2eaa101f03335f5cb90708fc42fd
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2022-12-23 19:10:45 +08:00
Kai Köhne 9f3395b4d3 QFileInfo: Restructure overview
Use less \notes, more sections.

Change-Id: I4c94d67a66c906e0d3b6f55127fce85e974b9138
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
2022-12-23 08:28:23 +01:00