Commit Graph

30450 Commits

Author SHA1 Message Date
Alexandru Croitor
f54881f73a Fix exporting of Core tools
It should happen after qmake is built, to make sure that the target is
made global, otherwise when cross-building qtbase in another build tree,
the configuration phase will fail due to not finding qmake.

qmake was accidentally exported before if you configured qtbase twice,
because the tool was kept around in a cache variable, the second
configuration actually recreated the CoreToolsConfig.cmake file to
contain qmake as well.

Change-Id: I6941e83f7d6bd03c56de120fba1d18e50c4af0e4
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-07-24 09:01:24 +00:00
Leander Beernaert
42589df6b9 Fix define value for QtQui
A define was placed in the wrong section.

Change-Id: Ibaf16fc45d51d99f7581bc98d6df334972b04278
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-07-23 11:32:30 +00:00
Alexandru Croitor
e86509016c Fix mapping of Apple platforms in pro2cmake.py
"mac" scope in qmake actually means all mac platforms,
just like "darwin", aka macOS, iOS, watchOS, etc.

Regenerate corelib, gui and testlib after this modification.
This is a requirement for the iOS port.

Change-Id: I029c7e907d13f6ec31816a08602a5930f9ac16a7
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Qt CMake Build Bot
2019-07-23 10:31:15 +00:00
Alexandru Croitor
cd408af9bc Add some missing CLASS_NAME values to plugins
This substantially decreases the number of warnings when doing
a Qt static build with examples.

This is a quickfix modifying the relevant files directly. A proper
fix will follow that regenerates the whole files.

Change-Id: I2a3cc2c4ea02b3412beb96f7b4be9d43365a460d
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Qt CMake Build Bot
2019-07-22 18:48:28 +00:00
Simon Hausmann
9f40dddaaa Minor cleanup
Remove unnecessary condition. We're already inside a FEATURE_vulkan
block.

Change-Id: I3a4d2db9ad830b6a0a0b2c5895ab8b2060713370
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-07-22 13:01:39 +00:00
Simon Hausmann
fecefdd369 Fix mapping of features to private features
When a feature generates a private feature, we should not just repeat
the condition but also make it depend on the original feature. In qmake
features had different outputs, while we have a 1:1 mapping. For example
the developer_build feature had "private_tests" as an output feature.
There's no condition attached to the feature and auto-detect is off, so
we'd generate

    qt_feature("developer_build" AUTODETECT OFF)
    qt_feature("private_tests" AUTODETECT OFF)

and that's wrong, because when the user enables the visible feature
(developer_build) we want it to propagate to the private_tests feature.

Change-Id: Id8408864802fa1e1ed9e67a5f47d1d2fde38d321
Reviewed-by: Leander Beernaert <leander.beernaert@qt.io>
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-07-22 08:29:33 +00:00
Leander Beernaert
3212f1b866 Add special case handling for corelib mimetypes resources
We have to treat the resources from mimetypes in corelibs specially
as they are reused for two test cases. Since we no longer use the qrc
files, we have wrapped the relevant code in a function that can be
called for every target that depends on it.

This change also corrects formatting for the generate CMake code
regarding resource commands.

Change-Id: I50a05c81151d75aefc9ca165f5ffeb9f5cd77162
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-07-18 08:05:58 +00:00
Alexandru Croitor
4dac45c9ee Merge remote-tracking branch 'origin/wip/qt6' into wip/cmake
Change-Id: I715b1d743d5f11560e7b3fbeb8fd64a5e5ddb277
2019-07-11 17:17:51 +02:00
Alexandru Croitor
3622ebaac5 Merge remote-tracking branch 'origin/dev' into wip/qt6
Change-Id: I02cbc4f77a82100b96cdb90c160ce0207f180d7f
2019-07-08 13:20:48 +02:00
Tasuku Suzuki
c39910993e Fix build without features.textmarkdownwriter
Change-Id: I30b39bb6ac4c24281c7fc87573936f62512ce015
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2019-07-08 14:26:52 +09:00
Shawn Rutledge
07553d0353 QTextBrowser: assume Markdown is UTF-8
That's how CommonMark specifies it.  The HTML codec-guessing algorithm
was making it fall back to Latin1 in practice, which was screwing up
any Unicode characters found in the markdown source.

Change-Id: I4021adc4a68591ecfd56ef24971af53ce3e9c96d
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2019-07-08 07:25:35 +02:00
Kai Uwe Broulik
777c98ad9f QDBusConnectionInterface: Add activatableServiceNames
This allows to query all names that can be activated on the bus.

Change-Id: I8f894bf858eb18b67a074ca666ad3200ed99c373
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-07-07 12:16:11 +02:00
Giuseppe D'Angelo
3a1f9dec7c Q_ARRAY_LITERAL: protect the check for literal types
Some compilers (hello, MSVC) do not produce literal types in Qt
because their constexpr support has been blacklisted.
Therefore, amend the check for literal types in Q_ARRAY_LITERAL:
only do the check if the compiler supports constexpr.

Change-Id: I7cffe00dde447d975aa6a7d02248df9c351508ff
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2019-07-06 19:07:04 +00:00
Andreas Hartmetz
eea99e1e8f Fontconfig font database: Short-circuit matching by filename
If the filename matches, no other matching is necessary. Fontconfig
doesn't have a fast path for that, so implement one here.
Fontconfig is unlikely to add that fast path, see here:
https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/103

With -O1 builds of Qt and KDE stack, 358 fonts installed according
to KDE systemsetting, on a Ryzen 1800X, startup time of kwrite
decreases as following according to perf stat:
msec task-clock: ~480 ms to ~455 ms
cycles: ~1.73e9 to ~1.65e9

Change-Id: I630a80e4bed2647d5bbd95247005aab7d0cb0363
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2019-07-06 19:55:02 +02:00
Marc Mutz
619b92385e QtNetwork: port remaining uses of QMutex::Recursive to QRecursiveMutex
In one case, added NSDMI to avoid churning the ctor-init-list.

Change-Id: I5587d5cb7e393f60ad29cb5186127304d27d1d46
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-07-06 17:14:35 +02:00
Marc Mutz
aadf64f084 QtGui: port from QMutex::Recursive to QRecursiveMutex
Change-Id: I1ce4fcfa1bfb9a89fe3ebe61d049b9b3100fd700
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-07-06 17:14:31 +02:00
Marc Mutz
5de9dedbc7 QtNetwork: bearer: port from QMutex::Recursive to QRecursiveMutex
Change-Id: I691ecbaf9ea0796decbb48fd62b25d0a2941d979
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-07-06 17:14:28 +02:00
Marc Mutz
cd113d0dcb Port some trivial cases from QMutex to QRecursiveMutex
In all of these cases, the effect of the change is local to one file.

Change-Id: I3bda3aadee3b42e7797183c2330183390b92d1f2
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-07-06 11:22:37 +02:00
Marc Mutz
95310aac6d Short live QRecursiveMutex!
Move the recursive mutex use case out of QMutex into a separate class,
unsurprisingly called QRecursiveMutex. As an immediate benefit, 90% of
the QMutex users now enjoy a constexpr QMutex ctor.

This change prepares for a real split in Qt 6, so that both use-cases
are no longer bundled up in one class.

[ChangeLog][QtCore][QMutex] Added QRecursiveMutex as a replacement of
QMutex(QMutex::Recursive).

Change-Id: I79b8724e8a8ee65e4bd0f06acd76103fe4197b8c
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2019-07-06 11:22:16 +02:00
Tasuku Suzuki
a393ea0729 Fix build without features.itemmodel
Change-Id: I1235bed395a47438bc18571e2331a3432e274dec
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2019-07-06 17:54:13 +09:00
Tasuku Suzuki
e36247754e Fix build without features.mimetype
Change-Id: I8c5521c5cfbc6c13c78d2bc8805fa5a021675b6c
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-07-06 17:41:02 +09:00
Liang Qi
9bc92cdcfd Merge "Merge remote-tracking branch 'origin/5.13' into dev" 2019-07-05 19:36:41 +02:00
Tasuku Suzuki
5d79f38370 Fix build without features.library
Change-Id: I3ce4a8e4c6488737115f2f16bfd8f0e1fc5fc4fa
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2019-07-06 02:33:41 +09:00
Tasuku Suzuki
6b26b2ee03 Fix build without features.action
Change-Id: Ia776cdcb36d07bb89f39c631029458adf2187d90
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2019-07-06 02:25:16 +09:00
Jean-Michaël Celerier
a5b78a3660 cmake: implement default qpa plugin behavior for static builds
This is done by adding a DEFAULT_IF argument to add_qt_plugin, which accepts
if-evaluated expressions.

e.g.

    add_qt_plugin(myplugin
	DEFAULT_IF ${foo} STREQUAL ${bar}
        ...
    )

so that this mechanism can be reused later if necessary.

Change-Id: I7eba9adaaa28e55a4f0f94cf206e868b990027e6
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-07-05 14:58:52 +00:00
Jean-Michaël Celerier
5769e1a2f6 cmake: allow client apps to load static plug-ins
Based in part on Kyle Edwards's implementation :
https://codereview.qt-project.org/c/qt/qtbase/+/243731

Example :
```
cmake_minimum_required(VERSION 3.15)
project(foo)

add_executable(foo main.cpp)

find_package(ICU COMPONENTS i18n uc data REQUIRED)
find_package(Qt6 COMPONENTS Core Gui REQUIRED)
target_link_libraries(foo Qt6::Core Qt6::Gui)

qt_import_plugins(foo
    INCLUDE
        Qt6::qxcb
    EXCLUDE
        Qt6::qgtk3 Qt6::qeglfs-kms-integration Qt6::qjpeg
)
```

Change-Id: If7736c42f669f7d7f43052cae59c28fc7fcb4156
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-07-05 14:56:56 +00:00
Liang Qi
deee7b7ece Merge remote-tracking branch 'origin/5.13' into dev
Conflicts:
	.qmake.conf
	qmake/generators/makefile.cpp

Change-Id: Ifb2633a69d0bf8cdf12d799c6259beefc279c49e
2019-07-05 15:37:50 +02:00
Sona Kurazyan
b0cd007335 Remove usages of QSysInfo's deprecated APIs
- Replaced QOperatingSystemVersion::WindowsVersion,
  QSysInfo::windowsVersion(), QSysInfo::macVersion(),
  QSysInfo::MacintoshVersion with QOperatingSystemVersion::current().

- Added QOperatingSystemVersion::WindowsVista for convenience, as it
  is used in lots of places.

Change-Id: If9c4ac496005b2e70b5c70be160747afa74b98c1
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-07-05 09:26:17 +00:00
Sona Kurazyan
9b3e8b32f2 Remove usages of deprecated APIs of corelib
- Replaced the usages of deprecated APIs of corelib by corresponding
  alternatives in the library code and documentation.

- Modified the tests to make them build when deprecated APIs disabled:
    * Made the the parts of the tests testing the deprecated APIs to
      be compiled conditionally, only when the corresponding methods are
      enabled.
    * If the test-case tests only the deprecated API, but not the
      corresponding replacement, added tests for the replacement.

Task-number: QTBUG-76491
Task-number: QTBUG-76539
Task-number: QTBUG-76541
Change-Id: I62ed4a5b530a965ec3f6502c6480808f938921aa
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2019-07-05 11:25:46 +02:00
Lars Knoll
6061e6820b Initialize variables to make coverity happy
Change-Id: Id574a114cbed04927ae380c6d97027cf4b351032
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-07-05 09:33:50 +02:00
Jan Arve Sæther
bcd4b14026 Fix qFindTestData() to work with relative resource paths
If the resource path 'base' was relative it would enter condition 3) in
qFindTestData() and it would actually find the nonsensical "://data" as a
viable candidate.  We don't want to enter that case, but rather enter the
subsequent ('Try resources') case

Change-Id: I1928ba02c941e23fee4fec9052a1981e46fa59b7
Task-number: QTBUG-73512
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2019-07-05 09:11:35 +02:00
Jan Arve Sæther
c4932f93d5 Do not access invalid QAccessibleInterface
Noticed this when running Qt Creator against dev

Change-Id: Ie75b2e0f2a77033ce0455d7ee3304193aa6e511c
Reviewed-by: André de la Rocha <andre.rocha@qt.io>
2019-07-05 09:11:31 +02:00
Tasuku Suzuki
be1e682572 Fix build without feature.xmlstreamreader
This commit introduces a new feature called vkgen for the tool which
depends on xmlstreamreader.

Note that when features.vkgen is disabled, vulkan.pri will generate
dummy qvulkanfunctions.h and qvulkanfunctions_p.h because buildsystem
needs them.

Task-number: QTBUG-76159
Change-Id: I03d526a0fd76a2d8b531940f37538cead109d9d3
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
2019-07-05 16:11:28 +09:00
Tasuku Suzuki
7b17113e49 Fix build without features.inotify
-no-feature-inotify was ignored on Linux

Change-Id: I65bab5b31740f10eacea6735119702a79df5c263
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2019-07-05 04:47:35 +09:00
Ulf Hermann
ff561baabd Testlib: Reset the global benchmark data only if it matches
You can create multiple instances of QBenchmarkGlobalData as the ctor
is public.

The qmltest plugin does create a static one, but only conditionally
assigns it to the singleton pointer. On shutdown the plugin is removed
and the QBenchmarkGlobalData::current should only be reset by the dtor
if it's actually pointing to the same object.

Change-Id: I616c1ccf6f7a00abf1de342094da88481510bc7b
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-07-04 15:39:09 +02:00
Giuseppe D'Angelo
656117100b QSet docs: don't use std::find for lookups
That code would normally call for QSet::find instead
(Uniform Container Find cannot come soon enough).

Since the code is showcasing a STL algorithm usage,
port it to std::find_if to showcase a real use case.

As a drive-by: fix the usage of endl with std::cout.
(Ok, it's just a variable called "cout", and I'd argue
that in example code "cout" is not the name of a
QTextStream).

Change-Id: I8686178b33c31552eb4d909a4089453d60994b79
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2019-07-04 09:22:19 +02:00
Friedemann Kleint
1bddb4ad7d QApplication::topLevelWidgets(): Avoid allocation of list
Use the QSet QWidgetPrivate::allWidgets directly instead of
calling QApplication::allWidgets(), which allocates a QList.

Change-Id: I16d289030cecefae7811d4b2c94f865f46f700d5
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-07-04 08:23:00 +02:00
Tasuku Suzuki
c50362597a Fix build without features.cursor
Change-Id: Id7617e03f86a4dd7d1ada37c91cf792bca7f1d6d
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2019-07-04 09:59:52 +09:00
Lars Knoll
1e4a973b7e Use QRegularExpression for filtering in QDirIterator
Reduce our usage of QRegExp in preparation towards deprecating
it. This also brings it in line with QDir that already uses
QRegularExpression for filtering.

Keep the old QRegExp based code around in bootstrapped mode,
since qmake uses this functionality.

Change-Id: I98b9d2875c30e17e406b6711dfe3265ba37624ac
Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
2019-07-03 22:15:48 +01:00
Mikhail Svetkin
f883f8409f qtlite: Fix build with -no-feature-commandlineparser
Change-Id: Ie7b7b119073691c0d3b6358f876298fc86cfe9e9
Reviewed-by: Tasuku Suzuki <tasuku.suzuki@qbc.io>
Reviewed-by: Timo Aarnipuro <timo.aarnipuro@qt.io>
Reviewed-by: Kari Oikarinen <kari.oikarinen@qt.io>
2019-07-03 23:15:40 +02:00
Qt Forward Merge Bot
e72e60b107 Merge "Merge remote-tracking branch 'origin/5.12' into 5.13" 2019-07-03 15:19:38 +02:00
Qt Forward Merge Bot
a2b221e595 Merge remote-tracking branch 'origin/5.12' into 5.13
Conflicts:
	.qmake.conf

Change-Id: I936be3c0df2b9845ff6a85eb3d4442cdabe63d37
2019-07-03 15:19:26 +02:00
Marc Mutz
f70905448f Add QT_NO_JAVA_STYLE_ITERATORS and mark QtBase free of it
... except for tests, which manually undefine the macro.

Like QT_NO_FOREACH, this is a technical way to keep JSI-free
modules JSI-free going forward.

Change-Id: Icf1342da00a700f42f9e32a253d1cdb94c38dd7e
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2019-07-03 14:48:37 +02:00
Marc Mutz
f99bbfb9ea QFseventsFileSystemWatcherEngine: port some Java-style iterators to ranged-for
Amends b03385f9cf.

Java-style iterators are scheduled to be deprecated.

The general pattern used in the patch is that instead of copying an
input list, then iterating over the copy with some calls to
it.remove() (which leads to quadratic-complexity loops), we simply
copy conditionally (a la remove_copy_if instead of remove_if).

To make clearer what's going on, rename the outgoing list to
'unhandled'.

To avoid having to touch too much of the loops' structure, which
sometimes is quite convoluted, use qScopeGuard to do the append to
'unhandled', unless the original code removed the element.

Change-Id: I808a939b9c816b329ee87620e0a3461fee6e3e40
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-07-03 14:48:33 +02:00
Timur Pocheptsov
33fdd5c833 Fix a warning treated as error - 'importDevice not used'
Change-Id: Id48ff52d6532cf3585648addd498cdddccbcb994
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2019-07-03 14:48:28 +02:00
Marc Mutz
e1c9276c77 Optimize QSet set operations
Replace the identity check with a check for the underlying QHash
objects being shared and replace backwards iteration, which is really
forwards iteration with wrapping at bucket boundaries, with forward
iteration. QSet cannot contain duplicates, so the order in which the
RHS elements are presented to the algorithms does not matter.

Change-Id: Iad8528e3a9501b14cb85601b221a848aad91480c
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2019-07-03 14:48:24 +02:00
Friedemann Kleint
e40a139abf QtWidgets: Fix wrong screen returned by newly added QWidgetPrivate::associatedScreen()
QWidgetPrivate::windowHandle() should not return nullptr from the
WindowHandleMode::Direct branch in case WindowHandleMode::Closest was
passed.

Ameds eed9a8fbd3.

Task-number: QTBUG-62094
Task-number: QTBUG-73231
Change-Id: Ia55fff15f0a499cef9525e53111ddd55b2e012d0
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2019-07-03 14:48:20 +02:00
Felix Barz
0f92f2f35d Add custom verb support for WASM HTTP requests
The QNetworkReply implementation for Qt for WebAssembly now supports
usage of the QNetworkAccessManager::sendCustomRequest, making it
possible to send requests with custom verbs.

[ChangeLog][QtNetwork][QNetworkAccessManager] Fixed
QNetworkAccessManager::sendCustomRequest for Qt For WebAssembly.

Fixes: QTBUG-76775
Change-Id: I9394ffef110fce4ed2c877893631bedc7631f71e
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
2019-07-03 14:41:11 +02:00
Allan Sandfeld Jensen
6ff0614b61 Handle multiple font-families in <font> face attribute
This seems to be a common use case, and to be expected from pastes
of MSWord documents.

Change-Id: I5849d7f51408e76f15a0b03c2118649f118af1d6
Fixes: QTBUG-66794
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2019-07-03 13:21:14 +02:00
Marc Mutz
8d414e6794 Mark QObject::deleteLater() as \threadsafe
Because it is. It's just QCoreApplication::postEvent(), which is thread-safe.

It also _has_ to be, because we recommend to use deleteLater() to delete
QObjects that live in another thread:

Quoting the ~QObject() docs:

> Warning: Deleting a QObject while pending events are waiting to be delivered
> can cause a crash. You must not delete the QObject directly if it exists in
> a different thread than the one currently executing. Use deleteLater()
> instead, which will cause the event loop to delete the object after all
> pending events have been delivered to it.

If deleteLater() is not thread-safe, it cannot be used for one of its intended
purposes.

Change-Id: I333d506b42bdfcdff00fe6cefa234c21865625a6
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-07-03 09:03:24 +00:00