Commit Graph

46555 Commits

Author SHA1 Message Date
Joerg Bornemann
f6b7b64ed0 CMake: Adjust conversion scripts to iconv changes in qt5compat
Change-Id: I8e06a09768bd3554500d666273060d2e130965b8
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-06-28 17:17:02 +02:00
Joerg Bornemann
95244af2f9 CMake: Let qt_copy_or_install set the executable bit for PROGRAMS
In a prefix build, this function uses install(PROGRAMS) which correctly
sets the executable bit. In a non-prefix build, we did file(COPY)
without explicitly setting executable permissions.

Now, we're also setting the executable bit for
qt_copy_or_install(PROGRAMS) calls in non-prefix builds.

Change-Id: I283e9aeed2a23016ee196d83d584a7eaaa5edd66
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-06-28 17:16:29 +02:00
Joerg Bornemann
8c97ae0c1f CMake: Make the path variables in Qt6CoreConfigExtras.cmake relative
To be consistent with the Qt6HostInfo package, we're providing paths
without prefix in the variables like QT6_INSTALL_BINDIR.
The full path can be easily obtained by combining the relative path with
the QT6_INSTALL_PREFIX variable.

Also, the value of QT6_INSTALL_SYSCONFDIR was wrong. It usually is
located outside of the prefix.

Change-Id: I0035633a8c1c865d86d5ffc8b36565ceb2e7ea25
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-06-28 17:16:02 +02:00
Joerg Bornemann
a4f11fa99d CMake: Create Qt6HostInfo package
This package is supposed to be loaded when cross-building Qt from the
host Qt installation prefix. It provides information about the host Qt
by setting various variables. The information reflects what "qmake
-query" of the host Qt would return.

All provided variable names begin with "QT6_HOST_INFO_".

Change-Id: Id568923a318d6e3b48c450663519a3727f615a8f
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-06-28 17:15:30 +02:00
Richard Moe Gustavsen
040a7cfa93 macOS: Clean up modal sessions after each pass of processEvents()
The Qt macOS event dispatcher defers modal session cleanup until
the next runloop pass. But as it stood, we never did do so for
stand-alone qApp->processEvents() calls. The result was
that a NSModalSession would be kept alive longer than necessary, which
would impact the activation state of other QWindows.

Change-Id: I054f3084132c9d20a29a3f5823c19b7123ef40bf
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2020-06-27 21:18:05 +00:00
Dimitrios Apostolou
33714b6c02 Adjust configure -cmake to accept both single and double dash arguments
This uses sed -E (extended regular expressions) to improve readability of
regular expressions. Shouldn't be a problem on most modern systems.

Change-Id: I12c9834c1ef83bf5f8547bccff655a6b8525cc3d
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-06-27 02:58:24 +02:00
Dimitrios Apostolou
52a7d2e3a3 Fix configure -cmake -nomake examples -nomake tests
Change-Id: I4cea33ec5a231dc84805cb3e5052e662cc601749
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-06-27 02:58:16 +02:00
Dimitrios Apostolou
e3fe8524ed Fix -system-library and -qt-library arguments for configure -cmake
Change-Id: Ief19f2e8cb2996b7d09e2354328d30a67ad801fd
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-06-27 02:58:08 +02:00
Christian Ehrlicher
ab1e0961d4 QFileDialog: remove deprecated mode QFileDialog::DirectoryOnly
Change-Id: Ia06e80c1bbed3e5bb80793aebd0a4780eb81a36b
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-06-26 22:40:34 +02:00
Alexandru Croitor
b0772b41c2 CMake: Display found information in some of the Find modules
Change-Id: I5d92f2f1a552888361a2939577c2b0177c62b596
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-06-26 22:14:48 +02:00
Alexandru Croitor
fb5cf5be15 CMake: Fix some incorrectly included FindPkgConfig modules
This gets rid of a few warnings during configuration.

Task-number: QTBUG-85276
Change-Id: I07d2fdfd8d3f81f1d780528ee6350e1a3ded9523
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-06-26 22:14:43 +02:00
Alexandru Croitor
cf3cef1ef5 CMake: Make more inner find_package calls quiet
Task-number: QTBUG-85276
Change-Id: I8ed84e2f2cdaf90224452a5e5a549791574edc15
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-06-26 22:14:38 +02:00
Alexandru Croitor
2efd0fbc32 CMake: Add meta-target host_tools to easily build just the tools
A developer could write 'ninja host_tools' to build the qtbase tools
and their dependencies, and then configure another cross-compiling
build dir pointing to the previous host build. This shortens the
workflow for cross-building when working in qtbase.

Change-Id: I69e70d23ce9df8669bcadf326d0586f097e5cb21
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-06-26 22:14:29 +02:00
Alexandru Croitor
3ef14c8943 CMake: Fix framework handling for .pri files
Rather than embedding the full absolute path to the framework, we
should instead write a -framework Foo flag.

qmake seems to do this by specifying QMAKE_LIBS_FOO in the mkspec.
We'll try to get away with just deriving the name of the framework
from the path, to avoid having to introduce a mkspec equivalent
mapping for CMake.

This doesn't currently handle framework include paths, which qmake
also handled by harcoding QMAKE_INCDIR_FOO in the mkspec, and then
sysrootifying it via mkspecs/common/mac/sdk.prf.
Hopefully that's not really needed, given that -framework flag
should imply include paths as well.

Somewhat partially amends c254254c55

Task-number: QTBUG-85240
Task-number: QTBUG-84781
Change-Id: I70ea5021422d7b1f5afa9c4a595d1a9b8a8217d3
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-06-26 22:14:24 +02:00
Alexandru Croitor
167741717f CMake: Fix tst_qmake not to hang and re-enable it
We don't really know why, but using the ctest
--force-new-ctest-process flag stops the test from hanging.

Also re-enable the test.

Task-number: QTBUG-78449
Task-number: QTBUG-81365
Change-Id: I33094696dfe3f610dc257089074b1c2a9926f651
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2020-06-26 22:14:09 +02:00
Alexandru Croitor
a2c772dc58 CMake: Use build environment prefix.bat when running tests
Tests like tst_qmake need the build environment to be able to build
apps / libraries. This is mostly needed for MSVC.

Set the TESTS_ENV_PREFIX env var to point to the proper prefix.bat
(host or target) and use that when running ctest.

Task-number: QTBUG-85240
Task-number: QTBUG-78449
Task-number: QTBUG-81365
Change-Id: I6fa68714202ac7fc703973fc772e03b84790a043
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2020-06-26 22:14:04 +02:00
Joerg Bornemann
9a4391271b Remove superfluous define from tst_qmake
The QMAKE_CROSS_COMPILED define isn't used since 2011.

Change-Id: I9f03791e9f7c0ef439db5e65d930c0b7cb928974
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-06-26 21:24:52 +02:00
Joerg Bornemann
af61b5ca5c CMake: Fix tst_qmake::resources() on Windows
This test calls qmake on a project that generates a .qrc file. On
Windows, where debug_and_release is on by default, the generated qrc
file ends up in a "debug" or "release" subdirectory. On other
platforms the file is generated directly in the build dir.

To guess the right location, the preprocessor defines RELEASE_BUILD
and DEBUG_BUILD were passed to tst_qmake.cpp by the test's .pro file.
While the mapping from debug_and_release was fine for the .pro file,
it was commented out in the automatically converted CMakeLists.txt.

Instead of trying to fix the condition, we're going the easier route
that's used in all other .pro files of tst_qmake: make sure that
debug_and_release doesn't get in the way. In other tests this is done
by setting
    DESTDIR = ./
which doesn't work for the generated qrc file. That's why we simply do
    CONFIG -= debug_and_release
to make sure that everything is generated directly in the build dir.

Change-Id: I557ac4e21d7b385004d369fae8a3f727d76d4d88
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-06-26 21:24:50 +02:00
Giuseppe D'Angelo
b40f36603d QList: use =default for its default constructor
Change-Id: Id5270eac2464bf2d3810de18579d4dc295e98b38
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-06-26 20:51:21 +02:00
Eirik Aavitsland
95b5a56071 Improve deprecation message for QLine::angle(QLine)
angleTo() always gives an answer measured ccw, so between 0 and 360
degrees. The deprecated angle() would give either cw or ccw,
depending on which is smaller, so between 0 and 180 degrees.

Help users porting by showing a simple way to achieve the angle()
behavior in the deprecation message.

Change-Id: I66f77d2b4e688562e443428209737aa3332a448f
Pick-to: 5.15
Fixes: QTBUG-85087
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-06-26 13:24:17 +00:00
Eirik Aavitsland
1a63409579 QImageIO: use the new allocation checker in the format handlers
Change-Id: I604d99ce476d4758a1e20b78257082911f1f1546
Task-number: QTBUG-85037
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-06-26 15:24:05 +02:00
Eirik Aavitsland
5dea4fe956 Introduce a settable allocation limit on image loading
[ChangeLog][QtGui][QImageReader] Introduced a settable allocation
limit on image loading to limit resource usage from corrupt image
files.

Change-Id: Ibed7b0cac32798125a060e6db80b17ebc5e70759
Task-number: QTBUG-85037
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-06-26 15:23:58 +02:00
Tor Arne Vestbø
cc857a3c71 macOS: Remove examples for deprecated QMac(NativeWidget|CocoaViewContainer)
Change-Id: I60d694f868623ed9761baf0cf532a87ab3412208
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-06-26 15:10:26 +02:00
Jarek Kobus
b043871d2b Use QList instead of QVector in opengl
Task-number: QTBUG-84469
Change-Id: I26c1cfab7f2d9aa5c71847ae02bfe0cf15c04a1b
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-06-26 15:09:17 +02:00
Tor Arne Vestbø
f529f94132 macOS: Close popups on mouse down using synchronous QPA delivery
Change-Id: I5ccb5ca4f9b9f7a480c575c5a2710ec20361cf88
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-06-26 14:58:45 +02:00
Tor Arne Vestbø
cbd2973a19 cmake: Pick up custom Info.plist in user projects
We can't rely on the MACOS define as that's set by our private
QtPlatformSupport.cmake that's not shipped.

Change-Id: I86c578a282a0833408a06d923954510a3579bdaa
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-06-26 14:58:42 +02:00
Alexandru Croitor
554d40da58 CMake: Skip building tst_qprocess test when cross compiling
tst_qprocess hangs on the qemu armv7 configuration.

Task-number: QTBUG-85287
Change-Id: I5a77a81a24bb1bd315edfcf14f3bcbfd5b925e4d
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-06-26 14:54:32 +02:00
Friedemann Kleint
7789c0dc86 SSL configure test: Fix confusing warning
Remove quote character, fixing:

Performing C++ SOURCE FILE Test HAVE_openssl_headers succeeded with the following output:
Run Build Command(s)
src.cxx 8 88: warning: missing terminating ' character
    8 | #  error OpenSSL was reported as >= 1.1.1 but is missing required features, possibly it's libressl which is unsupported

which makes one think the test failed.

Change-Id: I0ac02deee4282ef7c953186b820a31309e82b5e1
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-06-26 14:49:08 +02:00
Laszlo Agocs
d8bf71026c Fix up QVulkanWindow docs
Pick-to: 5.15
Change-Id: I5a37a57245b8d859adf02810d3954e7532e4a475
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-06-26 14:42:47 +02:00
Jarek Kobus
0e6f6507d5 Use QList instead of QVector in network
Task-number: QTBUG-84469
Change-Id: I7827da68e73ca8ff1e599c836f2157894c452b63
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-06-26 14:42:43 +02:00
Laszlo Agocs
db61e43c81 rhi: Enable specifying just an adapter or phys dev
Required by OpenXR. A VkPhysicalDevice or an adapter LUID + feature
level pair should be adoptable while leaving the rest (device, queue,
etc. setup) to QRhi as normal.

Change-Id: Iada0972671b037b4efb03e7831b7c9b8c5f2393d
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2020-06-26 14:42:42 +02:00
Laszlo Agocs
b60f516aca Fix qsizetype fallout in rhi manual tests
Change-Id: I574a2930b5eeb4b3e1f3c6fca6d70dbda64ec324
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2020-06-26 14:42:36 +02:00
Assam Boudjelthia
6f837d6f07 Android: fix QDesktopServices::openUrl() error for file scheme path
If the url is a "file:" scheme url don't check for permissions
which the file won't have, and then disable StrictMode for API >= 24
to be able to pass the "file:" path to the openUrl intent.

Pick-to: 5.15
Fixes: QTBUG-67877
Change-Id: Ia3fecc24a67069dc76f866455277bf8b929e7697
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2020-06-26 12:41:42 +00:00
Tor Arne Vestbø
c644dc9700 cmake: Match tense of other log output
Change-Id: Ied164c97bd54f6b37450d7a2cf8225ee5190ce17
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-06-26 14:41:42 +02:00
Lars Knoll
e81330d327 Add explicit encode()/decode() methods to QStringConverter
The functional style interface is nice, but does feel alien in some
contexts, so better also have explicit encode and decode methods.

Change-Id: Ic07ced15f65cdb3a7f1cf044041e341d2ef87f79
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
2020-06-26 14:41:42 +02:00
Robert Loehning
873c099788 Fuzzing: Add fuzz target for QCryptographicHash::result
Pick-to: 5.15
Change-Id: Ifc12358dd8cb932fe62c13975554d753a4f1afd9
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-06-26 14:41:42 +02:00
Giuseppe D'Angelo
d4bce57340 Unexport QModelIndex
It is entirely inline.

Change-Id: I626d6e4f6338dabfcc1e34127c898ed13c5a513b
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2020-06-26 14:41:41 +02:00
Tor Arne Vestbø
28f6892717 macOS: Check that platform window is valid after delivering close event
Fixes: QTBUG-78814
Pick-to: 5.15
Change-Id: I551024c5d777999f7c79d21fd7b7de061c18f971
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2020-06-26 14:41:41 +02:00
Thiago Macieira
e7d76d79e8 QThread: Fix unnecessary stricter accesses to QThreadData::thread
Commit ec6556a2b9 changed the member from
a plain pointer to a QAtomicPointer. Not all accesses were caught.

Pick-to: 5.15
Change-Id: I3d4f433ff6e94fd390a9fffd161b4ff25508c48d
Reviewed-by: David Faure <david.faure@kdab.com>
2020-06-25 18:03:34 -07:00
Jarek Kobus
48c8322a61 Use QList instead of QVector in dbus
Omitted type replacement in qDBusParametersForMethod() for now.

Task-number: QTBUG-84469
Change-Id: Ieb9fbb30b431c5e4183ad57acd35640e9556bf6c
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-06-25 22:31:13 +02:00
Jarek Kobus
0475460102 Use QList instead of QVector in corelib
Applied to headers only. Source file to be changed separately.
Omitted statemachine for now to avoid conflicts.
Omitted qmetatype.h for now - to be handled later.

Task-number: QTBUG-84469
Change-Id: I317376037a62467c313467d92955ad0b7473aa97
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
2020-06-25 22:30:59 +02:00
Jarek Kobus
e114e580e7 Use QList instead of QVector in other tools
Task-number: QTBUG-84469
Change-Id: I90d0e2e723bb4d205d7bf333b21cdf583fdf4ea0
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-06-25 22:30:54 +02:00
Jarek Kobus
5bb3d64682 Use QList instead of QVector in testlib
Task-number: QTBUG-84469
Change-Id: Icbc3c3130399296f6b5a7e9a313ad4737669de00
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-06-25 22:30:54 +02:00
Alexandru Croitor
d8f814cdb7 CMake: Add instructions for building and testing qemu configs
Before this change, tests were never built for cross-compiling
configurations.

Add instructions that build and run tests for qemu configurations.
This required a bit of abstraction / indirection to find out what's
the path to the correct qt-cmake call, as well as prepending the
correct env prefix to each call (either the host one or the target
one).

Also, the QEMU configuration requires a few environment variables
to pick up the correct runtime linker and which qpa plugin to use
for running tests.

Finally, make sure the tests are not built and run if the DisableTests
feature is set in the configuration.

Task-number: QTBUG-84423
Change-Id: I0cec28c801a657e67cfa48f3c61cfe487109946b
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-06-25 14:11:56 +02:00
Fabian Kosmale
844e4f7b98 moc: Fix QProperty code generation
This addresses two issues:
1. The generated code for QNotifiedProperty<T, ...> was broken when T is
   a pointer. Notably, const S* &  is not a constant reference to S*.
   This is addressed by consistently using T const& instead of const T&.
2. The Q_PRIVATE_QPROPERTY approach assumed that the property name and
   the getter are equal. This does break when they are not, and we are
   unable to change either of them due to API compatibility concerns. An
   example of this would be QQuickItem's parent property with a
   parentItem getter. Therefore, we now allow the usage of NAME to
   override the name of the property.

Change-Id: Idf2e85576c74371b5b0f6db15dbe6f2d17c5e33d
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-06-25 14:11:56 +02:00
Simon Hausmann
b20c7df63a Remove QPropertyMemberChangeHandler again
Adding support for a static notifier within QProperty itself - through a
QProperty "sister" class - is more efficient in terms of memory
consumption and run-time performance.

The MemberChangeHandler permanently takes up at least three pointers,
while the notified properties only cost one pointer in the binding.

Change-Id: Ia1a8c2b66f1f3c2fe13ae0ad9f12cdb6bdcc35ef
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-06-25 14:11:56 +02:00
Fabian Kosmale
e18a060c03 QNotifiedProperty: Add guard callback
A guard callback is a predicate which takes the new value set by
setValue or computed as the result of a binding expression. If it
returns false, the value is discarded and the old value is kept.
Note that due to lazyness, when setting a binding, we still notify
everyone as the binding is only evaluated on demand, and the guard can
thus only run when someone actually queries the value.
Note further that a guard is allowed to modify the value that is passed
to it (e.g. to clamp it to a certain range).

Task-number: QTBUG-85032
Change-Id: I3551e4357fe5780fb75da80bf8be208ec152dc2a
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-06-25 14:11:56 +02:00
Fabian Kosmale
6a24ac7c4e QNotifiedProperty: pass old value to callback if requested
Check at compile time whether the static callback takes an argument
(which has to be of the same time as the type of the property). If so,
retrieve the old value and pass it to the callback.

Change-Id: Ib1c4c9e05b826b6be492b03f66fa72ad015963ee
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-06-25 14:11:56 +02:00
Fabian Kosmale
c2fb27f054 Fix QProperty
This fixes two issues with QPropery:
1. QPropertyBindingPrivate::evaluateIfDirtyAndReturnTrueIfValueChanged
   calls a user provided evaluaton function. That one might actually
   destroy the binding and delete the QPropertyBindingPrivate instance.
   We need however to keep it alive until the function returns.
2. There was an infinite loop between QPropertyObserverPointer::notify
   and QPropertyBindingPrivate::markDirtyAndNotifyObservers. This can be
   observed when running tst_palette in qqc2. By returning early in
   markDirtyAndNotifyObservers if dirty is already set, the issue is
   avoided.

Change-Id: I1f0df05a5a9fa98554183263a25e16747c4d2274
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Simon Hausmann <hausmann@gmail.com>
2020-06-25 14:11:56 +02:00
Paul Wicking
41ceb88fe1 Doc: Change docs from internal to reimp
Pick-to: 5.15
Fixes: QTBUG-82357
Change-Id: I415ee03dd9d1ac02a435a24fb5ab94bf60c07331
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-06-25 11:00:47 +02:00