Commit Graph

47134 Commits

Author SHA1 Message Date
Joerg Bornemann
ca2f13bad6 CMake: Purge remains of the -cmake-makefiles configure argument
This amends 3ac054d6a8.

Change-Id: Ia6f1e4d967160628144478f9baecbcd3ae74dd32
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-08-18 20:24:44 +02:00
Alexandru Croitor
18cb90cd31 Android: Copy required gradle files in non-prefix shadow builds
This fixes running 'make apk' in a qmake android project,
when using a shadow non-prefix build.

An implementation detail is that COPIES can't take both files and
directories as values, so we split them into two steps.

Task-number: QTBUG-85399
Change-Id: I7373d6b7aede6e33096cb9718c679fa5e5dc1703
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-08-18 20:24:43 +02:00
Mason McParlane
57b928a1a5 Replace WIN32 with CMAKE_HOST_WIN32
The qt5_make_output_file routine joins paths together improperly on
Windows when cross-compiling to a Unix target (Android). This change
ensures the paths are set properly based on host machine instead
of target.

Fixes: QTBUG-86037
Pick-to: 5.15
Change-Id: I411b4f80296e989cd4fdf19799b731131defb2ca
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-08-18 18:24:43 +00:00
Andrei Golubev
4bf8e82d41 Add QArrayDataPointer::freeSpace*() functions
Added functions that tell how much free space is available at the
beginning and at the end of the storage

Updated preconditions of operations to use freeSpace* functions

Also, changed casts uint(this->size) to size_t(this->size)

Task-number: QTBUG-84320
Change-Id: Iad94c1060a00f62068da9d1327e332a00d4f4109
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
2020-08-18 12:55:38 +02:00
Andrei Golubev
0bd647fa4f Reorder operations to align with exception model in qarraydataops.h
Fixed order of certain operations to better handle situations when
exceptions occur

Change-Id: Ia2075c37b4b7653067dfa6a82252cbb12b96708f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-18 12:55:38 +02:00
Andrei Golubev
56f1208f9e Separate exception safety primitives from operations
Refactored certain bits of qarraydataops.h: picked exception-related
building blocks and put them into one place, (somewhat) documented
the usage, added tests

Personally, the existing code seemed rather complicated to analyze
(and do mental experiments for corner cases), especially when staring
at the whole thing for a while or "returning back" from some other work
and I still have my doubts that everything works correctly. Testing the
building blocks that are used should:
a) increase trust into existing code (provided the usage is correct)
b) give more use cases of how to use the building blocks, which in turn
   would allow to compare and contrast tests vs implementation

Task-number: QTBUG-84320
Change-Id: I313a1d1817577507fe07a5b9b7d2c90b0969b490
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-18 12:55:38 +02:00
Andrei Golubev
01a03a02f9 Refactor array data operations
Replaced copyAppend implementations with insert(this->end()) where
possible. This forced an update of the preconditions in insert

Unified moveAppend between generic and movable operations

Change-Id: I388c14436e32152ebb969bdd94753ed5452c1b7c
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-18 12:55:38 +02:00
Edward Welbourne
2584998c66 Follow through on ### Qt6 comments in qglobal.h
Left the translation NOOP for later, pending advice on how to fix
QIODevice, which doesn't compile without them.

Task-number: QTBUG-85700
Change-Id: Icc423ecabb43714d98b5d9b0f9a96c5bb6ef1d78
Reviewed-by: Martin Storsjö <martin@martin.st>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-08-18 12:55:38 +02:00
Andrei Golubev
5247af96e3 Refine precoditions and logic of array operations
Updated insert() methods:
* Refined Q_ASSERT() checks
* Fixed implementation issues (some of which resulted in
  actual crashes)
* Allowed to insert at the end. This is safe as far as I can
  tell and actually would allow to simplify considerable chunks
  of code (mainly, copyAppend versions to just return
  insert at the end)

Updated tests accordingly

Change-Id: I0ba33ae5034ce8d5ff95b753894e95d71ba00257
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-18 12:55:38 +02:00
Andrei Golubev
48911869cb Extend array operations tests with extra cases
Extended existing tests with QArrayData's allocation options

Added extra tests on array operations covering append, insert,
emplace, erase and truncate. "Raw" QArrayDataPointer is used instead of
test-specific SimpleVector to check the behavior without some custom
logic in-between

The change targets future updates to array operations in the light of
prepend optimization: as the array operations would become more complex,
these tests should give a much better coverage (specifically due to
likely non-trivial implementation details and optimizations)

Task-number: QTBUG-84320
Change-Id: I6581e2cb48f81b82ee5052d1dcea3da2819df47a
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
2020-08-18 12:55:38 +02:00
Joerg Bornemann
f4f4557835 Remove Qt 5.1 binary-compatibility warning
There's no way that Qt 6 will be binary-compatible with Qt 5.1.

Change-Id: Ic1abfbdc8dc497dcb24494a8f3e2d96bcf27ef83
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-08-18 12:55:38 +02:00
Joerg Bornemann
93c1307a66 CMake: Re-generate src/network/configure.cmake
Change-Id: I408ac23156505901194e9aa6f151bac889e432ff
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-08-18 12:55:38 +02:00
Martin Storsjö
f263385471 QCache: Fix the usage of std::is_nothrow_assignable_v
The std::is_nothrow_assignable_v template takes two template
parameters. Current clang nightly errors out on the previous code,
while earlier versions, and GCC, fail to diagnose the missing
template parameter.

Change-Id: I8ae7d5b9a9e89c5579e5526fb29d4da5cd1ab859
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-08-18 11:40:26 +03:00
Alexandru Croitor
f8af82e3b3 CMake: Fix usage of ccache when no executable was found
Change-Id: Ia9a44234cb074fa5ba2b1dc9ca22a676d1b2d4ce
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-08-18 10:40:26 +02:00
Paul Lemire
6a2c89c043 rhi: sanityCheckGraphicsPipeline handle no vertex attributes
It is a valid use case to have a vertex shader with no
vertex attributes. Using gl_VertexID or gl_InstanceID
is enough to generate vertex data out of thin air.

Change-Id: If7689914624a84723923fd2d7aef355bda592e24
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-08-18 07:58:50 +02:00
Sona Kurazyan
af5e8c2e97 Use qsizetype for size in QJsonArray and QJsonObject
Change-Id: I126b7e817f076486910777bb4e3354487ad670cd
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-08-18 04:06:04 +02:00
Tor Arne Vestbø
1fc7ca091b macOS: Remove support for surface-backed views
Our deployment target is 10.14, which enables layer-backing by default,
and our layer-backing support nowadays is stable enough that we don't
need to maintain any of the old code paths for compatibility.

The wantsBestResolutionOpenGLSurface property on NSView is only relevant
for surface-backed views, so we no longer need to deal with it.

Change-Id: I8aef4ac99371113d463ac35eee648a8a2fd1ea72
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2020-08-18 00:35:21 +02:00
Volker Hilsheimer
d1111632e2 Introduce QEvent::isInputEvent
This makes it easier to reliably maintain input-event related states
in widgets, in particluar the state of keyboard modifiers. Instead of
testing for all possible event types, code can just test the flag before
safely static_cast'ing to QInputEvent to access the modifiers.

Simplify the code in QAbstractItemView accordingly.

Task-number: QTBUG-73829
Change-Id: Idc7c08e2f3f1e8844f5c6693c195153038ee6490
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2020-08-17 21:54:34 +02:00
Laszlo Agocs
81159cf3f7 rhi: Enable msaatexture manual test on OpenGL
...now that a recent path enables MultisampleTextures for ES >= 3.1 and
GL 3.x and up.

Just need to make sure the .qsb contains something for OpenGL as well.

While we are at it, make updated .qsb files for all the commonly used
shaders since what we had before was version 4. Bump them to version 5.

Change-Id: If2040f4894e6360d1ebd5daf7e698508e5e6e42e
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2020-08-17 18:20:36 +02:00
Joerg Bornemann
80862621cd CMake: Link Boostrap against PlatformCommonInternal
...to pull in extra defines, includes, libdirs and framework paths.

Change-Id: I7c252f5edbcf15f7e2ad69ace4e15fbacf6cca8a
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-08-17 18:19:26 +02:00
Joerg Bornemann
d6e41abd62 CMake: Handle -D, -I, -F and -L configure arguments
Introduce new CMake variables and map
-D to QT_EXTRA_DEFINES,
-I to QT_EXTRA_INCLUDEPATHS,
-L to QT_EXTRA_LIBDIRS,
and -F to QT_EXTRA_FRAMEWORKPATHS.

Those variables only affect the Qt build, not user projects.

Fixes: QTBUG-85878
Change-Id: I229df2eed1505a2619068d0d32975962b052569a
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-08-17 18:19:24 +02:00
Alexandru Croitor
a930e657ed CMake: Fix what Android plugin suffix should be passed as a define
CMAKE_SYSTEM_PROCESSOR has the value i686 when targeting the x86
Android ABI, which is set by the Android CMake toolchain.
This is not the value that Qt expects, and potentially
breaks loading of Qt plugins. The same with aarch64 instead of
arm64-v8a.

In qmake the proper values for QT_ARCH variable are the equivalent of
the ANDROID_ABI variable set by the CMake toolchain file, so use
ANDROID_ABI.

Task-number: QTBUG-85399
Change-Id: Ia2eaceb75168cddb2d28414f1f4bf481ec76f29e
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-08-17 18:19:22 +02:00
Alexandru Croitor
96dd73c5fe CMake: Fix typo in README about how to build Android for arm64
Task-number: QTBUG-85399
Change-Id: I764f5d5155d6548ca61d3217fb5bb10f5b15908f
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-08-17 18:19:21 +02:00
Volker Hilsheimer
b39685d4c2 Make QCursor constructor explicit to prevent comparison of QPixmap
QPixmap doesn't implement operator==, but QCursor had a non-explicit
constructor from a QPixmap, which the compiler would use if two pixmaps
get compared.

Making that QCursor constructor explicit prevents that implicit
conversion, at the cost of potential (but trivially resolved) source
incompatibility.

Also, make QCursor's comparison operators into hidden friends to avoid
any other implicit conversions, and allow only QCursor object to be
compared.

In addition, delete operator== and operator!= in QPixmap so that the
compiler generates a useful error message, rather than a screen full
of global operator== candidates.

Delete these operators in QIcon as well for consistency.

Change-Id: I9b3f770da5718360ecc41c35cf327ef4f60d169b
Fixes: QTBUG-85993
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-08-17 15:08:39 +02:00
Volker Hilsheimer
90436e54cc Move QDesktopWidget API used by QApplication into QDesktopWidget
QDesktopWidget is not a public class anymore and only exists for
compatibility reasons. So we might just as well move the only method
used by other classes out of QDesktopWidgetPrivate, and get rid of the
friend declarations and the access-to-private code in QApplication.

Change-Id: I74ff14233e59912e0930f98995f8af60dbadfdb6
Task-number: QTBUG-62094
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-08-17 15:08:39 +02:00
Volker Hilsheimer
c54a5b8380 Introduce QWidget::setScreen
Follows the QWindow semantics, and is a replacement for creating
a QWidget with a QDesktopScreenWidget as the parent.

We can now remove much of the special handling of QDesktopWidget and
the Qt::Desktop window type, and get rid of QDesktopScreenWidget.

Add a manual test that allows local testing. Our CI environments
only have a single screen, and no multi-head display server setup
which is the primary case where QWidget::setScreen is interesting.
For the more common case of a virtual desktop, QWidget::setScreen
has no real impact (just as QWindow::setScreen doesn't).

Change-Id: Id0099e069d316741bacd8c795c396ccad37be297
Fixes: QTBUG-85483
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-08-17 15:08:39 +02:00
Volker Hilsheimer
c4366ff018 Remove call to static QGuiApplication::keyboardModifiers method
The event handler listens to the relevant input events already to
read the state of the modifiers. The implementation doesn't care about
touch, wheel, or tablet events either way.

The call was introduced in 28a21d98ef,
with no explanation why it would be necessary, and no test cases to
exercise that case.

Task-number: QTBUG-73829
Change-Id: Ibe408e86f697ac5acae5944b941f0d935ca2e408
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-08-17 15:08:39 +02:00
Mårten Nordheim
c2bc4467f7 QDecompressHelper: Fix warnings in zstd code
One warning about unused variable (dataLeftover), which was at some
point replaced by the class variable 'decoderHasData'.

The second warning was a fault of logic: checking that the unsigned
value retValue was greater than or equal to zero. Which only came about
because they initially did different things but the branches got merged
and the logic became flawed.

Change-Id: Ia3a04516c1b7b5f962226998bf3f4d101dd38148
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-08-17 12:22:55 +02:00
Kai Koehne
8c9482cd30 Add missing 'We mean it' header to qwindowsmime_p.h
Change-Id: Ia0085b75b9127d99b10518768cecbb79a4286c8e
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-08-17 12:21:37 +02:00
Jonas Karlsson
f095dc7af1 Remove 'less than' comparison method
Change-Id: Ief52da4f9176216ba45d4dc9df5bb341987cb585
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2020-08-17 10:05:01 +02:00
Lars Knoll
150a6c691f Fix a valgrind warning about accessing uninitialized memory
Amends change bbfecdee1e.

Change-Id: Iba4ad5101b46f07ce0b3e3397d723e1a681bcbc5
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-08-17 09:33:59 +02:00
Volker Hilsheimer
81896304dc Remove dead code in qrandom
After 9ee554ac1d, the various static
inline versions of randTLS are no longer used, which clang warns
about.

Change-Id: I6dc21c0aab35fb6a8ca9e8d43ee4960ee844ef47
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-17 07:27:50 +00:00
Andy Shaw
135b16900e macOS: Check if the base of the style as well if it is a QProxyStyle
Since a QProxyStyle could be easily used for just a style hint or
similar we should account for the baseStyle() too to see if it is
effectively a QMacStyle too.

Pick-to: 5.15
Change-Id: I5d1df31f594cac2a7f5f5d1384cb7c278633b29d
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-08-17 08:11:18 +02:00
Paul Lemire
77a985a876 rhi: QRhiGles2 use proper texture target for multisampled textures
Change-Id: I6e92a66f2758599626e7bdfbb2e149bb69192479
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-08-17 08:10:33 +02:00
Joerg Bornemann
f107713452 CMake: De-duplicate list input handling code in QtProcessConfigureArgs
Change-Id: I9fd77dd81f67fcc9a0306ab0d627257f209cdb08
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-08-17 08:08:26 +02:00
Joerg Bornemann
584d4be174 CMake: Re-implement configure/qmake's command line handling in CMake
We extend configurejson2cmake to read the "commandline"
information from configure.json. This data is then translated to CMake function
calls and written it into commandline.cmake files.

We extend QtProcessConfigureArgs.cmake to pick up those commandline.cmake
files to feed our command line handling code, which is a
re-implementation of the command line handling in qt_configure.prf.

The command line handler sets INPUT_xxx variables, similar to
configure/qmake's config.input.xxx variables. The INPUT_xxx values are
translated
- to -DFEATURE_xxx=ON/OFF arguments if the input represents a feature,
- to corresponding CMake variables if such a variable is known,
- or to -DINPUT_xxx=yyy CMake arguments.

Configure arguments that have an entry in
cmake/configure-cmake-mapping.md are actually implemented. Other
arguments are likely to need more work.

Task-number: QTBUG-85373
Change-Id: Ia96baa673fc1fb88e73ba05a1afb473aa074b37d
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-08-17 08:08:20 +02:00
Volker Hilsheimer
2f9a294252 Reset version of QStyleOption types to 1 for Qt 6
Amends 7ff26c7762 and
729f1ab9a0.

Change-Id: I7d3cea42318faffc9dee48d51ae9f890bb1e7a56
Fixes: QTBUG-84221
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
2020-08-16 15:03:53 +02:00
Volker Hilsheimer
e1536e3a86 Purge versioned style options from UIC
For Qt 6.0, all versioned style option types have been merged into the base
class, and version number has been reset to 1.

Task-number: QTBUG-84221
Change-Id: If729720813c0cf284271a9084311ed6eb820ecca
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
2020-08-16 15:03:46 +02:00
Lars Knoll
5076ce54be Fix compiler warning about implict cast to double
Change-Id: I80497efedebed9579882d31d3eda13bd88c80c94
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2020-08-16 14:54:17 +02:00
Lars Knoll
9fb2db1ccc Fix test with cmake build
Change-Id: I9153296dbd687abb65464638fd519d466f600e84
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2020-08-16 11:53:29 +02:00
Lars Knoll
f741a12de1 Disentangle QIODevice dependencies
Move the QIODevice::OpenMode enum into a base class, so that
we can remove the full QIODevice (and thus QObject) dependency
from qdatastream.h and qtextstream.h.

This is required so that we can include QDataStream in qmetatype.h
without getting circular dependencies.

As a nice side effect, QDataStream and QTextStream can now inherit
QIODeviceBase and provide the OpenMode enum directly in their
class scope.

Change-Id: Ifa68b7b1d8d95687ed032f6c9206f92e63bfacdf
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2020-08-15 20:55:31 +02:00
Lars Knoll
5e3b7effbd Add overload for char to QDataStream
This is a distinct types in C++, and should be supported out of the
box in QDataStream. This is also required so we do find a data stream
operator for the types when searching for it using template magic.

Change-Id: Iea57780621e2aab7ed253f1cc896bebada43b9f0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-15 14:43:56 +02:00
Lars Knoll
4376c4d9d8 Some work to handle enums that are larger than 32bit
This will require some more work in QFlags and the metaobject
system for Q_ENUM.

Change-Id: I3687c7d2529dc18e7bc1abfc326e56ff7a365bc5
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-15 14:43:50 +02:00
Lars Knoll
0e6a327f14 Remove friend declarations that aren't required
Those are problematic as they are also interpreted as
forward declarations of methods that are defined inline in
qdatastream.h and might never get instantiated. This can
lead to problems if template code checks for the existence
of the method.

Change-Id: I4550a6bc70ebd7edc57fe0420b89b453195971d0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-08-15 14:43:43 +02:00
Lars Knoll
df289c822d Small cleanup
Change-Id: I3badb73bee8cb88992254c6f11ae292e21d4a6d7
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-08-15 14:43:36 +02:00
Lars Knoll
3ef8ec2ee1 Constrain the data stream operators for containers
Check that we can successfully instantiate the data
stream operator for a container before we actually try.

This is required so we can automate registration of debug
stream operators with QMetaType.

Change-Id: Ib100a5242470d7fc8067058cc4d81af2fa9354b0
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-08-15 14:43:30 +02:00
Lars Knoll
8ad9e81694 Constrain the debug stream operators for containers
Check that we can successfully instantiate the debug
stream operator for a container before we actually try.

This is required so we can automate registration of debug
stream operators with QMetaType.

Change-Id: I3943e7a443751d250c33b2ca1b9cf29207cfe6c4
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-08-15 14:43:23 +02:00
Lars Knoll
6c36fd8af7 Make QVariant(Type) and QVariant(QDataStream) explicit
We should probably deprecate both constructors in addition.

Change-Id: Id62448b2abe14248c134feae899fa053ef373e58
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-08-15 10:56:41 +02:00
Lars Knoll
67f04fa060 Deprecate QVariant::Type uses in QSqlField
Add metaType()/setMetaType() methods to be used instead
of the type() methods taking a QVariant::Type.

Change-Id: Ieaba35b73f8061cd83288dd6b50d58322db3c7ed
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2020-08-15 10:56:33 +02:00
Lars Knoll
8929c0a355 Remove QVariant(int type, void *data, ...) constructor
It was marked internal anyway. Use the constructor taking a
QMetaType instead.

Change-Id: I15b9cd0911aac063a0f0fe0352fa2c84b7f7c691
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-08-15 10:56:29 +02:00