Commit Graph

48808 Commits

Author SHA1 Message Date
Tor Arne Vestbø
4485f0d626 qmake: Don't warn about using private headers if there are none
Change-Id: I1d9ab0b4d25671931faa469e66cb2beb7bd846fd
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-10-23 20:19:29 +02:00
Tor Arne Vestbø
addd3b5292 testlib: Spit out crash backtraces to stderr
Ensures that the backtrace is interleaved with the header and
footer that we print ourselves.

Change-Id: I728f4a05be31e345687cbb5fefe49f76dbe8ae36
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2020-10-23 20:19:28 +02:00
Alexandru Croitor
419db858f5 CMake: Fix deprecation defines not being set properly
Instead of propagating the deprecation wranings, we compiled all code
with -Ddeprecations.

Change-Id: I0233ddc85bdbdcb93d366073b2cea5d47bdbe52a
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2020-10-23 20:12:12 +02:00
Giuseppe D'Angelo
6f265faa17 QList/QVLA: fixup the docs
I'm not 100% sure that qdoc needs this, but in case it does,
here's the commit.

Change-Id: Ia3e17a56fd5df766c250f4875ba5e19e12b98d11
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-10-23 20:08:07 +02:00
Tor Arne Vestbø
85ba43061f Make entry point module an internal module
Change-Id: I9eaadc7ce8ca03d64ff3a33c7b6641b073570a61
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-10-23 20:08:07 +02:00
Tor Arne Vestbø
83ad237771 cmake: Produce internal module pris like qmake does
qmake treats internal modules as just the regular module file,
but with a _private suffix, as opposed to the current cmake
logic, that treats it as the private module file, resulting
in missing e.g. the Qt.foo.module entry.

Change-Id: Id55ca4c23921656d5abfd1d0fdf6430d4fe120bf
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-10-23 16:37:14 +02:00
Giuseppe D'Angelo
155ee2bbd7 QList/QVLA: default the parameter for indexOf/contains/remove/etc.
This allows to use list-initialization when calling these functions,
for instance list.removeAll({}).

Change-Id: I2828d900a44bd0bc5aea5fba4777304b09190bc9
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-10-23 16:37:14 +02:00
Giuseppe D'Angelo
45cf0cf513 QList: make (last)IndexOf and contains function templates
There's no reason why they shouldn't be; one might want to do a
lookup passing an object which is comparable with the list's value
type (e.g. search with a QByteArrayView needle into a QByteArrayList
haystack). Insofar we've had to add overloads to QListSpecialMethods
for all these cases, which clearly doesn't scale and creates
top-tier and low-tier lists.

There is one downside, namely, calling QList<A>::indexOf(B) for a B
for which there isn't an operator==(A, B) but only a conversion
towards A.  Before, B was converted only once (at call site), now
it's converted at every call of operator==.
In general: such types are broken and should be fixed on their own.
However let's avoid a possible regression in client code, so I've
left the QString overloads in QStringList in.

To get there: centralize the implementation of those methods in a
empty base class, which gets then inherited by QListSpecialMethods,
which is inherited by QList. This is there are still special methods
that may want to overload contains, e.g. QStringList which also
passes a case sensitivity).

The only breakages comes from code that was already broken, for
instance mixing signed and unsigned types, and the beauty of this is
that now we *detect* that instead of silently ignoring.

QVLA and other QList methods will be tackled in future commits.

[ChangeLog][QtCore][QList] The indexOf, lastIndexOf and contains
methods now take an object of any datatype -- and not just the
list's own value type. This allows for heterogenous lookup in
QLists.

Change-Id: Ib34812217eb2b0f926fad1fc195b33758196941c
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-10-23 16:37:14 +02:00
Volker Krause
d53bbecf4c Fix QSaveFile always failing on content: URLs
QSaveFile needs QFileInfo::isWritable() to work, which 7e5f38aec6 caused
to always return false for content: URLs.

Change-Id: If839331e4bd176765ed242791cb253c2064f5f6d
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2020-10-23 16:37:14 +02:00
Friedemann Kleint
f6d09d426b Fix tst_qsslkey to compile when SSL is disabled
Move it to the section requiring SSL tests since it
requires QSslConfiguration.

Change-Id: I5c807976ce75fa5967bddb8edd7788dbfbb89375
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-10-23 11:36:48 +02:00
Joerg Bornemann
6681fa7b73 CMake: Allow docs generation without installing in top-level builds
This patch allows in top-level prefix builds to build Qt and to generate
the documentation without running cmake --install first.

For top-level builds we now always use the qdoc binary from the build
directory, not the installation directory.

We also have to copy the global doc files to the build directory to make
them accessible to the generate_docs target.

Change-Id: I2251603418fc3df9a21c7f2892789e9ff6c8cc21
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-10-23 11:36:48 +02:00
Tor Arne Vestbø
1f53a91ed3 cmake: Respect NO_PRIVATE_MODULE when generating module pri files
Change-Id: Id5816d6598a0a484c20674f34f6f809e68671e6b
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-10-23 11:36:48 +02:00
Tor Arne Vestbø
6baa0f4ccc cmake: Don't add include paths to module pri if there are no headers
Change-Id: I8fa01f45410805399a511a87c6f04192ce42d374
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-10-23 11:36:48 +02:00
Ales Erjavec
c3fd24164b QSplitter: Respect managed widget's growth/expand size policy
Use qSmartMaxSize to get the maximum size a widget can take.

[ChangeLog][QtWidgets][QSplitter] Respect QSizePolicy::Maximum and
QSizePolicy::Fixed layout policy of child widgets.

Fixes: QTBUG-87133
Change-Id: I166ef3f6608303b8695f5c05a7bf0d1be4653f4a
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2020-10-23 11:36:47 +02:00
Karsten Heimrich
216c2ed5ce Remove usage of deprecated QStandardPaths::DataLocation
* Rearrange the documention to match the enumeration order.

Fixes: QTBUG-87037
Change-Id: Iad001351e0f309e694b8bbd503813017e6586a21
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
2020-10-23 11:36:47 +02:00
Karsten Heimrich
25edeaa3d6 Doc: Add porting Guide for QRegExp
Fixes: QTBUG-87101
Change-Id: I370c79e295489f4eaf8418bbd53b326f0a8e5123
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-10-23 11:36:47 +02:00
Volker Hilsheimer
aa38ab8f68 Make Q(Multi)Map equality operators documentation-friendly
Change-Id: I1a84c437bb19dd3c667596c59e1404bbbf39978e
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-10-23 10:25:42 +02:00
Volker Hilsheimer
cbefd42e39 Fix documentation for QVariantRef and QVariantPointer
Change-Id: I86b749ec14876df98d5d873cf2274facea49f0c5
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-10-23 10:25:38 +02:00
Topi Reinio
2f91cbaccb Doc: Fix documentation warnings for QProperty and related classes
Task-number: QTBUG-86295
Change-Id: I547f4cf34d9721f56ba1cd665218f66597ffbb5c
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-10-23 10:16:32 +02:00
Lars Knoll
11bad61096 Deprecate QVariant::Type
It's been obsolete for a long time already. Make sure
the compiler now warns about it and remove all remaining
uses in qtbase.

Change-Id: I0ff80311184dba52d2ba5f4e2fabe0d47fdc59d7
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-10-23 09:58:57 +02:00
Lars Knoll
a618c260ed Fix and run the qlocalsocket autotest with cmake build
Change-Id: I79691fe97e1373ffdc6a1b9b929f8a3fc2ef863d
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-10-23 09:58:37 +02:00
Lars Knoll
1e0f2be5ac Do not store non relocatable types in QVariants internal storage
This mostly reverts change 76e8e8e9c8.
The reason is that storing non relocatable types inline in
QVariants storage would implicitly make QVariant non relocatable.

Fixes: QTBUG-87686
Change-Id: I2a09b1dcdd907d60085dccf17f987086dcba878c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-10-23 09:50:16 +02:00
Lars Knoll
194f0ab50c Make some QMetaType members constexpr and inline
Since QMetaType::fromType() is constexpr, it makes sense to also
make some of it's members constexpr.

Change-Id: Ia2d63a904abb680ed63c1f88cb68f1d0309d029c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-10-23 09:50:11 +02:00
Lars Knoll
4175175588 Rename the QMetaType::MovableType flag to RelocatableType
Keep this in sync with the changes we have done in QTypeInfo.

Change-Id: Iaacb0f3cc5c46d3486084a1f6eca480a233d5e1a
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-10-23 09:49:36 +02:00
Lars Knoll
f2df8033f0 Support Java style iterators for QMultiHash
Take the opportunity to clean up the implementation for QHash and
use the standard macro there instead of an inlined copy.

Fixes: QTBUG-86986
Change-Id: Iea846ca97bd8b9be5d6534b31d4c7707fd1a53e1
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-10-23 09:49:32 +02:00
Elvis Lee
ee3adcc642 Export gbm device integration to build it outside
Support external build for device integration which uses
kms and gbm. QKmsScreenConfig supports inheritance
to consider platform specific screen configuration.

Task-number: QTBUG-85268
Change-Id: Iac58898a9cf0bb1d53237a719667a6ebd53d88b9
Reviewed-by: Elvis Lee <kwangwoong.lee@lge.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-10-23 16:46:02 +09:00
Fabian Kosmale
47d2f3cfe8 QPaintDevice: Remove reserved without reservations
It was not during all of Qt 5, and nobody found a use for it when
transitioning to Qt 6. It's probably safe to assume that we will not
need it during Qt 6's lifetime either.
This changes shrinks QPaintDevice to 16 bytes (on 64bit systems), and
its child classes like QImage to 24 bytes, meaning that they fit into
QVariant's SSO buffer.

Change-Id: Ic3b020ad43afe45c76ca0c4056a440345a4e139e
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2020-10-23 09:33:29 +02:00
Allan Sandfeld Jensen
e356ab2c32 Make QPointer comparisons hidden friends
Reduces ADL noise.

Change-Id: Id0aa4b32b7bb6d70ed9106b949452d895d9060a9
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-10-23 09:32:37 +02:00
Andreas Buhr
2516fc935c Add benchmark for QString::number(int)
Add a almost trivial benchmark for QString::number(int).

Change-Id: Ice67eaf28e8d7b235fd5ec5e0b87b3b9053ae61e
Reviewed-by: Karsten Heimrich <karsten.heimrich@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2020-10-23 06:55:35 +02:00
Giuseppe D'Angelo
cca62a7360 QRectF/QPointF/QSizeF: document that operator== and != are fuzzy
This has been the case for a _very_ long time, and I can't
believe this hasn't been documented anywhere.

Change-Id: Ib157edf14e87a6f546c155496f70a760ab218cca
Pick-to: 5.15 5.12
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-10-23 01:57:27 +02:00
Alexandru Croitor
f595c1523e CMake: Check for system_xcb_xinput feature
When compiling the xcb qpa plugin we should check the value of the
'system_xcb_xinput' feature to decide whether to use the system
library or the bundled one, instead of checking for the existence of
the XCB::INPUT target.

This fixes -DINPUT_bundled_xcb_xinput=yes aka -xcb-native-painting
to influence what gets built into our release Linux packages.

Task-number: QTBUG-86053
Change-Id: I78c5eaacb7b6bd6e46afea49189e6111e198fb27
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-10-23 01:32:53 +02:00
Alexandru Croitor
5d81a5d4f9 CMake: Fix headersclean to build with proper flags
It's not sufficient to pass -I{prefix}/include when doing the header
clean check.

We need to propagate all target include directories and compile
definitions, and also the compile flags for good measure.

For macOS frameworks we also need to explicitly pass an -iframework
flag (qmake passses -F instead), to ensure that <QtGui/qfoo.h> style
includes are found when building other repos than qtbase.

Task-number: QTBUG-82615
Change-Id: I76d12340bc01c5c948ff04df9a3df384dcb7e076
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2020-10-23 01:32:39 +02:00
Alexandru Croitor
2a3a99fe44 CMake: Use compiler launcher for headerclean rules
This ensures ccache or sccache is used to cache the compilation of the
headerclean checks.

Task-number: QTBUG-82615
Change-Id: Ie944eb1d643e7271551c9f8337609741e419e9d8
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2020-10-23 01:32:34 +02:00
Alexandru Croitor
7c23281db3 CMake: Fix headersclean to work on macOS
It appears there's a difference between the chosen macOS compiler path
in the CI versus the compiler path on my local machine.

In the CI the chosen compiler path ends up 'being /usr/bin/clang++'
whereas for me locally it's

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++

For some reason the headersclean commands succeed in the CI, but
locally they fail for me saying that standard library includes can not
be found, unless an explicit sysroot flag is specified.

I assume that in the CI the '/usr/bin/clang++' compiler shim chooses some
implcit sysroot, whereas the longer Xcode compiler expects an explicit
sysroot.
It's probably also affected by the fact that in the CI we pass an
explicit CMAKE_OSX_SYSROOT to a non-standard Xcode location e.g.

/Applications/Xcode11.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk

Note the '11' in the Xcode app name.

Locally I don't pass a custom CMAKE_OSX_SYSROOT, and my Xcode is
installed in a regular location e.g /Applications/Xcode.app.

The sysroot flag and path is added to regular CXX compilation rules
inside CMake's core (in cmLocalGenerator.cxx).

Reuse the same variables that CMake uses and add them to our headersclean
command rules.

Task-number: QTBUG-82615
Change-Id: Ic03ea27e39471f5fa168eb5970bf3d3f1d1be251
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2020-10-23 01:32:29 +02:00
Alexandru Croitor
df9c7456d1 CMake: Add convenience custom targets to build Qt plugins
Add 3 new convenience custom targets:
'qt_plugins', 'qpa_plugins' and 'qpa_default_plugins'.

Additionally, if we detect that an internal executable / test
links against Gui, add a dependency on the 'qpa_default_plugins'
custom target, so that if a developer configures Qt for the first time
and then calls ninja 'tst_foo_check', we ensure the test will launch
successfully because the default QPA plugin will also be built.

Change-Id: If6dd70844b5effdf8a293f65f8785855cc85b132
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-10-22 23:32:23 +00:00
Morten Johan Sørvig
4fed50f4ab Prepare for having multiple highdpi manual tests
Move the existing “kitchen sink” test out of the way,
and rename it to “kitchensink”

Change-Id: I121260e640bb2810a94f8112fcea212e97055fb3
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-10-23 00:58:11 +02:00
Morten Johan Sørvig
007d207a8c qWaitFor: check predicate before sleeping
Return immediately if processing events caused the
predicate to become true.

This gives us a nice speedup on tests with call
qWaitForWindowExposed() or qWaitForWindowActive(),
for example tst_QGraphicsView::itemsInRect_cosmeticAdjust:

cocoa       1164ms -> 825ms   ~30% decrease
offscreen    296ms  -> 15ms   ~95% decrease

Change-Id: Ifbab0ca662c082e7dfb609d0cb4bc1161709067b
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-10-22 22:58:11 +00:00
Volker Hilsheimer
48758816db Fix documentation for QIterable and related classes
Correctly specify template parameters, fix typos, add \fn where missing,
explicitly specify scope in see-also references.

Change-Id: I8b04a2b76033b206098e816d1d07d105b838c260
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-10-23 00:58:11 +02:00
Volker Hilsheimer
a6327d7305 Fix documentation for hidden friend operators
At least for qdoc, hidden friends are class members.

Change-Id: I6eaa21565937cd49c0905ee47b8b82b0c1765bc1
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-10-23 00:58:11 +02:00
Tor Arne Vestbø
35e4740385 doc: Fix table bottom margin
It was way too small, and should match the margins
for other content such as paragraphs, so that an
inline table in between two paragraphs has a balanced
spacing.

Change-Id: I2adb434ac7773e9796199f40d5318368ca380aca
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-10-23 00:58:11 +02:00
Andrei Golubev
bfc6e2d69d Use parameter_type in QList methods
QList::parameter_type is defined and used to give better
performance e.g. for arithmetic types. Let's use it consistently
in QList API instead of const T &

Change-Id: I2e12bd83f55679b55a14fbb23ab6172a9cf7bbcc
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-10-22 20:47:10 +02:00
Joerg Bornemann
115ead8fe4 CMake: Remove superfluous del call in qt-configure-module.bat
We're ensuring its existence right in the next line.

Change-Id: If7a55511c9ef839a9f9ae70a7928b58ad768ae65
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-10-22 20:47:10 +02:00
Joerg Bornemann
da9e22f029 CMake: Fix running qt-configure-module without arguments
We need to make sure to create a config.opt file, even if it's empty.
This is the same fix we did for the .bat file in
dad9550305.

Change-Id: I79c507cfe0f9517d3033a773d3a5cf69eb13cfe6
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-10-22 20:47:10 +02:00
Joerg Bornemann
736408880b CMake: Do not prepend -l to libs starting with dash in prl files
For example, we must not prepend -l to -pthread, -framework and -lfoo.

Fixes: QTBUG-87760
Change-Id: Ie1bc7a76183c2c4980c519b5f23dde6c47ec85a9
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-10-22 20:47:10 +02:00
Joerg Bornemann
4b016c87c1 CMake: Advertise qt-configure-module in configure output
...instead of qt-cmake-private.
Also, add ".bat" on Windows.

Change-Id: I2aa94ac76f2dadfb8e94d68b19bb379b3d45a93d
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-10-22 20:47:10 +02:00
Joerg Bornemann
90e384d286 CMake: Fix CMake generator auto-selection on Windows
The variable to check for a Windows host system was mis-typed.

Change-Id: I25b14b80d25bfec0c1a00e99833520b6fb6a4b02
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2020-10-22 20:47:10 +02:00
Joerg Bornemann
4c0ca7dd26 Allow paths with backslashes in qt-configure-module.bat
Fixes: QTBUG-87730
Change-Id: I93172062ec8dfd86529491ffb031edbd2e24592a
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2020-10-22 20:47:09 +02:00
Liang Qi
88f3f33beb tests: blacklist tst_QGraphicsAnchorLayout::layoutDirection()
on Ubuntu 20.04

There is some issue with the glib event dispatcher.

Task-number: QTBUG-87728
Pick-to: 5.15
Change-Id: I4d64206898dd2c8356d5fc51a68c2e5759b38aac
Reviewed-by: Tony Sarajärvi <tony.sarajarvi@qt.io>
2020-10-22 18:06:19 +02:00
Liang Qi
93f19445a4 tests: blacklist tst_QMdiArea::tileSubWindows() on CentOS
Task-number: QTBUG-87768
Change-Id: Iad86e3114e546c0cab92f0fccdc7a265575a687e
Reviewed-by: Tony Sarajärvi <tony.sarajarvi@qt.io>
2020-10-22 18:06:19 +02:00
Alexandru Croitor
9a7de1abf5 CMake: Pad the configure summary string with one more dot
This makes the diff-ing of the config summary between qmake and CMake
builds correct.

Change-Id: I720b69572c23afd78e6d0bea6cdf0740980c3b36
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2020-10-22 18:06:19 +02:00