Commit Graph

33222 Commits (1a342b2db14fa92bca717f5daff950b2eef869f7)

Author SHA1 Message Date
Timur Pocheptsov da1d6bccd2 Fix the name in invokeMethod
Task-number: QTBUG-82605
Change-Id: If21d9c25d607e8a363fe703b4ffa1e2d207eef39
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-23 12:58:06 +01:00
Ulf Hermann 94c564a082 Fusion Style: Use qobject_cast rather than dynamic_cast
We want to avoid RTTI.

Fixes: QTBUG-82287
Change-Id: Ib034094d4035d6dfa99d00ac198c93cc9572755b
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-03-23 12:00:46 +01:00
Jean-Michaël Celerier b4b8ffb233 rhi: gles2: fix uniform gathering after struct-type member in UBOs
Given:

    struct Light { vec4 foo; };
    layout(std140, binding = 2) uniform material {
      Light light;
      int lightCount;
    };

the previous code would keep "light" appended for the prefix and look for
`light.lightCount`.

Change-Id: Ia8deacd0cb4833f45151e922fa7b5970169332eb
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-03-23 10:59:30 +01:00
Alexandru Croitor 16df037f9d CMake: Fix metatype file generation not to happen in the source dir
When building qtdeclarative in a non-prefix configuration,
metatypes.json files were created in the source dir. This happened
because the default arg_INSTALL_DIR value is relative in
qt6_generate_meta_types_json_file, and thus a file(TOUCH) with a
relative path creats it in the source dir.

The fix is to check if it's relative during a non-prefix build,
and make it absolute (relative to the install prefix, which is the
qtbase build dir).

Change-Id: Ie9abbd5d93a64e79184d77655d8d8399e894fde5
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Leander Beernaert <leander.beernaert@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-23 09:54:52 +01:00
Joni Poikelin cb509f3aee Doc: fix copy paste errors in border-*-style documentation
Change-Id: I442513ec87e25610898c2102170a5f2bfec5ee77
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2020-03-21 11:36:04 +02:00
Christian Ehrlicher 1e03015d55 QTableView: Make sure to repaint all needed cells during resizing
Don't try to update the scrollarea geometry while resizing a row or
column since this may lead in flickering and artifacts, esp when the
scroll mode is scrollPerItems. Instead do the calculation only when the
resize is finished.

Fixes: QTBUG-72870
Fixes: QTBUG-82595
Change-Id: Id6903c00485b3be6ed54bd5f9bcafdda6da21598
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2020-03-21 07:05:27 +01:00
Thiago Macieira d55dad94f9 64-bit atomics: fix bad copy/paste in macro definitions
Fixes: QTBUG-82864
Change-Id: I35d5bcc92b2e4bddaacbfffd15fc42d054fcb2b1
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2020-03-20 17:12:58 -05:00
Christian Ehrlicher bd75c87e0e Doc: replace deprecated references to QGLWidget
Remove references to the deprecated QGLWidget and replace it with
QOpenGLWidget.

Change-Id: Ia31df42ab61c25e9ce46f4491267d2c64910f55c
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-03-20 22:27:29 +01:00
Volker Hilsheimer 580e9eedf7 QDateTimeEdit: with keyboardTracking off, allow values outside the range
QDateTimeEdit very aggressively prevents user input that would result in
values that are outside the dateTimeRange. While keyboardTracking is on
this makes sense, as otherwise the dateTimeChanged signal would be
emitted after each section, with a value that is outside the range.

However, this prevented users from entering a date that is allowed, but
where sections of the date are above or below the respective section in
the maximum or minimum value.

If keyboardTracking is off, QDateTimeEdit only emits the dateTimeChanged
signal at the end of editing, when focus is lost or the return key is
pressed, and then it enforces that the value is within the range anyway.
This change makes the parser ignore the range during editing if
keyboardTracking is off, thus allowing the user to enter a date where
temporary values are outside the range.

The test makes sure that we don't get signals emitted with out-of-range
values, testing both with and without keyboard tracking.

Change-Id: I00fb9f1b328a3477163f890c4618b40878657816
Fixes: QTBUG-65
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-20 22:18:00 +01:00
Thiago Macieira 30a0787907 Fix binary compatibility issue in QJson{Array,Object} initializer_list
The rewrite using CBOR internals replaced one of the two naked pointers
that were members of QJsonArray and QJsonObject with a
QExplicitlySharedDataPointer. The problem is that its operator= will
read the current value to decrement the refcount and possibly delete the
pointed object.

But QJson{Array,Object}::initialize() are called from inlined code,
without initialization. So we can't call operator=. We need to memcpy to
write a nullptr.

This is not unit-testable because it requires compiling against 5.14 or
earlier, then running against 5.15.

Fixes: QTBUG-82700
Change-Id: Iaa63461109844e978376fffd15f98c62656d197c
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-03-20 13:18:00 -08:00
Thiago Macieira c798b286bd Doc: update QJsonObject::operator[] non-const to say it creates key
the non-const QJsonArray::operator[] requires a valid index and all the
const operator[] say that it returns Undefined if the key or index
doesn't exist. This is the exception.

Task-number: QTBUG-39864
Change-Id: Iaa63461109844e978376fffd15f9716f0cc66cca
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-20 21:18:00 +00:00
Giuseppe D'Angelo d41d8297c8 OpenSSL: bump the minimum supported version to 1.1.1
We don't support 1.0 any more, and 1.1.0 has reached EOL.
Bump to 1.1.1 so we can freely use its APIs.

[ChangeLog][QtNetwork][SSL] The minimum required version
of OpenSSL is now 1.1.1.

Change-Id: I5cfb6672fadfa48aedaefbcd6a954aa9eb85bfa5
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-20 18:23:55 +01:00
Robin Burchell 2af04860f6 qtimezoneprivate_tz: Apply a cache over the top of timezone data
Constantly re-reading the timezone information only to be told the exact
same thing is wildly expensive, which can hurt in operations that cause
a lot of QTimeZone creation, for example, V4's DateObject - which
creates them a lot (in DaylightSavingTA).

This performance problem was identified when I noticed that a
QDateTime binding updated once per frame was causing >100% CPU usage
(on a desktop!) thanks to a QtQuickControls 1 Calendar (which has a
number of bindings to the date's properties like getMonth() and so
on).

The newly added tst_QTimeZone::systemTimeZone benchmark gets a ~90%
decrease in instruction count:

--- before
+++ after
 PASS   : tst_QTimeZone::systemTimeZone()
 RESULT : tst_QTimeZone::systemTimeZone():
-     0.024 msecs per iteration (total: 51, iterations: 2048)
+     0.0036 msecs per iteration (total: 59, iterations: 16384)

Also impacted (over in QDateTime) is
tst_QDateTime::setMSecsSinceEpochTz(). The results here are - on the
surface - less impressive (~0.17% drop), however, it isn't even
creating QTimeZone on a hot path to begin with, so a large drop would
have been a surprise.

Added several further benchmarks to cover non-system zones and
traverse transitions.

Done-With: Edward Welbourne <edward.welbourne@qt.io>
Task-number: QTBUG-75585
Change-Id: I044a84fc2d3a2dc965f63cd3a3299fc509750bf7
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2020-03-20 16:58:09 +02:00
Mauro Persano d535dfea1f Doc: replace QFileInfo::created with birthTime
Change-Id: Ia497febcbf28e4b3babe50fc6f05e12f3d686b91
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-03-20 09:20:54 -03:00
Mitch Curtis 69a5be7ef0 Merge remote-tracking branch 'origin/5.14' into 5.15
Change-Id: Ib2a2e3a292af43be3a980c2ccc943c08f4bbf72f
2020-03-20 11:28:14 +01:00
Mitch Curtis b888cc6fbc Fix warning in qsql_odbc.cpp when building with MSVC2017
qsql_odbc.cpp(1589): warning C4267: 'argument': conversion from 'size_t'
to 'int', possible loss of data

Change-Id: Ib36fda3e3b21bdbc8b343ae5136542dfcf3c1065
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-03-20 11:14:40 +01:00
Allan Sandfeld Jensen aa5855847c Add SSE2 optimized solid source composition
Very similar to source-over, but have traditionally been inlined.

Change-Id: I211f0b1c91c1a00c4769fbbfe2e3d0c7b22d7048
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2020-03-20 09:56:15 +01:00
Laszlo Agocs 6c5b42b678 rhi: gl: Reduce state changes
...between setGraphicsPipeline() calls with different
QRhiGraphicsPipeline instances within the same pass.

Also adds similar logic for the GL_ARRAY_BUFFER (vertex buffers)
as that is a hotspot as well.

This is not intended to be a 100% avoiding any redundant call solution,
but rather to take care of the most common hotspots, so that bad OpenGL
implementations with a larger API call overhead will not cause us to
regress compared to the direct OpenGL rendering path in Quick and
Quick3D.

What we have here reduces the number of GL calls in the view3d example
by ~200 within one frame, which is a pretty good start.

Task-number: QTBUG-78603
Change-Id: I6aeab9c1c43b148ea6ef05d0284990a996c7ba28
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2020-03-20 09:43:04 +01:00
Volker Hilsheimer e7cff5bca7 Fix keypad navigation within a button group for push buttons
Keypad navigation within a group should work for auto-exclusive buttons,
or for checkable buttons that are in a button group. Since the code
already tests whether the button should be treated like an exclusive
(which implies checkable) button, use the result of that test when
finding the candidate button to move focus to, and not only when
actually changing the checked button and the focus.

Change-Id: I4dc41a90d51a8304483046252ceff0ebfe2a2e52
Fixes: QTBUG-27151
Done-with: david.faure@kdab.com
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-03-20 08:20:00 +01:00
Nico Vertriest 0359a82e6e Doc: make Qt Sql snippets compilable
Task-number: QTBUG-81496
Change-Id: Id6206e9179c2e8157c99e777a3de35bd83d49e34
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-03-20 06:53:59 +01:00
Simon Hausmann cef009b1e4 Change QTaggedPointer API to be more similar to other smart pointers in Qt
* Rename pointer() to data()

Change-Id: I8ef3e552d45c9990fee4b7efa98e2d878ed2cf98
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-03-19 19:01:31 +01:00
Mitch Curtis fcbbe7ff21 Merge "Merge remote-tracking branch 'origin/5.14.2' into 5.14" 2020-03-19 16:14:25 +01:00
Mitch Curtis 1480922511 Merge remote-tracking branch 'origin/5.14.2' into 5.14
Change-Id: I34ca28c75b88e882c3f35f182bf01acb22b77637
2020-03-19 16:10:31 +01:00
Tor Arne Vestbø 45fe7adcb8 widgets: Clarify backingstore resize logic by removing cruft
Change-Id: I0a449068a0d4557b7bd6581ddf71c590b72d76a1
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2020-03-19 15:14:29 +01:00
Tor Arne Vestbø 5f3c071ee3 widgets: Remove unused member QTLWExtra::inTopLevelResize
It was introduced in Qt 4.4 (e150f6a6e619) to work around slow resizes
on Windows and X11 due to excessive painting, but has since been removed
when old dead code never ported to QPA was removed in a2337f79ff.

Change-Id: Ic14e714a02edb4194a445a6bb0759b601799fdc6
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2020-03-19 15:14:29 +01:00
Allan Sandfeld Jensen cfbe481838 QDrawHelper cleanups
We don't need to handle solid SourceOver logic directly, this was
already handled by getOperator and changed composition to Source.

Also removes some dead code and changes an assert in unreachable
code to Q_UNREACHABLE.

Change-Id: I66a6c1248bd34e31096023f1acb20385099932c9
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2020-03-19 15:14:29 +01:00
Timur Pocheptsov ad68ecf1d9 q_getTimeFromASN1: fix invalid access
No sanitizer is needed, just looking at the code is enough.
It was wrong.

Change-Id: I9df417c137d6b3361c3161865e099a8be40860de
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-19 14:48:08 +01:00
Mitch Curtis f5fd9c40cd Fix warnings when building with MSVC2017
qstring.cpp(10210): warning C4267: 'argument': conversion from 'size_t'
to 'uint', possible loss of data

qcontiguouscache.h(141): warning C4003: not enough arguments for
function-like macro invocation 'max'

Change-Id: I01f1fc1c85341ea61c86dcffb1b01fe4cde50eea
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-03-19 14:13:02 +01:00
Simon Hausmann 044f730214 Add documentation for QTaggedPointer
The class remains \internal though, as it has a very narrow use-case for
low-level code inside Qt.

Change-Id: I9d2b6486ce29b290af7f930a0bfc78590a83cc01
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-03-19 13:09:25 +01:00
Simon Hausmann 4a702e580e Use QTaggedPointer in QPropertyObserver
This replaces the private tagged pointer and the use of enums for the
tag makes the observer handling code more readable. The
pointer-to-tagged-pointer class remains in qpropertyprivate.h due to its
exoticness.

Change-Id: Icc88799136c6839426d994b42368526463265e66
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-03-19 13:09:13 +01:00
Simon Hausmann 58992993a3 Add support for explicitly marking a property as dirty
When a binding is backed by old-style property captures, then having
this API is needed for Qml.

Change-Id: Icf51efe057eaf845969ed2cda52d082dedde677e
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-03-19 13:09:03 +01:00
Simon Hausmann 1fcce51053 Enable generic property bindings to QProperty<T>
A generic binding allows implementing the binding function in a way that
enables the QML engine to run binding scripts and convert the V4::Value
into a QVariant and then assign the value to the property with the help
of QMetaType::construct.

Change-Id: Id4807be92eee7e3501908e6c5e4c861cfcb7772a
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-03-19 13:08:56 +01:00
Eskil Abrahamsen Blomfeldt 1a18e138f4 Android: Fix deployment on Windows host
The paths in the build properties require forward slashes
apparently. On Windows, we would default to native backslashes
and they would be stripped from the path. Converting to forward
slashes fixes the problem.

Issue was introduced by dd04fb639b,
since before that, the NDK path was retrieved from the environment.

Fixes: QTBUG-82944
Change-Id: I6c51113efcf671461a5871991b3225a52b95266c
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2020-03-19 10:23:07 +01:00
Lars Knoll 5eb492fb95 Move the default arguments of fromPath away from the deprecated overload
Move the default arguments to the overload that is not deprecated. This
is fully source and binary compatible.

Change-Id: I0d2eb491faf8c2164b80c33c4c4f749173b690f5
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-19 09:27:18 +01:00
Leander Beernaert dfd37e27ca CMake: Enable testlib selftests
This patch adds the equivalent of testlib's selfcover.pri and is enabled
for both testlib and the respective selftests test.

This patch also fixes the selftests so that they can run without
FEATURE_testlib_selfcover enabled.

Change-Id: I15913de2d572ac79804ce3e652cee66de74318f8
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-03-18 16:28:30 +01:00
Alexandru Croitor 64bda9d915 CMake: Regenerate projects after harfbuzz-ng macOS adjustment
Amends 21c242f9fd

Change-Id: I1041d27d2ab764950b574ff729d987b5efe5f2fe
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2020-03-18 16:22:09 +01:00
Lars Knoll 272ddbee70 Remove garbage
Change-Id: Ie0b891b9e9c6d12d8684c85a7717d0828fcf1c0c
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-18 15:44:02 +01:00
Qt Forward Merge Bot 08b9539b7a Merge "Merge remote-tracking branch 'origin/5.15' into dev" 2020-03-18 15:43:52 +01:00
Simon Hausmann d4f0445331 Add support for exposing public QProperty members in the meta-object system
At the moment this makes the type as well as the setter/getter available
through the meta-call as well as the ability to register observers and
bindings. Only QProperty members that are annotated with
Q_PROPERTY(type name) are made public through the meta-object.

Change-Id: I16b98fd318122c722b85ce61e39975284e0c2404
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-03-18 15:42:58 +01:00
Giulio Camuffo b5f6a85d27 Add a way to filter only rows or columns in QSortFilterProxyModel
If we want to filter away a column without changing the filtering
for the rows calling invalidateFilter() is wasteful because it will
call filterAcceptsRow() for all rows even though that is not needed.
This commit add two functions, invalidateRowsFilter() and
invalidateColumnsFilter() that work the same way as invalidateFilter()
except that they will invoke respectively only filterAcceptsRow() and
filterAcceptsColumn().

Change-Id: Ib4351cf08c229bd97bbbfee6da92397dca579a84
Reviewed-by: David Faure <david.faure@kdab.com>
2020-03-18 15:42:58 +01:00
Qt Forward Merge Bot 18b69ae8a4 Merge remote-tracking branch 'origin/5.15' into dev
Change-Id: Ia79c2457f20f3428ef1b4358c1094e8dc1bbc33e
2020-03-18 11:45:08 +01:00
Qt Forward Merge Bot 2329580411 Merge "Merge remote-tracking branch 'origin/5.14' into 5.15" 2020-03-18 11:45:01 +01:00
Qt Forward Merge Bot 22daba4ff9 Merge remote-tracking branch 'origin/5.14' into 5.15
Change-Id: Iaab37b633a8286c2c21425aaac34d30529a3ea82
2020-03-18 11:44:49 +01:00
Fabian Kosmale 6db55e3451 QSequentialIterable: Treat sets as appendable
QSet and std::(unordered_)set were so far not treated as appendable, as
they lack a push_back method. We do however need support for this in
declarative to enable converting back from QJSValue arrays to sets.
We achieve this by testing for and using the insert method. While vector
has also such a method, it doesn't take a single value, but rather a
position or iterator + value, so the template specialization is not
ambiguous.

Task-number: QTBUG-82743
Change-Id: I74fc7b1b856d9bcd38100b274ba2b69578ea8bbb
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-03-18 09:54:19 +01:00
Lars Knoll 963c47aece Don't limit AAT support to Darwin based platforms
Harfbuzz supports this in a cross platform way, so there's no
reason not to accept a font with AAT tables on other platforms.

Change-Id: I00c38a11dfd4a32e846254c1da9e8841090f5fd9
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2020-03-18 00:39:08 +01:00
Eskil Abrahamsen Blomfeldt 21c242f9fd macOS: Disable CoreText shaper in Harfbuzz-NG
On macOS, we have been using a different code path internally in
Harfbuzz-NG for shaping, since most fonts on the platform are based
on AAT rather than OpenType, and this was not supported by the
OT shaper in Harfbuzz before HB 2.0.0.

However, AAT support has been added to the main shaper code now,
and is in a shape where it is used in both Chrome and Firefox,

Since we have upgraded the Harfbuzz in Qt as well as updated the
minimum required version for system-harfbuzz, we can also use this
code path and avoid another source of platform-specific issues.

Change-Id: I5cf4626d986998a0a4614c751183bcac6f4e588d
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-17 19:46:26 +01:00
Volker Hilsheimer 943cb0999d Header-review: add Q_DECL_DEPRECATED_X macro to deprecated method
Change-Id: I486d479b2e07042b397869aab117f44e65539f1e
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-17 18:20:04 +01:00
Simon Hausmann 733ae8a04b Make it possible to use QTaggedPointer within classes
A common pattern in declarative is to use the unused bits in linked list
next pointers for additional information storage. The "next" pointer is
typically then a tagged pointer of the containing class, which is not
fully defined yet. Therefore alignof() can't be used at tagged pointer
instantiation time. This patch delays the calls to alignment, etc. until
the corresponding functions are used, as in principle the tagged pointer
is just a quintptr and no additional information should be needed until
operating on it.

Change-Id: I87a3578ee921d471e1b60ed5903b549ef0610b97
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-03-17 17:55:27 +01:00
Simon Hausmann 8337684b04 Fix docs suggesting that it's possible to draw to the X11 screen
It's not possible anymore, since many years. The desktop's don't use the
X11 root window anymore :)

Fixes: QTBUG-82880
Change-Id: I923f29f23e61d93640cacb2ac20620c5ddc480b9
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-03-17 17:19:44 +01:00
Edward Welbourne 0677525f2e Update Unicode license for CLDR and UCD
Task-number: QTBUG-82747
Change-Id: I6bbecaf3f0a8f8e7e0ad31074d88dea7ec98dff2
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-03-17 16:17:49 +01:00
Allan Sandfeld Jensen b430826501 Fix memory leak on new QThreadPool::tryStart version
Also documents the ownership of the traditional tryStart better, and
remove a redundant check.

Change-Id: I06202465b782926724fa33a901d08c1626f87373
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
2020-03-17 16:13:48 +01:00
Volker Hilsheimer 1b4d01d163 Add 'since' tag to documentation of new enum value
Change-Id: I400dc1f2d3dba0fa50b2bcb5e4efbcfc0ad912fd
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-03-17 15:37:44 +01:00
Friedemann Kleint 749e37efc5 Property binding system: Fix developer build with MSVC 2019 (16.4.1)
- Fix wrong forward declaration
- De-inline constructor of QUntypedPropertyBinding(), fixing:

qtbase\include/src/corelib/tools/qshareddata.h(184): error C2027: use of undefined type 'QPropertyBindingPrivate'
qtbase\include/src/corelib/kernel/qpropertyprivate.h(60): note: see declaration of 'QPropertyBindingPrivate'
qtbase\include/src/corelib/tools/qshareddata.h(184): note: while compiling class template member function 'QExplicitlySharedDataPointer<QPropertyBindingPrivate>::~QExplicitlySharedDataPointer(void)'
qtbase\src\corelib\kernel\qproperty.h(143): note: see reference to function template instantiation 'QExplicitlySharedDataPointer<QPropertyBindingPrivate>::~QExplicitlySharedDataPointer(void)' being compiled
qtbase\src\corelib\kernel\qproperty.h(142): note: see reference to class template instantiation 'QExplicitlySharedDataPointer<QPropertyBindingPrivate>' being compiled
qtbase\include\/src/corelib/tools/qshareddata.h(184): warning C4150: deletion of pointer to incomplete type 'QPropertyBindingPrivate'; no destructor called
qtbase\include\/src/corelib/kernel/qpropertyprivate.h(60): note: see declaration of 'QPropertyBindingPrivate'

Amends 9f9049b486.

Change-Id: Idd613e2487d5ab7f8ead74747acd976d5d210c28
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2020-03-17 12:59:31 +01:00
Mitch Curtis 0dcdfc1ee4 src\angle\src\config.pri: remove references to gnuwin32
gnuwin32 repository was removed from Qt 6 in f96355679.
If we don't do this, it could look for the wrong version of flex.

Done-with: Andy Shaw <andy.shaw@qt.io>
Change-Id: I15cd68ceb17c33dfc6316a469bca706100bfce60
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Liang Qi <liang.qi@qt.io>
2020-03-17 11:05:16 +01:00
Tor Arne Vestbø 165de10027 Introduce helper class QTaggedPointer
Useful for attaching small bits of information in the alignment bits of
a naked pointer. For use in the new property system as well as in
qtdeclarative (where currently a similar class exists as private API).

Change-Id: Idf9b93e714e15129f302e16425dbeda94bcd207b
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2020-03-17 10:01:04 +01:00
Fabian Kosmale 7ef3826497 Introduce always constexpr variants of qNextPowerOfTwo
Amends e464e1eb8e. qNextPowerOfTwo has the
same issue as qCountTrailingZeroBits.

Change-Id: Ib1905986e932ac130bce7a1d98f4f7b5ef73991f
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-17 10:01:03 +01:00
Alexandru Croitor beebd7f4b1 CMake: Regenerate projects and adjust after old harfbuzz removal
Change-Id: I3a00334f2b29caa739d6a1d8edd4c7311dda812f
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-17 09:17:57 +01:00
Eskil Abrahamsen Blomfeldt cfcf88e259 Fix compilation with -no-feature-regularexpression
This -no-feature has probably not been tested for a while
and seems to have rotted a bit, both some unprotected
uses and some warnings on unused parameters.

Change-Id: Ie20a06c78d3b4c36860dab49d6615eaa8ffc9077
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-17 09:17:08 +01:00
Lars Knoll dee55af0a5 Remove QRegExpValidator
As QRegExp will be moved to a compat library in Qt 6.

Change-Id: I181aec45bd798f49d2c50a0e7fb64782e004b854
Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
2020-03-17 08:35:50 +01:00
Lars Knoll befd198c15 Remove QRegExp usage from the the OCI plugin
Change-Id: I95009b5bc6f9ce4356e707e07c5cb7346aaf9245
Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2020-03-17 08:35:35 +01:00
Lars Knoll b798b2cbb4 Remove QRegExp usage from Qt PrintSupport
Change-Id: I32daae8e5028084dd12f0aba4da7920f995d919f
Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
2020-03-17 08:35:31 +01:00
Volker Krause c53cccc171 Fix JNI signature for the timezone getDisplayName call
Due to the changes in 5.14.1 this code now actually seems to be hit here,
throwing NoSuchMethodError exceptions all over the place and breaking
date/time handling quite spectacularly.

Change-Id: I9bee3de39ec98f86d7944b94e89119505f62dc6c
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2020-03-17 08:30:32 +01:00
Volker Hilsheimer ffbf5ae11d Fix potential out-of-bounds or nullptr access
This ammends change baed8534bc, which
might have introduced a hard to reproduce segmentation fault when the
screen number is out of bounds, or when the QScreen object doesn't
return a valid pointer for QScreen::handle.

As the issue doesn't reliably reproduce, this is a speculative fix that
adds bounds and nullptr checking.

Change-Id: I0cec0a344e80159ee1723d840f207267a608cef4
Fixes: QTBUG-82807
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-03-17 06:15:55 +01:00
Lars Knoll 3a5342163a Bump the minimum requirement for harfbuzz to version 2.6.0
That will give better text rendering capabilities in Qt and allow
us to clean up some more code.

Change-Id: Ia11b7ab57cda8320047381224989766b854e8ca5
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2020-03-17 01:44:35 +01:00
Lars Knoll 47b1e883e4 Remove the old harfbuzz library and integration code
It's not used anymore. harfbuzz-ng is a requirement in Qt 6 if you
want any open type shaping.

Fixes: QTBUG-82881
Change-Id: If7100aebdcfa078a999608bb8f07a2ef3a79d282
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2020-03-17 01:43:29 +01:00
Lars Knoll 8863bfa603 Remove old harfbuzz support from QFontEngine
Change-Id: I1595ce32d2b88b98157bcf8020ac22db93d7ea64
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2020-03-17 01:43:11 +01:00
Lars Knoll f081348472 Remove old harfbuzz dependency from QTextEngine
We're either using harfbuzz-ng or disable shaping now.

Change-Id: Ia80bc4671efb20eabb35d7560abc774cdad7f424
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2020-03-17 01:43:04 +01:00
Lars Knoll dd7d8304bb Remove harfbuzz dependency from qunicodetools
Copy the relevant harfbuzz code over from Harfbuzz into qunicodetools.cpp

This is basically the attribute functions from the different harfbuzz
shapers. Those methods do not require any font support but operate
purely on unicode input data.

Adjusted the code to use Qt's own data structures and enums (QChar::Script
and friends) instead of the harfbuzz equivalents.

The code is 100% copyright The Qt Company, so we can do this without
requiring any attribution.

Change-Id: I8262ba34eae1837f031f07d1b6d9917c0224e160
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2020-03-17 01:42:58 +01:00
Lars Knoll 76ced3f179 Change signature of initScripts to take out pointer to a QVLA<ScriptItem>
This avoids one additional copy of data that we've been doing before.

Change-Id: I3fae0ebe0cded632b41fdcf7efc01d5c7f2dc181
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2020-03-17 01:42:52 +01:00
Lars Knoll 5af2016b7c Remove QRegExp usage
It's deprecated in Qt 6.

Change-Id: I9ea27ed31a8df39670c0a50c9cb182c7f950ad96
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2020-03-16 22:04:33 +01:00
Lars Knoll 45e6835727 Remove unused include
Change-Id: I98f018c63295e09c5e374741583d191eca97de3b
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2020-03-16 22:04:00 +01:00
Lars Knoll 9981330157 Get rid of QRegExp from the xpm image handler
Change-Id: Ic6bc89c7ffbf1c2f615e9b89aff7c64201ac2837
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2020-03-16 22:03:55 +01:00
Simon Hausmann bc64ccbf00 Re-generate various CMake projects and configure after merge
Change-Id: I02f5926c6664aab518c5c81e0c33dca0818a1871
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-03-16 20:43:56 +01:00
Simon Hausmann c2f167b412 Merge "Merge remote-tracking branch 'origin/5.15' into dev" 2020-03-16 20:43:50 +01:00
Simon Hausmann ff922e7b87 Merge remote-tracking branch 'origin/5.15' into dev
Conflicts:
	src/corelib/kernel/qmetatype.cpp

Change-Id: I88eb0d3e9c9a38abf7241a51e370c655ae74e38a
2020-03-16 18:41:27 +01:00
Simon Hausmann 9f9049b486 Initial import of the Qt C++ property binding system
This implements the core value based property binding system with
automatic dependency tracking. More features are to be added later, and
the documentation will need further improvements as well.

Change-Id: I77ec9163ba4dace6c4451f5933962ebe1b3b4b14
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-03-16 18:19:45 +01:00
Alexandru Croitor 3c7c60e322 cmake: Regenerate projects
Change-Id: I0cd4f34b0df0227789805f30f474ff6aa275078f
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-03-16 17:58:00 +01:00
Tor Arne Vestbø 77885f8402 cmake: Remove APPLE prefix from platform names
None of the other platforms have it.

Change-Id: Ib448c2c03ba03f711b507ef391977c0e6aa7c192
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-03-16 17:57:56 +01:00
Tor Arne Vestbø db745fdd2d cmake: Fix naming when referring to Apple macOS
Change-Id: Iafb5e448d0d65d42f788464fc600594a5666f9af
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-03-16 17:57:52 +01:00
David Faure 97422abcfc QTreeView: don't call model.index(-1, 0) when using spanning items
drawTree() does
    QPoint hoverPos = d->viewport->mapFromGlobal(QCursor::pos());
    d->hoverBranch = d->itemDecorationAt(hoverPos);
and itemDecorationAt does
    const QModelIndex index = q->indexAt(pos);
which might very well be an invalid index.

Change-Id: I7db98871543bd7e1c57fcc475d2646757bf2bb42
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
2020-03-16 10:44:26 +01:00
Edward Welbourne 75f52bd0dd Update the latest public suffix list
Task-number: QTBUG-72623
Change-Id: I8e0450c41882f00a49264a99342eb2dcf1959abe
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2020-03-16 08:52:49 +01:00
Edward Welbourne ebb2d85612 Record that we're still up to date with latest dbus
DBus does have dbus-1.13.* releases these days, as well as its stable
1.12.* releases, but there's no change in the fragments we've
extracted from its headers, since the last (1.12.12) release we
checked against. We're thus in sync with 1.12.16 and 1.13.12.

Fixes: QTBUG-82748
Change-Id: Ic550e3cd7486db712643711d010f5b45c347a95b
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-03-16 08:52:10 +01:00
Fabian Kosmale e464e1eb8e Introduce always constexpr variants of qCountTrailingZeroBits
qt_builtin_ctz is unfortunately not constexpr on MSVC, so the whole
function cannot be used in constexpr contexts, unless v is exactly 0. As we
don't have std::is_costant_evaluated until C++20, we need to introduce a new
helper function, which always works in constexpr contexts.

Change-Id: I36290acb61e430d6bdb3da112a9b2263be4b9fbf
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-16 08:21:49 +01:00
Lorn Potter d6ddd21257 wasm: remove uneeded platform plugins from build
Wasm does not use minimal, offscreen or qvnc platform plugins.

Change-Id: I3a1919a260280ffdff33b68502d488f71f2b0c13
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2020-03-16 10:06:51 +10:00
Lorn Potter e7ae28cfb9 wasm: do not move or resize Popup windows
Fixes: QTBUG-81771
Change-Id: I1595ade444222160ac05c4564dad5b61f10a050f
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2020-03-16 09:27:20 +10:00
Christian Ehrlicher f5213ab799 QMySQL: return QVariant::ByteArray for POINT column
qDecodeMYSQLType() did not handle FIELD_TYPE_GEOMETRY and therefore the
type for a POINT column was incorrectly treated as QVariant::String.
Even the type can not (yet) be properly decoded to a QPoint, treating it
as QVariant::ByteArray is the better option here.

Fixes: QTBUG-72140
Change-Id: I12e75b326ae3acb75cb36f2e650464528bd43c0e
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2020-03-15 23:00:41 +01:00
Lars Knoll cb8eb0f86c Get rid of QRegExp usage in the cocoa plugin
Change-Id: I9789e1637a17809082458e946fa7c49ab9269537
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-03-15 15:06:40 +01:00
Lars Knoll fed4d6d78d Fix QNetworkAccessCache after QHash stability semantics change
The data structure relies on stable nodes in QHash, something that
is not guaranteed in Qt 6 anymore.

Change-Id: I9077ed404ee922893099f5eaae76d2dcea414090
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-03-15 15:05:26 +01:00
Topi Reinio 26ed956cbc Doc: Remove \contentspage commands
The command is deprecated and has no effect apart from generating
a documentation warning.

Change-Id: I30871bfd6975f8268930cce99993a8579242fdb8
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-03-15 10:48:58 +01:00
Lucas Wang 9287447a67 macOS: Ensure GL symbols are resolved from the OpenGL framework
The app or its dependencies may link against X11's libGL.1.dylib from
XQuarz, to support GLX on macOS. Doing so may place libGL earlier in
the load order than Apple's OpenGL framework, which results in dlsym
picking symbols from libGL when using the RTLD_DEFAULT lookup strategy,
breaking Qt's OpenGL support in various ways:

  QOpenGLShaderProgram: could not create shader program
  Warning: "" failed to compile!

To fix this we use RTLD_NEXT, which looks up the symbol in
dependency order of the image that called dlsym, rather than
the global load order.

Change-Id: I1ec3055a4ab0bb96566c7e196d301b30785f2dc0
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-03-15 00:02:45 +01:00
Harald Meyer 91436e2409 Add native iOS file dialog
This patch adds native iOS file open and directory picking support for
the QFileDialog using the iOS UIDocumentPickerViewController class.

Change-Id: Ia724a59742650a01c62067aed3477f82ab1fd546
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-03-14 16:22:17 +01:00
Tor Arne Vestbø 395e2d9bc4 macOS: Modernize QCocoaSystemTrayIcon
The code had not been touched in a very long time and was overgrown
with weeds from pre-QPA times.

We no longer maintain an indirection through QSystemTrayIconSys,
which was a remnant from Qt 4 times.

The Objective-C helper class used for callbacks has been slimmed
down to just a simple delegate, with the actual work done in the
QCocoaSystemTrayIcon implementation, further reducing indirection.

We no longer use a custom NSView for the status bar item, something
that has been deprecated for a long time. Instead we set properties
on the NSStatusItem's button. This gives us automatic support for
drawing the icon with the right highlight, including in dark mode.

Finally, the code has been updated to modern Objective-C syntax.

Change-Id: I59706081f6b179035b8216a7a6ebc08a47cec127
Fixes: QTBUG-77189
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-03-14 14:21:28 +01:00
Andy Shaw f45d2dc543 WinRT: Open the URLs via the XAML thread to enable them to be opened
UWP expects these functions to be opened via the XAML thread, so we
ensure this is done by running those functions on that thread.

Change-Id: I57ae3a7d9b45d0b1a00ac23b103386bd34b65c6d
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2020-03-14 11:41:02 +01:00
Edward Welbourne 54f8be6cc0 Update UCD to Revision 26
Include WordBreakTest.html, since a test uses sample strings from it,
albeit without actually reading the file.

Had to comment out more of the new tests, as at Revision 24, pending
an update to harfbuzz and the text boundary detection code.

Task-number: QTBUG-79631
Task-number: QTBUG-79418
Task-number: QTBUG-82747
Change-Id: I0082294b09d67ffdc6a9b5c15acf77ad3b86f65f
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-14 11:26:59 +01:00
Lars Knoll e87768a880 Use qsizetype for size related methods in QVarlengthArray
Change-Id: Ib94b9a4e6e17da21f592e71a36fd1b97d42dfe62
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-14 10:36:56 +01:00
Lars Knoll f9a154e07f Use qsizetype for size related methods in QMap
This allows QMap to hold more than 2^31 entries on 64 bit systeems.

Change-Id: Ia6abd3441f9bc0c7e1a01b78726b5c32209542fa
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-14 10:36:51 +01:00
Lars Knoll d013aa16ef Extend QContiguousCache to use qsizetype for size and indices
Allow for more than 2^31 items and large offsets.

Change-Id: I42f7bf20ce0e4af43dbb2e2083abf0e232e68282
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-14 10:36:47 +01:00
Lars Knoll bf7debf658 Add move semantics to QContiguousCache
Provide move semantics for QContiguousCache. Do further cleanup of the
code and avoid special casing for complex typeinfo where it won't
make a difference anyway.

Change-Id: I9bd261aec21be7a050e04f5b3a1f0b8e1d94c064
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-14 10:36:42 +01:00
Lars Knoll f75160774a Cleanup code in QContiguousCache
Remove the union being used to hold the d-pointer, as accessing both
members of the union on the same data is technically undefined behavior.

Change-Id: Ia5a063d97538222575a47e9462c0675acdf32aef
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-03-14 10:36:37 +01:00
Friedemann Kleint 1d403ef81a Windows QPA: Fix broken frame geometry when moving windows with native menus
QWindowsWindow::updateFullFrameMargins() which is called
from the screen changed handling does not take native menus
into account.

Since the size of the menu is not known when using
EnableNonClientDpiScaling(), obtaining the correct frame
size requires triggering a WM_NCCALCSIZE message. Extract
the helper forceNcCalcSize() from QWindowsMenu and
use that from updateFullFrameMargins() in case menus are present.

Amends d2fd9b1b98.

Fixes: QTBUG-82580
Change-Id: I306f1faf84e26c88608cb22ffd42eccc848905c3
Reviewed-by: André de la Rocha <andre.rocha@qt.io>
2020-03-13 15:11:00 +00:00
Lorn Potter 7ddbd179a1 qpa: Return accepted state from mouse, touch and wheel handlers
Return the value from handleWindowSystemEvent so platform plugins can
detect whether it was accepted or not.

Change-Id: I53ffb713afc8e0ec1789107c912433133cfaa11a
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-03-13 15:56:40 +01:00
Giuseppe D'Angelo 2537d04785 QRegularExpression: inline some compatibility calls
The functions take QStringView now. The ones taking QString can
be implemented inline (BC break). Drive-by change, use
qToStringViewIgnoringNull.

Change-Id: Ia3089c574446418e5ab93e08e21869ef19fbfbfd
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-03-13 15:23:56 +01:00
Giuseppe D'Angelo 75514103e2 Remove an outdated comment
QRandomGenerator is now used to seed QHash, so the comment
is wrong.

Change-Id: Ic50fe95ea4169b55290cc758f5aebfbb0a3ea085
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-03-13 15:23:56 +01:00
Morten Johan Sørvig 951d490750 High-DPI: Enable AA_UseHighDpiPixmaps by default
The effect of this is that QIcon::pixmap() will/may
return a pixmap larger than the requested size (with
an appropriate devicePixelRatio set), suitable for
high-dpi displays.

Many use cases, such as painting the image with QPainter,
will be unaffected by this change. User code which e.g.
iterate over image pixels may have to be updated.

Change-Id: I63e867cc1e3f2a0b5cad92e1ffab4fe4de33ae19
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-03-13 16:23:56 +02:00
Andy Nichols 20f7e18d9c Make it possible to set the EGL_DEFAULT_DISPLAY
Change-Id: I564f1ce72501bc12b960c87c953343fd64ee9011
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-03-13 22:46:22 +09:00
Tor Arne Vestbø d8ab719c08 Fix double scaling of SVG icons on high DPI screens
On a high-dpi screen and AA_UseHighDpiPixmaps set, QIcon will ask its
engine for a scaled-up pixmap. When the icon has been created from a
theme, the engine is a QIconLoaderEngine. For a SVG icon, that engine
would recursively use QIcon to load the scaled-up pixmap, leading to
double scale-up. Fix by bypassing the QIcon API in the SVG case,
loading the SVG icon directly from the SVG icon engine.

Done-with: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Fixes: QTBUG-73587
Fixes: QTBUG-75039
Change-Id: I7fba02b6454decb5fcbca9c5a092e75954261dfd
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-03-13 13:12:18 +00:00
Morten Johan Sørvig ef5c747aba Fix range-loop implicit copy warning
Make the copy explicit.

qhighdpiscaling_p.h:282:24: warning: loop variable 'rect' has type
	'const QRectF &' but is initialized with type 'const QRect' resulting
	 in a copy [-Wrange-loop-analysis]
    for (const QRectF &rect : pixelRegion) {
                       ^

Change-Id: I4080ff42c41e464d081ab2b01cb2d010867b041b
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-03-13 12:37:38 +00:00
Eskil Abrahamsen Blomfeldt 36325f9d86 Hide default-invisible characters when shaping is disabled
When shaping is disabled we also skipped the step which set
dontPrint to true for soft hyphens, line separators, and
similar characters. This caused boxes to appear in text with
e.g. line separators.

There is a minor modification to the code that is moved:
In the case on unshaped text and only the CMAP able is used,
the font engine for the soft hyphen can be a fallback engine,
so we need to also set the correct engine index when changing
the glyph index.

[ChangeLog][QtGui][Text] Fixed an issue with QFont::PreferNoShaping
where boxes would appear in place of unprintable characters.

Fixes: QTBUG-81994
Change-Id: Ifc9f4f89d928475ca0487a92b4480bd5db5918fd
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-13 10:17:54 +01:00
Jean-Michaël Celerier 6dbe03c4d1 Make vulkan-flavored GLSL known to QShaderFormat
Change-Id: I6a3799c35aafa38095b316ee01d14b9db3af5e04
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
2020-03-13 09:43:13 +01:00
Topi Reinio 65a7648329 Doc: Remove incorrect see-also link
The link is actually a self-reference; setCurrentSection() is setter
for the currentSection property, and has no dedicated documentation.

Change-Id: I4977650566913c590d46aede92d8678b7b7ea291
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-03-12 21:44:57 +01:00
Giuseppe D'Angelo 476d296f42 Fix QVarLengthArray documentation
QVLA *does* have iterators and *can* be used with foreach
(... I didn't say it should). Move its description together
with the other containers.

Change-Id: Ib60d1f7b3dc0e8c7004991bd4fdff95b3f23af60
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-03-12 12:16:14 +00:00
Tor Arne Vestbø 67c3999e02 macOS: Pass on QCursor pixmap with original scale
There's no need to scale the cursor down to 1x, since we're now passing
the correct device pixel ratio on to the NSImage by setting its size.

Letting macOS deal with the scaling produces a higher resolution cursor.

Change-Id: Icdb3d59998f9a32094c2973c3b222cf22b6398ac
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-03-12 11:49:18 +01:00
Tor Arne Vestbø 059c3ae66a macOS: Pass on QIcon as NSImage if possible, instead of going via QPixmap
The QIcon can be turned into a NSImage directly, with all the supported
representations that the icon contains. This allows macOS to choose the
best representation for whatever context it's rendering the NSImage in,
and will likely do a better job of scaling it if none of the sizes fit
target context.

This fixes e.g. application window icons not taking retina screens into
account.

Change-Id: Idbd97cae4ef50cc0dd3f38c355cfceec007e0d19
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-03-12 11:49:16 +01:00
Tor Arne Vestbø bee3d0fc13 macOS: Streamline QIcon to NSImage conversion
The conversion uses NSBitmapImageRep and correctly sets the display
pixel ratio and size of the resulting image, reducing the need for
clients to deal with this.

It also propagates the isMask property of the icon to the NSImage.

The function returns an auto-released object, as is customary for
class-functions like these.

Change-Id: If97f3d383959cd0f58a0d1249f5c26e52c1da9cd
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-03-12 11:49:08 +01:00
Tor Arne Vestbø 52e9c8b4be macOS: Streamline QImage to NSImage conversion
The conversion uses NSBitmapImageRep and correctly sets the display
pixel ratio and size of the resulting image, reducing the need for
clients to deal with this.

The function returns an auto-released object, as is customary for
class-functions like these.

Change-Id: I5124d1d8145a7f5266921b22fda1987798771ec1
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-03-12 11:49:06 +01:00
Alexandru Croitor d2419b0d8c CMake: pro2cmake: Handle LIBS_SUFFIX define correctly
Matches the LIBS_SUFFIX define we use in Android conditions
and replaces it with a sane amount of escaped characters.

Change-Id: I7d870f992c70b105dd80b6fa94f87d3fa5644006
Reviewed-by: Leander Beernaert <leander.beernaert@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-03-12 11:41:29 +01:00
Alexandru Croitor 14546d1816 rcc: Teach rcc the --no-zstd option
It is needed when cross-building Qt using CMake, where the zstd
feature might have different values between the host and target,
in which case the build system tells rcc not to use zstd when
the feature is disabled.

Amends d20c980576

Change-Id: I9dc55b59b1be5272b79aa5f1e2daf2b516a157d6
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-03-12 11:41:26 +01:00
Mårten Nordheim 28d3d82a0d QtNetwork deprecations: suppress internal warnings
There're some uses we can't get rid of until the deprecated functions
are deleted, so suppress them for now.

Change-Id: I85b737eefc71f8f3ac939dfa961383220a8244af
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-03-12 11:00:29 +01:00
Mårten Nordheim 6e32de256d Bearer deprecation: centralize and suppress internal warnings
We can't get rid of internal use, so let's work around that by not
marking it deprecated in private code.

Change-Id: If6cbfff4f16c30892335633567326141fbc44092
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-03-12 10:48:22 +01:00
Marc Mutz 179c23efb1 QStringBuilder: make the nested ConvertTo typedef public
It's needed by QStringTokenizer, and it's more generally useful as a
public type (you don't need to match the type of the conversion
operator, but can just access the nested typedef).

Change-Id: I2cf8b22f1ca31c38d51d2143932115da6aefc5a7
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-12 09:27:27 +00:00
Tor Arne Vestbø d9580c2beb macOS: Log occlusion state changes
Change-Id: I5a0a3a96a59a1eae42fa94f2f9f406f22807a354
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-03-12 10:07:22 +01:00
Marc Mutz 12b4ce7281 QStringView: adapt to C++20 constexpr std::basic_string
Just mark the constructor constexpr. If std::basic_string isn't, then this
will be silently dropped. If std::basic_string is, we can now construct
QStringView from std::basic_strings at compile-time.

[ChangeLog][QtCore][QStringView] Conversion from std::basic_string can now
be constexpr (when std::basic_string is).

Change-Id: Ia608f1a71c9a24f417b3e21e150ff6bd3d2f4fc4
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-12 09:44:59 +01:00
Friedemann Kleint 2c390e85cf QFileDialog: Improve default implementation of getOpenFileContent()
Use QFileDialog::ExistingFile and check whether file can be opened,
fixing warnings like:
QIODevice::read (QFile, "/home/.../blub"): device not open

Change-Id: I7ee1d59f01383c581bc09fb44855835aae8c246b
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2020-03-12 08:23:45 +01:00
Oliver Wolff 6b70c6b866 ANGLE: Fix severe performance regression
The changed buffer usage priority that was introduced in our ANGLE
update caused severe performance regressions for Qt applications.

Fixes: QTBUG-73835
Change-Id: I49839bb272cdeec0027264f2751b88bc149665ad
Reviewed-by: André de la Rocha <andre.rocha@qt.io>
Reviewed-by: Miguel Costa <miguel.costa@qt.io>
2020-03-12 07:46:38 +01:00
Tor Arne Vestbø 5f940253bf macOS: Merge qcore_mac cpp and mm files
Files ending with .mm are Objective-C++ files, so we don't need
a separate file for the C++ parts.

Change-Id: I3ef52bc98291fd461b889978a538e81630d17c6e
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-03-12 06:07:35 +01:00
Lorn Potter 739382a1bf wasm: fix emsdk 1.39.9 build
Change depreciated and removed preferLowPowerToHighPerformance to the new
powerPreference

Fixes: QTBUG-82730
Change-Id: I53e4e39626fce75897701b0134adadf00dac2dea
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2020-03-12 12:33:11 +10:00
Allan Sandfeld Jensen ddd0919bcf Do not crash on skipped Xlib visuals
If XLIB_SKIP_ARGB_VISUALS is set, we might fail to find visuals for
supported configurations.

Task-number: QTBUG-81904
Change-Id: Ib0d26faabe430925881b7f2acfc5361df3af416b
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-03-11 16:28:14 +00:00
Allan Sandfeld Jensen 198d8eb5d0 Fix multi-threaded shrinking conversion
The conversion takes place in separate blocks, but may need to be
compressed after converting.

Fixes: QTBUG-82818
Change-Id: I71431af3d41e1bfe1f9b3d8cd7c1e0a2020846cd
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2020-03-11 15:34:33 +00:00
Qt Forward Merge Bot 3d315860cd Merge "Merge remote-tracking branch 'origin/5.15' into dev" 2020-03-11 15:39:56 +01:00
Qt Forward Merge Bot 865afac250 Merge remote-tracking branch 'origin/5.15' into dev
Change-Id: Ibee5acec72a1a1769d4bc5f23f56c7dc8d4cf3cb
2020-03-11 15:34:21 +01:00
Vitaly Fanaskov c977e74afd QtConcurrent::run: accept more then five function's arguments
[ChangeLog][Potentially Source-Incompatible Changes] QtConcurrent::run
has the following signatures: run(Function &&f, Args &&...args) and
run(QThreadPool *pool, Function &&f, Args &&...args). If f is a member
pointer, the first argument of args should be an object for which that
member is defined (or a reference, or a pointer to it). See the
documentation for more details.

Fixes: QTBUG-82383
Change-Id: I18f7fcfb2adbdd9f75b29c346bd3516304e32d31
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
2020-03-11 14:46:25 +01:00
Edward Welbourne 296bbbfa50 Fix minor errors in QDeadlineTimer docs
Change-Id: I0f33094da29300ca8a609cfffd700c2a82d86ad1
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-03-11 12:27:40 +01:00
Qt Forward Merge Bot 12f903b155 Merge "Merge remote-tracking branch 'origin/5.14' into 5.15" 2020-03-11 12:27:40 +01:00
Allan Sandfeld Jensen ee259ff60b Replace initialization of sparse table of converts with setters
This is similar to how the similar table in qblendfunctions.cpp is now
set, and is easier to read and maintain.

Change-Id: I43a885fae7b1a92110bb33f0b22a5b02fddc0115
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2020-03-11 12:27:40 +01:00
Qt Forward Merge Bot 116d68f105 Merge remote-tracking branch 'origin/5.14' into 5.15
Conflicts:
	src/corelib/plugin/qlibrary.cpp
	src/corelib/plugin/qlibrary_unix.cpp
	src/corelib/plugin/qpluginloader.cpp

Change-Id: I866feaaa2a4936ee5389679724c8471a5b4b583d
2020-03-11 11:27:49 +01:00
Allan Sandfeld Jensen bd3c82f8db Fix non-trivial soft-hyphen line breaks
The effect of the soft-hyphen needs to be updated once the final the
break point has been found.

This change cleans the logic by using two variables keeping track of
soft-hyphen at current evaluated position and at last confirmed break
point. Also adds tests for supression of soft-hyphens in the tight
WrapAnywhere case.

Fixes: QTBUG-35940
Fixes: QTBUG-44257
Change-Id: I7a89a8ef991b87691879bb7ce40cec4a3605fdd5
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2020-03-10 21:58:21 +01:00
Topi Reinio 52de905d0e Doc: Fix documentation for class qfloat16
This class has documented member functions, but only the related
\headerfile was documented. The class documentation itself was
omitted with the \dontdocument command.

Replace the \headerfile with a \class command, and move the global
functions to be related to the class itself. Keep the title as a
\keyword to avoid breaking any external links. The new class page
will inherit the .html file name of the header page, so we're safe
in that regard as well.

Fixes: QTBUG-82800
Change-Id: Id51539b45e0642d91b304a37f95461ca3d6c9841
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-03-10 17:51:56 +00:00
Simon Hausmann 01bacdf7ab Fix typo
Change-Id: I4923efb537c1d1b5778bf97955dbf247eaa6220a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-03-10 18:50:01 +01:00
Laszlo Agocs 67edae9a08 QVulkanWindow: Fix setQueueCreateInfoModifier signature
...per API review.

Change-Id: I4a5a1cc895eac32f21f8a830507b841318509992
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2020-03-10 17:06:07 +01:00
Cristian Adam d4207cb1a9 Mimetypes: Build fix for Android builds on Windows
Due to Android's multi-abi the build will fail due to concurrent
access:

cmd /c C:\Projects\Qt\repo\qtbase\src\corelib\mimetypes\mime\generate.bat C:\Projects\Qt\repo\qtbase\src\corelib\mimetypes\mime\packages\freedesktop.org.xml > .rcc\qmimeprovider_database.cpp
The process cannot access the file because it is being used by another process.

Change-Id: I647e0a6d8aa03cf116b08a1dce6e61e8882661f4
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-03-10 17:05:37 +01:00
Simon Hausmann 4109d6e166 Small typo fix
Change-Id: Ie26dce967af59f140ebf03debe06aba19bd6a8e8
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2020-03-10 16:38:23 +01:00
Fabian Kosmale ade4e5265a Remove template leftover
Amends 33cd680ddb, which removed the
Qt5CompatiblityHook class. However, the template line above it was not
removed, and now applied to isBuiltinType. As that function should not
be a template, we remove it now.

Change-Id: If8e276daebce5480b59d9c21b049818f9a46ec98
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2020-03-10 16:37:49 +01:00
Mitch Curtis 45695444ed Fix warning in qmetaobjectbuilder.cpp
src\corelib\kernel\qmetaobjectbuilder.cpp(1489): warning C4267: '+=':
conversion from 'size_t' to 'int', possible loss of data

Change-Id: I9cf9bdcb62b796eb8d3f3c633640b648cb11b39f
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2020-03-10 15:17:24 +01:00
Eskil Abrahamsen Blomfeldt 761197e9d2 Fix distribution of font properties in QTextFormat
The area reserved for font properties was too small for
the properties we needed, and as a result font properties
were added outside of the area and special-cased (in the case
of FontLetterSpacingType) or ignored (in the case of
FontStretch) by conditions that check if the property is
within the designated area.

We reorganize the enum values now that we can, and allocate
some more space for the font properties area.

Fixes: QTBUG-65345
Change-Id: I8121ff7f72102d8022c6a6d2f8ed9c35dcdbb321
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2020-03-10 10:58:03 +01:00
Laszlo Agocs 3dd13d4075 rhi: d3d11: Honor resource/sampler slot limits
Show a warning but allow applications to survive by not attempting
to call VS/PS/CSSetWhatever() with an invalid number of resources.

Relevant for samplers in particular, where the limit is 16. Qt Quick 3D
exhibits problems with this when using custom materials combined with
shadow mapping, and while this is not a solution to the problem there,
at least the problem is now clearly indicated instead of crashing.

Task-number: QTBUG-82719
Change-Id: I83914b7648001fa421ed1cf07a7b7444e0ef8fc0
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
2020-03-10 09:38:03 +01:00
Mårten Nordheim 19a76200ea QDataStream: keep brace delimiters inside #if-scopes
Because it looks odd.

Change-Id: Ic272ae7b1b5a3e0a70884caa683ccbdd3a61ff6a
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2020-03-10 09:29:12 +01:00
Mårten Nordheim d340cc1512 Schannel: Fix readBufferMaxSize impl with incomplete data optimization
Following the incomplete data guesstimation optimization the
tst_QSslSocket::readBufferMaxSize test would fail due to it waiting for
16K, but the readBufferMaxSize was 10 bytes.

Amends 559b563d71

Change-Id: I5d17fac24e73c1305161aff744710b4c5b0b457a
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-03-10 09:28:56 +01:00
Mårten Nordheim d52a553754 Bearer management deprecation cleanup
For QNAM:
Deprecate the to-be-unused enum and mark the property deprecated in docs

For bearermanagement:
Add a warning on the bearermanagement documentation page that it is
deprecated.

Change-Id: I2cbe12ddec444d9f704601f07f3a7c9b70dc4f3c
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-03-10 09:07:18 +01:00
Kari Oikarinen d6d902a990 Merge 5.14 into 5.14.2
Change-Id: Ib4b26bad47a850cde6253fb3422aae34b2cf622b
2020-03-10 09:43:16 +02:00
Alexandru Croitor 02f08d5038 CMake: Remove old 3rdparty mechanism for harfbuzz-non-ng
Change-Id: I37c1e561ac83c51a06aae50ccb176094785d52f5
Reviewed-by: Leander Beernaert <leander.beernaert@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-03-10 07:33:13 +01:00
Alexandru Croitor 729a73a9cf CMake: Remove old 3rdparty mechanism for double conversion
Change-Id: I2b20d4d9d95a1f7f59bc506046a1ebc20eb305f7
Reviewed-by: Leander Beernaert <leander.beernaert@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-03-10 07:33:07 +01:00
Topi Reinio a8ae9718b0 Doc: Mention .qrc compression attributes in resource compiler docs
Fixes: QTBUG-76321
Change-Id: Idf7b4157b46d98392314ccddf6b714f9e620b5f8
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-03-10 06:47:45 +01:00
Allan Sandfeld Jensen 332816779c Multithread some QImage routines
Use QThreadPool to process QImage smooth-scaling, format conversions,
and colorspace transforms multithreaded.

Change-Id: Ic142b1fa899f56e7e5099d36ca713701a47b681b
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-09 23:22:43 +01:00
Alexandru Croitor 1253a02dc0 CMake: Regenerate configure.cmake files to get reports
Change-Id: Ifa1646c7e471b3eaba552498ee1dc24f6ab864de
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-03-09 23:09:02 +01:00
Tor Arne Vestbø cc59f0de55 macOS: Support printing when no printers are installed
Even if there are no printers installed, we can still show the print
dialog, which gives the user feedback about no printers being installed,
allows them to install one, or allows them to print to PDF as a
fallback.

The code for printing to PDF has been re-enabled, and the conditions
of QTBUG-38820 have been removed as the problem is no longer present.
The code also takes into account the possibility that the user chose
to print to PostScript, which we don't yet support, but warn about.

We now also support opening the printed document in Preview. This
requires a minor assumption about the print operation being done
synchronously after the print dialog is accepted, but this is
something we can improve in the future with internal APIs if it
turns out to be a problem.

Printing workflows such as sending the printed document via mail
or messenger are not not supported, and will give a warning.

Fixes: QTBUG-36112
Change-Id: I8ba9e2c5ce31a5a06542c4a7126d005e4b27f2be
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2020-03-09 14:53:50 +01:00
Kai Koehne 2097932dc5 Document how to use CMake for Qt Network
Add documentation on how to use a module from CMake, alongside
the existing documentation about qmake.

While at it, also remove the mentioning of the central include;
It is not something we should actively advocate anymore. Instead,
the documentation of every class gives the correct include to use.

Task-number: QTBUG-73058
Change-Id: I71ed5a62f4f0a6d868dd1f84ea39e5ac385a2fb8
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
2020-03-09 14:53:50 +01:00
Andy Shaw 20167a7fe9 WinRT: Use the fallbacks for getting the save file name
To bring it in line with the other platforms, then it needs to check if
the initially selected files are set and use the first one. Otherwise it
can fall back to the initial directory if that happens to include a
filename.

Change-Id: If34ae0e7e10b6a3c25e9422d9b4f2c21e6bfc8d1
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2020-03-09 14:53:50 +01:00
Leander Beernaert a64f4b4052 Simplify OpenGL and OpenGL ES2 library tests in Gui's configure.json
Change OpenGL and OpenGL ES2 library tests to just include the header
file in the test header code. This mimics what the OpenGL ES3 library
tests does.

Change-Id: Ic63879ea100bc66cf58ffd660e89c5803c6e29e6
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-03-09 09:57:58 +01:00
Christian Ehrlicher 3702a4c37e QSortFilterProxyModel doc: do not mention deprecated function reset()
QSFPM::reset() is deprecated and begin/endResetModel() should be used.
Therefore adjust the documentation to reflect this.

Fixes: QTBUG-82470
Change-Id: I786b3f25e5674d97d0ef6a0c91342973d5e952e9
Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-03-09 06:29:25 +01:00
David Faure 4bc9e3b847 QDataStream: fix compilation with QT_DISABLE_DEPRECATED_BEFORE=0x0050F00
Fixes: QTBUG-81023
Change-Id: I0d56785d1fed2c4c8e0e87ccefb0b72b0ed3644a
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2020-03-08 15:38:04 +01:00
Christian Ehrlicher 114394702b QtSql/ODBC: allow table names with unicode chars
The ODBC driver did not properly decode table names with unicode chars.
Fix it by explicitly passing the unicode flag to qGetStringData().

Fixes: QTBUG-82401
Change-Id: Id6eb44cc85ce196ea97d0d6aef1cd573fa033970
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2020-03-07 12:02:22 +01:00
Jarek Kobus 50d2acdc93 Add default arguments to QPainterPath methods using transform
Fixes: QTBUG-82602
Change-Id: Id82f145ffb33e6d4ef9b81282ad14657b1c8fbd0
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-06 21:09:48 +01:00
Marc Mutz c1bb628572 Port from deprecated std::is_pod to is_trivial + is_standard_layout
The std::is_pod trait is deprecated in C++20; is_trivial
and is_standard_layout exist since C++11.

Change-Id: I4b901d8edf1a55001764445aee9c338d3dc23b21
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-06 18:06:43 +01:00
Laszlo Agocs ccee938b51 rhi: vulkan: Silence useless desc.set validation warnings
This is deemed more appropriate than having some time consuming tracking
of descriptor types in pools, just to avoid the rare case of attempting
a failing vkAllocateDescriptorSets(), which is then always followed by
another, successful attempt.

Change-Id: I7a3a1d80afe400dc96605a3d6c834e8b2c71143a
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
2020-03-06 18:06:01 +01:00
Tor Arne Vestbø 94fc977b2b macOS: Disable system provided tabbing by default
macOS 10.12 introduced automatic window tabbing, where the OS provides
tab handling on behalf of the application. The feature defaulted to
being on, and the release notes asked applications that had their own
tab handling to disable the automatic tab handling explicitly.

Qt has its own tab handling, and should therefore disable the automatic
handling. We do this on a per NSWindow basis, using the tabbingMode
property of the window, instead of the global allowsAutomaticWindowTabbing
property on NSWindow, so that individual windows can still opt in to
the automatic tab handling. Doing it via the tabbingMode property
also ensures that we're not affecting the host application's
behavior in a plug-in setting.

Ideally Qt's tab handling should read the userTabbingPreference
property of NSWindow to pick up the system preference choice of
whether to open new windows as standalone windows or tabs, but
this is left for a later change. An alternative would also be to
use the automatic window tabbing instead of our own implementation.

Fixes: QTBUG-61707
Change-Id: Icf2078b63ec16202ff7fd83ea264a48dc61978e1
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-03-06 18:06:01 +01:00
Vitaly Fanaskov 344eb0d29d QFlatMap: explicitly include <vector>
Without this include, it fails to compile the following line on some
systems: "std::vector<bool> done(s)", because only a forward declaration
is available.

Change-Id: I6eac4b7f69dda16e181043eb707f970b21b2dfef
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-03-06 15:29:30 +01:00
Joerg Bornemann 6cca46ee60 Remove trivial overrides from QProcess
Change-Id: I630fc44213fdc380c8b00e159989d5067bb2a185
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
2020-03-06 13:38:39 +01:00
Joerg Bornemann 3dbfded87e Merge QProcess::startDetached(QString, QStringList, ...) overloads
Change-Id: Ic74f78c2bdf9acf0f91df3151e82cf2bf2602c1d
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-03-06 13:38:38 +01:00
Friedemann Kleint 7fcc4e0a57 Windows QPA: Do not play sound for QMessageBox::NoIcon
Amends 2f366a63b2.

Task-number: QTBUG-82682
Task-number: QTBUG-81342
Change-Id: I30f465bf432e27828db460f6dbbb59eee0cca8f2
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: André de la Rocha <andre.rocha@qt.io>
2020-03-06 13:29:56 +01:00
Leander Beernaert b4f19e4277 CMake: Remove special case handling for OpenSSL
Now that we can generate the library config tests which verify the
OpenSSL version, we no longer need these special cases.

Change-Id: I8ddccf4ae1c698db9fac391976b3b4b670712582
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-03-06 12:32:58 +01:00
Allan Sandfeld Jensen 08b9e66347 Fix QDeviceDiscoveryUDev on FreeBSD
Include input.h from the right path.

Change-Id: I016027ab5d6372a8584e04043444a355e7e2d539
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-03-06 10:57:13 +01:00
Joerg Bornemann 2de3bfced3 Fix UB in QProcess deprecation warning fixes
The commits e1e08629 and 66e905b1 introduced undefined behavior. Fix
this by assigning the result of takeFirst to a temporary.

Change-Id: I9e29412cf632d4836b95d47e12d8c07ab0645fbb
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-03-06 10:00:01 +01:00
Kai Koehne 1a9c29289a Doc: Mark QColorSpace enum as introduced in Qt 5.15
Change-Id: Ibf2da1ebb4eb9520a2a507ed6afb89f7176391bb
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2020-03-06 08:42:00 +01:00
Kai Koehne b80503b377 Doc: Fix \sa link for QResource::uncompressedData()
No point in linking to itself.

Change-Id: Id0bf3fa6878417e541ec0997d34758b0c59e99b3
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-03-06 08:41:32 +01:00
Eskil Abrahamsen Blomfeldt 8bdbb7f226 Enabler: Store more properties of application fonts
The family name of a font is ambiguous and without additional
information there is no way to separate one font from another
inside that family.

In order to make it possible to expose more info about application
fonts from FontLoader in Qt Quick, we need to store them in the font
database.

Task-number: QTBUG-68829
Change-Id: I931e1c2c004437ac0a21d4d88e55d176de676f34
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2020-03-06 08:27:36 +01:00
Allan Sandfeld Jensen eb09b7aa75 Initial cleanup of qevent.h for Qt6
Takes care of the first round of todos and deprecations for Qt6 in
qevent.

Not touching anything that might interfere with changing the class
hierarchy as the file also suggest.

Change-Id: If72d63d8932f1af588785bf77b34532358639a63
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2020-03-05 21:49:18 +01:00
Laszlo Agocs c3ae30085e rhi: Add support for arrays of combined image samplers
Introduces a new QRhiShaderResourceBinding function that takes an array
of texture-sampler pairs. The existing function is also available and is
equivalent to calling the array-based version with array size 1.

It is important to note that for Metal one needs MSL 2.0 for array of
textures, so qsb needs --msl 20 instead of --msl 12 for such shaders.

Comes with an autotest, and also updates all .qsb files for said test
with the latest shadertools.

Task-number: QTBUG-82624
Change-Id: Ibc1973aae826836f16d842c41d6c8403fd7ff876
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
2020-03-05 19:40:41 +01:00
Leander Beernaert 73301b252a CMake: Depend on automoc timestamp for metatypes extraction
When using CMake 3.17 with any of the Ninja generators we can leverage
a dependency on the timestamp file produced by CMake's automoc to avoid
having a custom target run on every build.

Change-Id: Ia70d2730cc8296d0a43642655fe69b555cb393c0
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-03-05 16:14:35 +01:00
Leander Beernaert fda03bfed0 CMake: Convert Core_qobject to a static module
This removes the last add_custom_target when used in conjunction with
the Ninja and CMake >= 3.17.

Change-Id: Ibb9bdff4b5bc00542d2a5ba631cea7e0510ad5e9
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-03-05 16:14:19 +01:00
Shawn Rutledge af00402d64 Remove QImageIOHandler::name()
It has been marked obsolete for a very long time, and deprecated
in code since f9e6f8efda.

Change-Id: Ib351025369584bf3b8a3a17f980a567d2b9556ca
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
2020-03-05 16:09:40 +01:00
Lars Knoll d1882c79f2 Get rid of some QT_STRICT_ITERATORS leftover
Amends 06456873fc.

Fixes: QTBUG-82611
Change-Id: I8b1e01549f3e910b85a571833237e38a7c2b49a9
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2020-03-05 16:08:30 +01:00
Alexandru Croitor 4f7cc72298 CMake: Handle conditions in third party find modules correctly
Previously the FindWrap modules checked for hardcoded features
when deciding whether to use a bundled library or not. This proved
not to work correctly because features were not available when
the find modules were processed.

Introduce a new CMake API call that needs to be manually called
after an add_subdirectory call which declares a bundled library.

The call will check for the existence of the bundled target, and will
then set a cache variable QT_USE_BUNDLED_Bundled<TargetName>.

The same variable is written into a FindWrapFooConfigExtra.cmake file
which will be loaded by the appropriate FindWrap module. The module
can that use that variable to decided whether to link against the
bundled library or the system library.

Change-Id: I75e9a4f4e14d88d4490916a79ad12f1ce57891e0
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2020-03-05 16:08:14 +01:00
Joerg Bornemann e1e0862990 Fix deprecation warning in QGenericUnixServices
Do not use the deprecated method QProcess::start(QString) anymore.

Change-Id: I09eae2c8a1dbb53fd2de004e5030da9bb3c07b14
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-03-05 15:20:07 +01:00
Joerg Bornemann 66e905b1c3 Fix deprecation warning in QProcess::execute(QString)
Implement this method in terms of splitCommand and
QProcess::execute(QString, QStringList).

Change-Id: I1fe78fb53d8b6b34a8796f9fbda380a98a840c99
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-03-05 15:20:02 +01:00
Mårten Nordheim a2305f9430 CMake: fix typo
gerate -> generate

Change-Id: I948a3bdb4f56584a9ab02f27760fec5989d528ce
Reviewed-by: Leander Beernaert <leander.beernaert@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-03-05 13:25:06 +01:00
Marc Mutz bd84e8d63e QHash/QMap: don't return const from value(), key()
... it breaks move semantics.

We can change these, since they're templates and a short survey shows
that no-one in Qt was crazy enough to inherit an exported class from
QHash or QMap.

Otherwise this would be BiC on MSVC, which encodes the return type.

There's also no safety benefit here, as none of the overloads returns
by reference, so users cannot expect map.value(key).mutate() to have
an effect on the element in the container.

In this, key() and value() differ from op[], which also returns const,
but whose overload returns a reference. op[] is therefore not proposed
here.

[ChangeLog][QtCore][QHash/QMultiHash/QMap/QMultiMap] The value() and
key() member functions now return T (was: const T), enabling move
semantics on their return values.

Change-Id: I0e5f53f9834caad458e3bde27f1daacbb4bac71b
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-03-05 13:24:32 +01:00
Sona Kurazyan dfaca09e85 Add support for attaching continuations to QFuture
Added QFuture::then() methods to allow chaining multiple asynchronous
computations.

Continuations can use the following execution policies:

* QtFuture::Launch::Sync - the continuation will be launched in the same
thread in which the parent has been executing.

* QtFuture::Launch::Async - the continuation will be launched in a new
thread.

* QtFuture::Launch::Inherit - the continuation will inherit the launch
policy of the parent, or its thread pool (if it was using a custom one).

* Additionally then() also accepts a custom QThreadPool* instance.

Note, that if the parent future gets canceled, its continuation(s) will
be also canceled.

If the parent throws an exception, it will be propagated to the
continuation's future, unless it is caught inside the continuation
(if it has a QFuture arg).

Some example usages:

 QFuture<int> future = ...;
 future.then([](int res1){ ... }).then([](int res2){ ... })...

 QFuture<int> future = ...;
 future.then([](QFuture<int> fut1){ /* do something with fut1 */ })...

In the examples above all continuations will run in the same thread as
future.

 QFuture<int> future = ...;
 future.then(QtFuture::Launch::Async, [](int res1){ ... })
       .then([](int res2){ ... })..

In this example the continuations will run in a new thread (but on the
same one).

 QThreadPool pool;
 QFuture<int> future = ...;
 future.then(&pool, [](int res1){ ... })
       .then([](int res2){ ... })..

In this example the continuations will run in the given thread pool.

[ChangeLog][QtCore] Added support for attaching continuations to QFuture.

Task-number: QTBUG-81587
Change-Id: I5b2e176694f7ae8ce00404aca725e9a170818955
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-05 13:24:32 +01:00
Marc Mutz 16f927a4f1 QLoggingRegistry: use QStringView/QLatin1String more
- QLoggingRule::parse() and the ctor take pattern as QStringView

- parseNextLine takes lines as QStringView and produces the pattern as
  QStringView for QLoggingRule

- (setContent has to wait for QStringTokenizer)

- QLoggingRule::pass()'s first argument is always QLatin1String, so
  take it as one

Use chopped() more, add a std::move().

Change-Id: Ic95ea77464a9922fef452846bc6d5053bd5de56e
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-03-05 13:03:13 +02:00
Marc Mutz b2f79cceb1 QLatin1String/QStringView: add (missing) member compare()
[ChangeLog][QtCore][QLatin1String] Added compare().

[ChangeLog][QtCore][QStringView] Added compare() overloads
taking QLatin1String, QChar.

Change-Id: Ie2aa400299cb63495e65ce29b2a32133066de826
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-03-05 07:50:02 +00:00
Marc Mutz 728cc964f3 QString/QByteArray: make all symmetry-checked member-compare() combinations noexcept
In QByteArray, they were just not marked as such.

In QString and QStringRef, the implicit conversion from QChar to
QString would destroy it. Add a QChar overload, delegating to
QStringView.

Added docs for the new overloads, copying from the nearest neighbor so
as to not look out of place. All string classes use different wording
for these functions. A cleanup of this state of affairs is out of the
scope of this patch.

Change-Id: I0b7b1d037aa229bcaf29b793841a18caf977d66b
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-05 07:49:40 +00:00
Lars Knoll a0ffdf765e Merge "Merge remote-tracking branch 'origin/5.15' into dev" 2020-03-04 19:10:37 +00:00
Timur Pocheptsov 9e46dd7719 Document TlsV1SslV3 as deprecated
Change-Id: Id127b6d985d0085982e47b4f80886e3831ce07c7
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-04 19:24:58 +01:00
BogDan Vatra 519ea72108 Android: Bump gradle (plugin) versions
Move min & target sdk from AndroidManifest.xml to build.gradle

Fixes: QTBUG-70817
Change-Id: Id9bb9825a3232587e0255b2d3d6f0273c5f9b66a
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-03-04 18:02:35 +00:00
Mårten Nordheim 8131116896 QSslCertificate: Turn enum into enum class and expand abbreviation
From API review

Change-Id: Id174ff1a0a123585e41723ef1c1876b2f3bd39c5
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-03-04 18:36:04 +01:00
Mårten Nordheim d57adfe5f3 QtConcurrent: filter- and map-reduce with initial value
It takes any type which is implictly covertible to the result type
and then converts it in the outer-layers. Then it passes it into the
deeper layers and initiales the result value.

One drive-by fix with a missing letter in the documentation.

[ChangeLog][QtConcurrent] QtConcurrent::mappedReduce and
QtConcurrent::filteredReduced, as well as their blocking variants,
now optionally take an initial value.

Fixes: QTBUG-73240
Change-Id: I7a80d96693cfa3374847c75c75b3167664609c1a
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-03-04 17:40:45 +01:00
Alexandru Croitor d50b22e75d CMake: Remove incorrect hardcoded harfbuzz condition
The non-system harfbuzz feature doesn't actually have a condition
in the json file.

Change-Id: I4b74915f28da97d6ef8f89690e91306d243913ee
Reviewed-by: Leander Beernaert <leander.beernaert@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-03-04 16:16:27 +00:00
Fabian Kosmale aa6c560a74 Revert "Remove flagBits from QMatrix4x4"
This reverts commit 5ebb03c476.

Reason for revert: Removing flagBits breaks the batchrenderer in declarative, which accesses them via QMatrix4x4_Accessor. If flagBits are still going to be removed, we need to first find a solution for the renderer.

Change-Id: Ib0a3fc7a327926f2245058c0e2ed30e8789aa75d
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-03-04 15:54:38 +00:00
Friedemann Kleint 09f3272814 QTypeRevision: Fix warnings about max macro from windows.h
Similar to def272750c, put parentheses
around std::numeric_limits<Integer>::max, fixing:

qversionnumber.h(339): warning C4003: not enough arguments for function-like macro invocation 'max'

Change-Id: Id574f3a08973cf1408e015f155c8e658b04bd170
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-03-04 16:31:13 +01:00
Friedemann Kleint 649d7abcd2 Update uic's class lib map to reflect QtOpenGLWidgets
Task-number: QTBUG-74409
Change-Id: I5de957156c3120422f5c8f2e702e198f9f6cc43d
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-03-04 15:31:13 +00:00
Lars Schmertmann 5ee1dac8d6 Finally remove splash.xml to fix a lint warning
Unused resources
----------------
src/android/java/res/layout/splash.xml:2:
The resource R.layout.splash appears to be unused

Fixes: QTBUG-72976
Change-Id: I8f23438503d21f3279e0577a9caac745810fffc3
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2020-03-04 16:31:13 +01:00
Lars Knoll 2a4b957789 Merge remote-tracking branch 'origin/5.15' into dev
Change-Id: I99ee6f8b4bdc372437ee60d1feab931487fe55c4
2020-03-04 14:39:18 +00:00
Andy Shaw 2c1b4e37b9 Fix CVE-2020-9327 in SQLite
This was taken from abc473fb8fb99900 in SQLite, ref:
https://www.sqlite.org/cgi/src/info/abc473fb8fb99900

Fixes: QTBUG-82533
Change-Id: I9840e29f19a0b861229987f5b59d8585ba2e55dc
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2020-03-04 13:37:33 +01:00
Kirill Burtsev 2f52afda8e QLibraryInfo: avoid unneeded conversion for path prefix
Ammends 4ac872639e. Change return type for getPrefix to eliminate
toLatin1/fromLocal8bit conversion of initial value for relocatable
prefix to preserve not-latin1 characters and return valid prefix path.

Fixes: QTBUG-81462
Change-Id: I15cfa49e9e440e257b04dd31803cd1478f3b07f5
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-03-04 12:37:27 +00:00
Andre de la Rocha 566def740e Windows QPA: Add support to UiaRaiseNotificationEvent()
This change adds support to UiaRaiseNotificationEvent() in the
UI Automation-based accessibility code, and uses it to notify changes
in string-typed values, allowing Narrator, NVDA and other screen readers
to notice changes in the application state that were previously missed.

Fixes: QTBUG-75003
Change-Id: I646ca3a851ab7b69817d900b002eb91a3bf607a6
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-03-04 13:09:48 +01:00
Volker Hilsheimer 295a16b0d3 Don't use deprecated QPixmapCache::find overload
Silence compile time warning and show correct usage in example
snippet.

Change-Id: I1936f006e4b5f3ca71bbc0100ed039beeb459271
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-03-04 09:15:27 +01:00
Eskil Abrahamsen Blomfeldt fb2f42b604 Update to Harfbuzz 2.6.4
Quite a big change since it has been several years since
the last update. This drops the Harfbuzz source on top
of the existing code in Qt, and does the following
additional changes:

1. Deletes old source files that have been removed upstream
(everything named foo-private.hh is now renamed to just
foo.hh for instance).

2. Added a header guard to config.h because it may be
double-included.

3. Implement a memory barrier needed by hb-atomic.hh.

4. Changed the signature of hb_atomic_int_impl_add()
to take a pointer to match new upstream.

5. Updated .pro file to include new files and removed
old.

6. Updated qt_attribution.json

7. No longer disable deprecated APIs since
hb_ot_tags_from_script() is now deprecated and is used
from Qt code.

8. Updated and applied the patch in patches/ for CoreText.

9. Updated tst_qtextscriptengine::thaiWithZWJ() according to
changes in Harfbuzz and disabled it for system-harfbuzz,
since this may be an older version of harfbuzz depending on
the system.

Fixes: QTBUG-79606
Change-Id: I3f057a43ff44ee416628b75ef12fb1a221f31910
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-04 08:28:04 +01:00
Eskil Abrahamsen Blomfeldt 4724dfff62 Remove references to QTextDocumentPrivate from public API
The private object of QTextDocument has been exposed through
public APIs marked internal, which we should avoid as much as
possible, since it clutters the headers.

For accessing private data without adding friends, we have
a nice pattern of adding a static get() function to the
private class itself.

Fixes: QTBUG-55059
Change-Id: I03e949a677e03487e95f24e3608a06aa0a3511ab
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2020-03-04 08:28:04 +01:00
Eskil Abrahamsen Blomfeldt 5f1afeacf6 Android: Increase minimum API level to Android-23 / Android 6
There are certain APIs we need which cannot be used without this,
and in general it simplifies some code.

[ChangeLog][Android] Minimum Android version is now Android 6.0,
API level 23.

Change-Id: I72ca3b429bf48969e16e2bc6b99d9c4af993ea77
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2020-03-04 08:28:04 +01:00
Tor Arne Vestbø 048f0a00fa macOS: Don't create QMacCGContext when printing
We adopt the context of the print session, so the code is not needed,
and would just produce a warning since QMacCGContext didn't know what
to do about the printer paint device.

Change-Id: I9ac079f5cb5d98022045632592d0e375710eecc3
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-03-04 01:30:11 +01:00
Tor Arne Vestbø 5d9d3ff326 macOS: Reduce save dialog extension filters to their last component
NSSavePanel does not deal well with multi-part extensions, to the point
where it will fail to open if that's the only acceptable extension.

We follow Chromium's lead here and reduce the extension to its last
component, which enables selecting and saving files such as 'foo.tar.gz'.

To improve the user experience we always show file extensions when we
detect a multi-part extension. This makes it clearer what the final
extension will be, and avoids confusing macOS about the intention of
the user when choosing a file that without the final extension also
matches another known extension.

Fixes: QTBUG-38303
Fixes: QTBUG-44227
Change-Id: Id0cee84f758c2cd59fcf1b339caa30f7da07dd1e
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-03-04 00:29:54 +00:00
Thiago Macieira ae6f73e856 QLibrary: introduce a mutex to protect non-atomic internals
And make pHnd atomic.

The majority of the variables is updated in QLibraryPrivate::load_sys
and updatePluginState(), which get the mutex protection.
QLibraryPrivate::unload_sys() doesn't need a mutex protection because we
have the refcounting.

[ChangeLog][QtCore][QLibrary & QPluginLoader] Fixed a number of race
conditions caused by having two QLibrary objects pointing to the same
library being operated in different threads.

Fixes: QTBUG-39642
Change-Id: I46bf1f65e8db46afbde5fffd15e1a5b3f5e74ea4
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-03 14:36:32 -08:00
Thiago Macieira ef92ac5636 QLibrary: stop setting errorString after resolve()
resolve() is technically thread-safe if the library has been loadaed. We
don't promise that, but it's there. More importantly, because
QLibraryPrivate is shared among QPluginLoader and QLibrary that point to
the same file, we can't thread-safely set the error string.

[ChangeLog][Important Behavior Changes] QLibrary::resolve() will no
longer set or clear the error string based on the success of finding the
symbol. The error string will reflect the result of loading the library.

Change-Id: I46bf1f65e8db46afbde5fffd15e1a4f4c2713c17
Reviewed-by: David Faure <david.faure@kdab.com>
2020-03-03 14:36:30 -08:00
Thiago Macieira f6c1cebe42 QPluginLoader: rework the loading and the caching of instance
There was a race condition in accessing the cached instance factory
member, so rework loadPlugin() to return the cached or newly discovered
instance, with proper, atomic caching. Because I had to change that, I
took the opportunity to fix the QFactoryLoader code that calls
loadPlugin().

Note that QLibraryPrivate::loadPlugin() returns non-nullptr now if the
instance is known, which means the last return in QPluginLoader::load()
will convert to true, not false, if the instance got cached between the
earlier check and the call to loadPlugin(). That's probably what was
intended.

Task-number: QTBUG-39642
Change-Id: I46bf1f65e8db46afbde5fffd15e1a42d2b6cbf2c
Reviewed-by: David Faure <david.faure@kdab.com>
2020-03-03 14:36:28 -08:00
Shawn Rutledge d9ca61bf0f Add the include for QPointer to avoid MSVC compilation error
It has been reported that 7447e2b337
needs amending to build on MSVC 2019, although it was OK in CI.

Change-Id: Id22c2a3608529abebd66c0e8f401bc6f26f45e18
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-03 22:30:11 +01:00
Christian Ehrlicher 8c883c8da3 QDom: use correct precision when converting float/double values
d7cb21ac08 change the way a double is
converted which resulted in less precision.
Fix it by explictily setting the precision in QString::setNum()

Task-number: QTBUG-80068
Change-Id: I1fd9d00837155ceb707e84bfeb9deff03b5ab57e
Reviewed-by: André Hartmann <aha_1980@gmx.de>
Reviewed-by: Konstantin Shegunov <kshegunov@gmail.com>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-03 22:08:18 +01:00
JiDe Zhang 4f370d36ec xcb: Fix logic for minimized state
When _NET_WM_STATE_HIDDEN is not contains in the _NET_WM_STATE
window property, the window should not be considered to be minimized

According to
https://specifications.freedesktop.org/wm-spec/1.3/ar01s05.html
_NET_WM_STATE_HIDDEN should be set by the Window Manager to indicate
that a window would not be visible on the screen if its desktop/viewport
were active and its coordinates were within the screen bounds. The
canonical example is that minimized windows should be in the
_NET_WM_STATE_HIDDEN state. Pagers and similar applications should use
_NET_WM_STATE_HIDDEN instead of WM_STATE to decide whether to display a
window in miniature representations of the windows on a desktop.

For mutter/GNOME Shell, without _NET_WM_STATE_HIDDEN, window manager
will not reply XCB_ICCCM_WM_STATE_ICONIC settings in WM_CHANGE_STATE
client message.

Task-number: QTBUG-76147
Task-number: QTBUG-76354
Task-number: QTBUG-68864
Done-With: Liang Qi <liang.qi@qt.io>
Change-Id: Ic9d26d963979b7f0ef4d1cf322c54ef8c40fa004
Reviewed-by: Uli Schlachter <psychon@znc.in>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-03-03 22:08:18 +01:00
Thiago Macieira 1edf586ed7 QMimeXMLProvider: fix another issue with -no-mimetype-database
The compiler must emit the destructor for the members of a class in an
inline constructor, in case the constructor throws. This won't work in
Qt 5.15 due to QList requiring knowing whether QMimeMagicRuleMatcher is
trivial or not. Another solution would be to use QVector.

Fixes: QTBUG-82547
Change-Id: Ia8b65350cd5d49debca9fffd15f79db872ed7c0c
Reviewed-by: David Faure <david.faure@kdab.com>
2020-03-03 11:44:27 -08:00
Ivan Čukić 14420b359b Add operator-> to the key-value iterator for QHash and QMap
This patch adds the arrow operator to the stl-like key-value
iterator (QKeyValueIterator) for QMap and QHash.

This allows using normal member access syntax it->first and it->second
instead of having to use (*it).first and (*it).second.

[ChangeLog][QtCore][Containers] Added operator-> to the key-value
iterator for QHash/QMap.

Change-Id: I9cfa6480784ebce147fcfbf37fec5ad0080e2899
Reviewed-by: Vitaly Fanaskov <vitaly.fanaskov@qt.io>
2020-03-03 20:25:19 +01:00
Volker Hilsheimer b4669b9190 QMenu: hide when a QWidgetAction fires the trigged signal
QMenu hides regularly when the user interacts with it, and manages
the firing of signals based on that. It ignores if a QAction that is
added to it fires the triggered() signal programmatically.

With QWidgetActions added to the menu, the menu usually doesn't get
interacted with directly, as the widget gets the input events.
Since the action can be added to multiple menus, neither widget nor
action can interact with the menus programmatically. Instead, the
menu needs to hide when the widget action triggers.

Test included that covers the case where a QWidgetAction is added
to multiple menus that are visible. Documentation updated, and
removed a redudant paragraph as a drive-by change.

[ChangeLog][QtWidgets][QMenu] a popup menu hides when a QWidgetAction
added to it fires the triggered signal.

Change-Id: I69f378426a45c2e46cebdaa5e6f1b21c8fb03633
Fixes: QTBUG-10427
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2020-03-03 18:52:11 +01:00
Alex Trotsenko 23785face5 QEventDispatcherWin32: unregister event notifiers on close
When QEventDispatcherWin32::closingDown() is called,
threadData->eventDispatcher is already nullptr and the application
will no longer process the events.

Thus, just as it works for socket notifiers and timers, it makes sense
to disable all active event notifiers at this point. Otherwise, it
seems possible that an object in signalled state can provoke a data
race in the notifier's callback on 'edp' pointer, if
QWin32EventDispatcher destructor is running simultaneously.

Task-number: QTBUG-64152
Task-number: QTBUG-70214
Change-Id: I6e77f3eeca1b0ea639021e73b86798cba0200ebf
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-03-03 19:44:01 +02:00
Edward Welbourne f03202b560 Fix missing return-type in doc of qfloat16::copySign()
Change-Id: I617081fe3335a85191be7882578644621d5ffede
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-03-03 18:35:21 +01:00
Edward Welbourne 466d32160a Suppress warnings where QString and its tests use SplitBehavior
This is a follow-up to commit 895939c7f9
to fix deprecation warnings it added.

Change-Id: I3d86655ec2c84c1bdcac9c70436075fc78f2f781
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-03-03 17:34:16 +00:00
Mårten Nordheim 8f8eb99991 QNetworkReply: Deprecate 'error' signal, use 'errorOccurred' instead
[ChangeLog][Deprecation Notice] QNetworkReply::error() (the signal) is deprecated; superseded by errorOccurred()

Change-Id: I4f1ef410fd22d34ddf87e89cc5709cc60703af95
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-03 18:25:57 +01:00
Laszlo Agocs dd0a197be4 QVulkanWindow: Remove queueCreateInfoModifier getter
This is inconsistent with the other similar functions in QVulkanWindow,
we do not provide getters for those either.

Change-Id: If764b49f4b26ff14a2fa908b8d5b37429047250c
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2020-03-03 18:25:57 +01:00
Laszlo Agocs bbc52a043d rhi: Add a way to communicate back the native image layout for a QRhiTexture
Relevant when doing custom rendering combined with QRhi, and only for
APIs like Vulkan, where image layouts are a thing.

As shown by demo apps, it is not currently possible to implement a
correct application that renders or raytraces into a QRhiTexture's backing
VkImage, and then uses that QRhiTexture in a QRhi-based render pass.
This is because QRhi has no knowledge of the image layout if it changes
due to commands recorded by direct Vulkan calls, and not via QRhi
itself. So, except for certain simple cases, one will end up with
incorrect image layout transitions in the barriers. (at minimum this
will be caught by the validation layer)

To remedy this, add a simple function taking the layout as int (we already
do the opposite in nativeTexture()).

Task-number: QTBUG-82435
Change-Id: Ic9e9c1b820b018f3b236742f99fe99fa6de63d36
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2020-03-03 18:25:57 +01:00
Laszlo Agocs eff6f77c1a Add since 5.15 to new QVulkanInstance function
Change-Id: Ib1fb6186a8c76d6848d5eda1756e7749383dae40
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2020-03-03 18:25:57 +01:00
Laszlo Agocs 0378332bc1 rhi: Use versioning in QShaderDescription serialization as well
This is the first time that we add something to QShaderDescription
after migrating to the non-JSON based serialization system. This now
involves checking the "qsb version" when deserializing.

Task-number: QTBUG-82624
Change-Id: I2bd875ef21e461559b878dccc5537cdfa43feaa2
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
2020-03-03 18:25:57 +01:00
Laszlo Agocs 4cff6e102d rhi: Include an arrayDims vector in InOutVariable too
We use the this struct to describe combined image samplers and storage
images as well. Especially with the former, it is not unlikely that we
will need arrays, so e.g. layout(binding = 1) uniform samplerCube
shadowCubes[8]. In this case the '8' is something that must be reported in
to the reflection information.

The new arrayDims member is expected to work exactly like the similarly
named member in BlockVariable.

Task-number: QTBUG-82624
Change-Id: I1fb8b0318906ff4c116c1a7ec23a399c6545c730
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
2020-03-03 18:25:57 +01:00
Laszlo Agocs bd2b77120e rhi: vulkan: Sanitize device extension handling
Instead of

qputenv("QT_VULKAN_DEVICE_EXTENSIONS", "VK_KHR_get_memory_requirements2;VK_NV_ray_tracing");

one can now do

params.deviceExtensions = { "VK_KHR_get_memory_requirements2", "VK_NV_ray_tracing" };

on the QRhiVulkanInitParams passed to QRhi::create().

The environment variable stays important for Qt Quick applications, which provide no
configurability for the QRhi construction (yet). On the other hand, applications using
QRhi directly can now also use the new approach to specify the list of device extensions
to enable.

In addition, take QVulkanInfoVector<QVulkanExtension> into use. There is no reason not to
rely on the infrastructure provided by QVulkanInstance. This also implies showing an
informative warning for unsupported extensions, instead of merely failing the device
creation. (applications will likely not be able to recover of course, but at least the
reason for failing is made obvious this way)

Task-number: QTBUG-82435
Change-Id: Ib47fd1a10c02be5ceef2c973e61e896c34f92fa3
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2020-03-03 18:25:57 +01:00
Laszlo Agocs 5bbc9986f9 rhi: d3d: Use native resource binding mapping table when present
Newer versions of QShaderBaker will now use distinct, zero-based b, t+s,
and u register spaces in the generated HLSL source. If this is the case,
the native resource binding map (which so far we only used with Metal)
contains the SPIR-V binding -> HLSL register binding mappings.

This way we won't end up with invalid resource binding attempts (consider
that e.g. D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT is only 16), just
because, for example, a combined image sampler had a binding of 18
which then got blindly mapped to s18 and t18 in HLSL.

Task-number: QTBUG-82472
Change-Id: I8bdcb5378634cf159f6367424582f9e9e5821c8e
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
2020-03-03 18:25:56 +01:00
Laszlo Agocs 753e4d82be rhi: Execute pending host writes on nativeBuffer() query
Otherwise it is impossible to write an application that pulls out the
VkBuffer for a Dynamic QRhiBuffer, and then uses it with custom Vulkan
operations that read from the buffer. More precisely, the problem arises
only if the buffer in question is not used in combination with any QRhi
operations, because in that case there is nothing that would trigger
doing the host writes queued up by a resource batch's updateDynamicBuffer().

Task-number: QTBUG-82435
Change-Id: Ieb54422f1493921bc6d4d029be56130cd3a1362a
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
2020-03-03 18:25:56 +01:00
Laszlo Agocs 7b8616859a Do not constantly create new surfaces with MoltenVK on macOS
Querying the VkSurfaceKHR for a window is expected to create the surface once
and then return the same value afterwards.

Task-number: QTBUG-82600
Change-Id: Ib3e99dfca4d940de1a14348eb1909d372a7dde04
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-03-03 18:25:56 +01:00
Laszlo Agocs 23fd7bdf01 macOS: MoltenVK: Pass in the layer instead of the view
Surface creation may be triggered on a thread other than the main thread.
To enable this, MoltenVK also accepts the CAMetalLayer instead of the NSView.
See https://github.com/KhronosGroup/MoltenVK/pull/258

Task-number: QTBUG-82600
Change-Id: I7b925210d05235baf04441682760f09fe58d8144
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-03-03 18:25:56 +01:00
Cristián Maureira-Fredes 3f7d087d33 uic: Add pass to empty functions
When there are no translations on the UI file,
the function was left empty but without a 'pass'
statement, generating a SyntaxError,
this change includes it to avoid problems while
using the generated Python file.

Fixes: PYSIDE-1234
Change-Id: I30482a95c95fb4b4f4456531946a79c960d76318
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-03-03 14:50:35 +01:00
Rolf Eike Beer b4e17a4864 QImageIOPlugin: fix typo in class documentation
Change-Id: Ic459ddc861a33501940e5aea5d5455455af5c584
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2020-03-03 14:14:09 +01:00
Mårten Nordheim e65345afb1 MSVC: Suppress warning C4910 for exported extern templates
Warnings like the following started showing up in dev after
3c0cd7566c. Not a problem in CI but it is
treated as an error in develop-builds, suppress them for now since
it still manages to build.

warning C4910: 'QtPrivate::QMetaTypeForType<bool>':
'__declspec(dllexport)' and 'extern' are incompatible on an explicit instantiation

Amends 3c0cd7566c

Task-number: QTBUG-82403
Change-Id: I1ee6731afafd4636102a49555d4d892f39a21bc7
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-03-03 14:14:06 +01:00
Fabian Kosmale cf000d080c QMetaType: support manual unregistration
QtDeclarative registers types in plugins, and supports un- and reloading
those plugins. Those types would leave pointers to unmapped memory in
the type registry on macOs, which would later cause crashes.
We therefore add private API to manually remove the types from the
registry, which can then be used in declarative.
Lastly, as a precaution for re-registering the types, we reset
QMetaTypeInterface::typeId to 0, as the memory is most likely not reset
to 0 when reloading the plugin.

Change-Id: Ic3fc08759f3d4481dca44a91b33baf3ea9e7198e
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2020-03-03 14:14:00 +01:00
Qt Forward Merge Bot 2f2d870fdd Merge "Merge remote-tracking branch 'origin/5.15' into dev" 2020-03-03 14:13:53 +01:00
Qt Forward Merge Bot 63312fe2ec Merge remote-tracking branch 'origin/5.15' into dev
Change-Id: If36d96c0fef3de5ab6503977501c55c62a2ecc97
2020-03-03 14:13:02 +01:00
BogDan Vatra 6806cb341c Android: fix apk generation on Android API 23+
Starting with Android API 23+ gradle enables uncompressed native libs by default.
We must set android.bundle.enableUncompressedNativeLibs = false to gradle.properties,
to force it to compress them and extract them on the device.

Fixes: QTBUG-80766
Change-Id: Ia6d8d9179a341bbe7f8dc254a3b31d2ee8d7a5d7
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2020-03-03 13:37:21 +02:00
Andy Shaw bf059f6133 Android: Include the resConfigs so that the package can be uploaded
The Google Play Store requires the resConfigs to be set to something
valid otherwise it will not accept the package, so we default it to "en"
to ensure it is valid.

Fixes: QTBUG-81735
Change-Id: I1180481a1e5b88057aed2417716ca4d334080c00
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2020-03-03 12:36:43 +01:00
Mårten Nordheim b30b3248ca QMap: undeprecate QMap::count(Key)
For compatibility with std::map

Change-Id: Icba536244aadcad97c59dfd4bb22a7fdea881a7b
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-03 11:41:42 +01:00
Mårten Nordheim bac89e2f49 QMap/QHash: Use versioned deprecation macro
Because then it can be configured

Change-Id: Ib4c20dd64bedfe2ebadf13283698c50d4c0bc527
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-03 11:41:38 +01:00
Mårten Nordheim f4fca8697f Undeprecate QHash::count(Key)
For compatibility with std::unordered_map. Spotted in the API review.

Change-Id: Ic34600d55baebcbbf115c1090cd555984037c44c
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-03 11:41:34 +01:00
Lars Knoll c3fc9a24d8 Avoid UB in QList::removeAt()
Always keep the out of bounds check for backwards compatibility,
but warn about it, so that we can remove it in Qt 6.

Amends commit ebf695bc77

Change-Id: I3f1e7e8f9f20feb0b0f06ff9083c26682f1c7d3b
Reviewed-by: Richard Öhlinger <richard.oehlinger@adbsafegate.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-03-03 11:39:56 +01:00
Qt Forward Merge Bot dd704d4498 Merge "Merge remote-tracking branch 'origin/5.14' into 5.15" 2020-03-03 11:39:56 +01:00
Shawn Rutledge 761f46f8b5 Remove overrides of QImageIOHandler::name()
We will remove the virtual base class function in Qt 6.
For now, name() returns format().

Change-Id: I1597e823b859e4db148b3e5ac0f1c15350a582eb
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
2020-03-03 11:39:56 +01:00
Allan Sandfeld Jensen bbe71efc23 Only declare comparison operators for QVector when comparable
This avoid SFINAE from incorrectly assuming QVectors of
non-comparable types has them.

Change-Id: Ie44eb7873384a0f41a6b8160c340b71ea25839dd
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-03-03 08:27:21 +01:00
Edward Welbourne 275401f580 Warn about Q(Date|Time)+ switching to C locale in Qt 6
Change-Id: I3a3afc3fb4ddca405a75097feb15aee0e72b3b19
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-03-03 07:38:06 +01:00
Qt Forward Merge Bot 60ec012d8d Merge remote-tracking branch 'origin/5.14' into 5.15
Change-Id: I851c0328c3c38ea67b5ad115b205ac6a1262706e
2020-02-29 01:00:44 +01:00
Mårten Nordheim fbebc93617 Deprecate public bearer classes
The WARNING_PUSH/POP in QNetworkProxy is needed because it triggers
a warning when compiled which means a warning gets printed under
compilation which means tst_bic fails.

[ChangeLog][Deprecation Notice][QtNetwork] QNetworkConfigurationManager,
QNetworkConfiguration and QNetworkSession are deprecated, to be removed
in Qt 6.

Change-Id: Ife87722045ea10adf667388a1bf94c4f9bc8d5f0
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2020-02-29 00:39:27 +01:00
Volker Hilsheimer a53a52a631 Name method parameters in declaration, even when it's obvious
As pointed out during header review. Makes Qt more IDE friendly.

Change-Id: Icb610dba39e39ffd6674c79d9c6e087294788489
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2020-02-28 20:37:01 +00:00
Volker Hilsheimer 2090b770da Make QProcess::splitCommand accept QStringView, as per header review
A static function that only parses the string to create the list, so
no need for a QString overload.

Change-Id: I1df297adb795095d6eec94ccfcad52498178a7b1
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2020-02-28 21:36:51 +01:00
Jarek Kobus 5ebb03c476 Remove flagBits from QMatrix4x4
Change-Id: I14a22f3272b4793abd1e1b448351c94d3e07e946
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-02-28 18:08:45 +01:00
Jarek Kobus 543e87c65a Bump the datastream version for Qt 6
We don't support obsoleted QMatrix type anymore.

Change-Id: Id412510aa1ad08d6e89a73da3317152e6dfa8f57
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-02-28 18:08:45 +01:00
Andy Shaw 7e5f38aec6 Android: Add support for getting information about content uris
This enables things like size(), exists() to work with Android content
uris with the provided uri given from a filedialog. It is expected that
it is always a full path due to the nature of content uris, so relative
paths will not work.

Change-Id: I9c9ea42833677eb9d937b33e9dd42ee2a7d9c7c5
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2020-02-28 16:37:34 +02:00
Allan Sandfeld Jensen ca9de96233 Avoid using deprecated QTabletEvent::device() method
It was renamed to QTabletEvent::deviceType() in
882f340f62.

Change-Id: I070404bfc9a04144ae3565bfa3cc3a016040a07d
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2020-02-28 14:37:12 +00:00
Edward Welbourne 895939c7f9 Deprecate QString::SplitBehavior in favor of Qt::SplitBehavior
This requires changing which of the two families of methods gets to
take a default argument for its behavior.

Task-number: QTBUG-81853
Change-Id: I6759bedd9af364d6e12bb39cd539b5dcba37027e
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-02-28 15:37:12 +01:00
Edward Welbourne b47cf3fe2d De-inline Qt::SplitBehavior splitters of QString and QStringRef
Convert the QString::SplitBehavior variants to call them, rather than
the other way round and convert the internal infrastructure to use
Qt::SplitBehavior, ready to deprecate the QString::SplitBehavior
versions without generating intenal warnings.

Task-number: QTBUG-81853
Change-Id: Ia6b78881c3d0e30a7bbd4dfd00cc15a407f448a2
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-02-28 15:37:11 +01:00
Edward Welbourne 305ddbeb5b Use Qt::SplitBehavior in preference to QString::SplitBehavior
The Qt version was added in 5.14 "for use as eventual replacement for
QString::SplitBehavior." Move another step closer to that goal.

Change-Id: I399b5ea56e9255e775ca1746632f7421519a6616
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-02-28 15:37:11 +01:00
Edward Welbourne 00f0863cbe Core: Use Qt::SplitBehavior in preference to QString::SplitBehavior
The Qt version was added in 5.14 "for use as eventual replacement for
QString::SplitBehavior." Move another step closer to that goal.

Change-Id: I446f9ddc8f8de4a0b79b09edb44f7c1496fbc33f
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-02-28 15:37:11 +01:00
Edward Welbourne 8c613ed74b SQL: Use Qt::SplitBehavior in preference to QString::SplitBehavior
The Qt version was added in 5.14 "for use as eventual replacement for
QString::SplitBehavior." Move another step closer to that goal.

Change-Id: Ia4c698df60648c85c8e6132641e5ea7bc553129a
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2020-02-28 15:37:11 +01:00
Edward Welbourne c158f881b3 Docs: Use Qt::SplitBehavior in preference to QString::SplitBehavior
The Qt version was added in 5.14 "for use as eventual replacement for
QString::SplitBehavior." Move another step closer to that goal.

Applied suitable wrapping round various char and string literals,
since docs are meant to show best practice.

Change-Id: Ie061905fad26f9b4dda3eedba4612704f0a19126
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-02-28 15:37:11 +01:00
Jan Arve Sæther 8de66e1f24 Remove a "### Qt 6" that I forgot to remove
amends commit 5e83a2eed2

Change-Id: I792d5d71d8c5a8b034d334de31dcd9bacfc53fa9
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-02-28 15:37:11 +01:00
Friedemann Kleint 08d5059320 Fix geometry handling for native child windows
Don't move the native child window position for native child windows.

Initial-patch-by: Błażej Szczygieł <spaz16@wp.pl>
Task-number: QTBUG-82312
Fixes: QTBUG-79166
Change-Id: I117ef08da13c8e90ff60cf034126c9efdc17b836
Reviewed-by: Błażej Szczygieł <mumei6102@gmail.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2020-02-28 13:43:01 +01:00
Mitch Curtis 981c1fe15f QDebug::toString(): use nospace()
The intended use cases for toString() are the situations where you
can't use operator<<, such as QVERIFY2, Q_ASSERT_X, etc., which means
that it will often be used as an argument to e.g. QString::arg(), where
the user has control over the structure of the message. For that
reason, adding an extra space to the end is not necessary and just gets
in the way.

This amends 658b9697f9.

Change-Id: I0695e6809026a0f92ed783899da80de4fa2a1684
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-02-28 10:16:15 +01:00
Lars Knoll c946b07d9c STL compatibility: erase() should take a const_iterator as argument
erase() takes a const_iterator as argument in std::vector. We should do
the same to facility better interoperatbility.

Fixes: QTBUG-81915
Change-Id: I60ffb0eb45955be8e3e6aeaa56998f7c668fed09
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-02-28 10:07:01 +01:00
Johan Klokkhammer Helsing eca884a483 Remove various traces of QGL
Removed friend declarations, some check etc.

Task-number: QTBUG-74408
Change-Id: I1c5b46a564beee2c1d894678b908803f91df68aa
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2020-02-28 09:59:39 +01:00
Lars Knoll 60f12c58a0 Merge "Merge remote-tracking branch 'origin/5.15' into dev" 2020-02-28 09:53:26 +01:00
Lars Knoll a450cce6b6 Merge remote-tracking branch 'origin/5.15' into dev
Change-Id: I469b0501cc65fc5ce4d797a69ae89405cc69c7f8
2020-02-28 09:48:30 +01:00
Shawn Rutledge 7447e2b337 QTextMarkdownImporter: fix use after free; add fuzz-generated tests
It was possible to end up with a dangling pointer in m_listStack.
This is now avoided by using QPointer and doing nullptr checks before
accessing any QTextList pointer stored there.

We have 2 specimens of garbage that caused crashes before; now they don't.
But only fuzz20450 triggered the dangling pointer in the list stack.
The crash caused by fuzz20580 was fixed by updating md4c from upstream:
4b0fc03077

Change-Id: I8e1eca23b281256a03aea0f55e9ae20f1bdd2a38
Reviewed-by: Robert Loehning <robert.loehning@qt.io>
2020-02-28 09:31:59 +01:00
Jarek Kobus 1ba46c9b63 Get rid of QMatrix
Task-number: QTBUG-81628
Change-Id: Iad66bfdf49b9ee65558a451108c086fc40dc3884
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-02-28 08:57:57 +01:00
Kai Koehne e1b6c67bcd Doc: Fix punctuation for QMetaType::QMetaType()
Change-Id: I99d78ae475844f3d145952fd789c5753979745f7
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2020-02-28 08:41:36 +01:00
Kai Koehne 4e51dc440f Doc: Fix documentation for deprecated methods in QJsonDocument
\deprecated has to stand on its own - qdoc will ignore anything on the
right side of it.

Change-Id: Ib698aa66826d6430bbafd926a9c64febd5463c5c
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-02-28 08:41:36 +01:00
Kai Koehne e939d34a9f Doc: Fix wording of operator=!(QMetaType, QMetaType()
Change-Id: I02ca10f968acb42a6e0d793cad78d7d0baa7f472
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2020-02-28 08:41:36 +01:00
Kai Koehne da059d0382 Doc: Fix punctation in QPdfWriter::addFileAttachment
Change-Id: Ic00ffd88ecbaa88409bf968f6794fad6f53a2f0e
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2020-02-28 08:41:36 +01:00
Kai Koehne 6d5d467bcf Doc: Replace 'In alternative' with 'Alternatively'
Amends b19220d17f

Change-Id: Ic6869ce77440b43b30248f1130dabe8cc1b231e9
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
2020-02-28 08:41:36 +01:00
Alexander Akulich 4c86e667d2 Revert "QNetworkReply: deprecate the 'error' getter"
This reverts commit ccb2cb84f5 and
commit 0f568d0a67.

The patches fix ambiguity between a getter and a signal by changing the
getter name, but we still have to rename the signal to follow the signals
naming convention.

Revert the commits to keep the getter as is and change the signal name instead.

Change-Id: Iddbab7c33eea03826ae7c114a01857ed45bde6db
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-02-28 07:21:14 +03:00
Andy Shaw eaf7f572bf Android: Don't recurse into directories inside the assets when iterating
When iterating, it should only return what is in the specified path and
not the contents of the sub-directories inside the given path in
addition.

Change-Id: Iad56f075c22fdf1c633582e37444e26520c24a73
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2020-02-27 22:56:26 +01:00
Andy Shaw 09c5dfb732 Windows: Enable closing the system tray menu when clicking outside of it
In order for the system to close a menu when clicking outside of it or
outside of the controlling window for the system tray then it needs to be
at the foreground right before the menu is tracked. This makes it act
like other system tray menus then.

Change-Id: I663670c506cfd1e2ba59cd3e75b12e1f8ba17c33
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-02-27 22:56:26 +01:00
Kai Uwe Broulik c2a13ae501 QConcatenateTablesProxyModel: Add getter for sourceModels
Currently, there's no generic way to get the source models as there's only
calls to add or remove them.

Change-Id: I23cdef7c93328b58a80ec4659b44073f8ff05088
Reviewed-by: David Faure <david.faure@kdab.com>
2020-02-27 21:10:21 +01:00
Thiago Macieira ede8545245 QMimeXMLProvider: add missing semi-colon in the #else case
Fixes: QTBUG-82547
Change-Id: Ia8b65350cd5d49debca9fffd15f74e22c0536805
Reviewed-by: David Faure <david.faure@kdab.com>
2020-02-27 11:06:02 -08:00
Assam Boudjelthia ecae4732a7 Android: QFileDialog::selectedFiles() check isLocalFile()
call toLocalFile() only if the returned QUrl::isLocalFile() is true,
otherwise return toString(). Same thing as done for QFileDialog static
functions as in 1576f81baa.

Change-Id: I3f8cab385e32d0943587b3382a636ea3a168d518
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2020-02-27 18:37:43 +00:00
Lars Knoll bb802b4318 Merge "Merge remote-tracking branch 'origin/5.14' into 5.15" 2020-02-27 19:35:43 +01:00
Volker Hilsheimer 924b97d6ab Fix QDateTimeEdit's handling of invalid time in dst gap
During a spring forward, a time-zone omits an hour. A QDateTime with
such an hour is invalid, but QDateTimeEdit's handling of this invalid
time was not done correctly.

With this fix, up/down changes of any field that would result in an
invalid date-time corrects the time to be valid, while leaving as
much as possible of the user-entered data unchanged. To do that, we
rely on QDateTime::toMSecsSinceEpoch to return a value even for such
an invalid time, which then can be used to construct a valid
QDateTime.

Edits that would result in an invalid hour are reverted to the
previous when pressing return, if correctionMode is
CorrectToPreviousValue. This change also implements support for
CorrectToNearestValue, which uses the same mechanism as when stepping
over an invalid time.

Include a test that verifies that the various interactions result
in a reasonable value. Since QDateTimeEdit does not respect the
timezone or timespec of the QDateTime it is initialized with, we
have to find the first hour of daylight saving time for a year
that we know works for most time zones. Failing that, we have to
skip the tests. Verified in a wide range of time zones.

Change-Id: I05b906ae3b5f6681891d23704f00f9c10cd479ae
Fixes: QTBUG-79803
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2020-02-27 19:35:28 +01:00
Volker Hilsheimer 31b06a0437 QWizard: deprecate visitedPages and add visitedIds instead
As per the ### Qt 6 comment. A method visitedPages should, following
the convention of the other QWizard APIs, return a list of QWizardPage
pointers. Since the method returns a list of IDs, visitedIds is the
correct name.

[ChangeLog][QtWidgets][QWizard] visitedPages has been deprecated, use
visitedIds instead.

Change-Id: Ifdb94adf093be14cb48c84cb40818c55ff5189a0
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
2020-02-27 19:35:19 +01:00
Volker Hilsheimer cb390719c6 Remove ### Qt 6 comment that we won't address
QStatusBar is 22 years old, and those protected APIs have been around
ever since. There is no good reason to make them private now.

Change-Id: I62624800d8e287e21535967aa6a861b98cae97d5
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
2020-02-27 19:35:08 +01:00
Lars Knoll 5c6c0289f0 Merge remote-tracking branch 'origin/5.14' into 5.15
Change-Id: I4212d070d5752275085e754b96f0392113604dba
2020-02-27 14:22:01 +01:00
Alexander Akulich cb26a4da69 QAbstractSocket: deprecate 'error' signal, use 'errorOccurred' instead
[ChangeLog][Deprecation Notice] QAbstractSocket::error() (the signal) is deprecated; superseded by errorOccurred()

Change-Id: I11e9c774d7c6096d1e9b37c451cf0b99188b6aad
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-02-27 13:56:45 +01:00
Cristián Maureira-Fredes de1d51a3fd uic: handle header tag for python imports
Fixes: PYSIDE-1233
Change-Id: Id2b6e2a8b833da6ea4417d06643b2f7b045515a9
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-02-27 11:19:39 +01:00
Edward Welbourne 0ad4f86729 Purge QRegExp use in QDateTime's rfcDateImpl()
Replace with a parser which actually does the job right, fixing
various infelicities in the parsing in the process.
Make the parser strict about formatting.

Adjusted tests to match. Fixed some QTime invalidity tests to each
test only one invalidity at a time (the invalid year and day tests
also used an invalid month).

[ChangeLog][QtCore][QDateTime] The parser for the Qt::RFC2822Date
format is now stricter, requiring the text to exactly match the form
of one of the relevant formats. A valid date or time will still be
parsed, even if the other part of the content is invalid, as long as
it (and any offset, if present) has the right form. In particular, the
parser now rejects texts with trailing cruft (other than space).

Fixes: QTBUG-80038
Change-Id: Id25675afd75f82f6351f20e79f0154f3ceda35ac
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-02-27 10:48:25 +01:00
Edward Welbourne af837734b2 Pass QDate and QTime as value classes
It's what they are, so const refs are needless burden.
In the process, consolidate two of the affected methods (one of which
just adds another argument to the other's signature) into one.

Change-Id: I80de35ffe078a652d1999889dede0b10302abaa9
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-02-27 10:48:25 +01:00
Oliver Wolff 529cfe4e22 qwindowswindow: Fix screen changes between different DPI screens for native windows
When asynchronous events are used for notifications about screen changes
it is possible that we run into a race condition where the scale factor
has not yet been updated for the new screen. This results in a wrong
geometry being set for the window that is moved between the screens.
We do not have that problem with synchronous events.

Change-Id: I4eb6d2a7cb49517d271901b479f973e273a0926a
Amends: 7eed1e40d4
Task-number: QTBUG-65580
Fixes: QTBUG-82312
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-02-27 09:32:13 +00:00
Lars Knoll e30aa59a89 Fix a quadratic behavior in the BiDi algorithm
Reset the lastETPosition after we changed DirET to DirEN,
to avoid iterating over the same set of characters many times.

Change-Id: Ib4113d0ba87ad70fc6bb386632eb094f943c080d
Reviewed-by: Robert Loehning <robert.loehning@qt.io>
2020-02-27 09:59:08 +01:00
Allan Sandfeld Jensen 25677ec4b2 Fix bounding box of zero-width entities in QFontEngineFT
Freetype can give us non empty bounds for zero-width characters,
this change just makes us skip metrics of characters already found to
not contribute to text advance. The coretext and windows
font-engines already uses the already calculated advance.

Change-Id: I82b3521a4fb92614be509be5982cd5ab9c1eb7de
Fixes: QTBUG-58854
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2020-02-27 08:59:08 +00:00
Christian Ehrlicher 5a03dfa249 QTextOption: fix handling Qt::AlignBaseline
QTextOption stores the Qt::Alignment flag in a eight bit bitfield. When
Qt::AlignBaseline was added the bitfield was not extended so the newly
used ninth bit is not stored in QTextOption.
Fix it by using one of the unused bits. Simply extending the bitfield is
not binary compatible so this has to wait for Qt6.

Fixes: QTBUG-74652
Change-Id: I2539f5619ffe729459102fa5406fb6c0dd463ea1
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2020-02-27 06:51:53 +01:00
Alexandra Cherdantseva 0efdf54a16 wasm: fix texture leak when window is destroyed in a different context
Reproduce:
Show first window in first canvas;
Show second window in second canvas;
After screens are rendered destroy first window in first canvas

Change-Id: Ifbeb4824c1fdedecf24d5d20e58613d15c066420
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2020-02-27 01:53:57 +03:00
Sze Howe Koh e8793476ac Doc: List alternative ways to get the MySQL C Connector
The C Connector does not appear to be offered as a component in the
MySQL 8.0.19.0 installer.

Task-number: QTBUG-82187
Change-Id: I4b1ef83cca68e7bf6dd032ba35c0784354d7fed3
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
2020-02-27 06:30:19 +08:00
Volker Hilsheimer c6dd2e2367 Document the behavior of QLineEdit::inputMask correctly
QLineEdit is unicode, and uses QChar::isLetter and QChar::isNumber to
evaluate whether an input character is valid. There is no test for ASCII
ranges, or converting of input characters to ASCII, so the documentation
was wrong.

[ChangeLog][QtWidgets][QLineEdit] the inputMask property has allowed any
Letter or Number category character for the respective mask characters,
not just ASCII. The documentation has been updated accordingly.

Change-Id: Ied93cf6ddd334ac91bfbc275107a8eb83d231d80
Fixes: QTBUG-82291
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
2020-02-26 23:26:44 +01:00
Volker Hilsheimer 1fcb06f79a Documentation: correctly use see-also tags to link to related members
Change-Id: I764eb4730067cd704866191516dc4e8dd1820760
Reviewed-by: Nico Vertriest <nico.vertriest@qt.io>
2020-02-26 23:26:13 +01:00
Volker Hilsheimer 469c333840 QComboBox: deprecate SizeAdjustPolicy::AdjustToMinimumContentLength
As per ### Qt 6 comment and pre-existing documentation, one of the
other enum values should be used anyway.
Only usage in QtWidgets is in QFileDialog, replace it there with
appropriate alternative.

[ChangeLog][QtWidgets][QComboBox] the SizeAdjustPolicy value
AdjustToMinimumContentLength is deprecated, use AdjustToContents or
AdjustToContentsOnFirstShow instead.

Change-Id: I22deaa31fbb6c09e87c814e120eb7ee27c177ea9
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2020-02-26 23:09:20 +01:00
Volker Hilsheimer f15aa1fd84 QDockWidget: mark AllDockWidgetFeatures enum value as deprecated
As per ### Qt 6 comment, and the documentation which already suggests
to specify the individual flags instead.

Change-Id: Id236b7b13024a15fc7ad483b9481361b2ac43a02
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2020-02-26 23:09:06 +01:00
Lars Knoll fd4be84d23 Add an expansion limit for entities
Recursively defined entities can easily exhaust all available
memory. Limit entity expansion to a default of 4096 characters to
avoid DoS attacks when a user loads untrusted content.

Added a setter and getter to allow modifying the expansion limit.

[ChangeLog][QtCore][QXmlStream] QXmlStreamReader does now by default
limit the expansion of entities to 4096 characters. Documents where
a single entity expands to more characters than the limit are not
considered well formed. The limit is there to avoid DoS attacks through
recursively expanding entities when loading untrusted content. The
limit can be changed through the QXmlStreamReader::setEntityExpansionLimit()
method.

Fixes: QTBUG-47417
Change-Id: I94387815d74fcf34783e136387ee57fac5ded0c9
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-02-26 22:08:38 +01:00
Allan Sandfeld Jensen e5e969c00c Prepare QGuiAction::checked property for declarative use
Make the order checkable and checked are set in insignificant, by
storing ignored checked value for un-checkable actions.

Also gives checkable its own changed signal.

Change-Id: If03db7c92481a542b6220604860abddb322bb517
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2020-02-26 22:02:20 +01:00
Mårten Nordheim bf377dd1af Doc: Rename TransferTimeoutPreset to DefaultTransferTimeoutConstant
A couple missed instances.

Amends 0394961f95

Change-Id: I41d47d1476c6688ca8a40b1ca62131891b9dec28
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-02-26 21:30:44 +01:00
Alexander Akulich 6d18e4a2b8 Revert "QAbstractSocket: deprecate 'error' member-function"
This reverts commit 94b3dd77f2.

The patch fixes ambiguity between a getter and a signal by changing the
getter name, but we still have to rename the signal to follow the signals
naming convention.

Revert the commit to keep the getter as is and change the signal name instead.

Change-Id: I0dd60cf1ae9d1bd95beeb8ad58661ca4b1fb63b9
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-02-26 23:07:52 +03:00
Christian Ehrlicher e1920f6593 QShortcut: fix ambiguity with new PMF ctors
The new PMF ctors introduced with a4751f8824
created some ambiguities with existing old-style connects. Fix it by
explitly checking if the given pointers are pointers from QObject
derived classes.

Fixes: QTBUG-82415
Change-Id: I70d51a6d50384fe6b5083fa3b94492ab6ed97086
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2020-02-26 20:50:18 +01:00
Qt Forward Merge Bot 75c0ffaf6d Merge remote-tracking branch 'origin/5.15' into dev
Conflicts:
	examples/network/bearermonitor/CMakeLists.txt
	examples/network/CMakeLists.txt
	src/corelib/tools/qlinkedlist.h
	src/sql/kernel/qsqldriver_p.h
	src/sql/kernel/qsqlresult_p.h
	src/widgets/kernel/qwidget.cpp
	src/widgets/kernel/qwidget_p.h
	tests/auto/network/socket/platformsocketengine/tst_platformsocketengine.cpp
	tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp
	tests/auto/tools/moc/allmocs_baseline_in.json

Change-Id: I21a3c34570ae79ea9d30107fae71759d7eac17d9
2020-02-26 18:39:21 +01:00
Mårten Nordheim f949f33688 QHash/QSet: Base iterator tag on warning version rather than deprecation
If you have deprecation warning version set to 5.15 and the
"disable deprecated before" set to something lower then it will complain
about usage of operator-- inside std::distance which is used in our
generic collection iterator.

This also required changing over to the QT_DEPRECATED_VERSION_5_15 macro
so that the deprecation warning would also be disabled.

This is a possible work-around - change the iterator tag if it would
trigger a warning.

Fixes: QTBUG-82397
Change-Id: I3e0ecae5edebba2a3560e7c3785bd9d1a6d0076d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-02-26 10:09:44 +01:00
Marc Mutz e5acaa12e3 QObject: treat T* -> bool conversions as narrowing
Following wg21.link/LWG3228, it was found that a proper variant fix
requires that T* -> bool conversions be treated as narrowing
conversions in subclause wg21.link/dcl.init.lst. wg21.link/P1957R2 was
accepted in Prague 2020 as a DR and retroactively applies to older C++
standards.

Since we hard-code the algorithm of [dcl.init.lst], we can and must
add this manually.

[ChangeLog][QtCore][QObject] For the purposes of
QT_NO_NARROWING_CONVERSIONS_IN_CONNECT, pointer
(incl. pointer-to-member) to bool conversions are now considered
narrowing. This matches the resolution of a defect report in C++
itself.

Change-Id: Ifa9a3724c9c8ccd3dd6614928dbbe37477591dc1
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
2020-02-26 07:48:47 +00:00
Allan Sandfeld Jensen 23c5fc1d2f Improve argument name for std::function argument
Less \a fun though.

Note using references in this API would just duplicate the API, but
still end up with a copy when creating the QRunnable. By having the
copy apparent directly in the API, we not only save the duplication,
we also hint to the caller to use move if they want to avoid a copy.

Change-Id: If11476d4b38853839c1e87e0339807a1798fc875
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-02-26 06:25:20 +01:00
Shawn Rutledge 165d2f09cd QScreen::virtualSiblingAt(): pass QPoint by value
It's too small to bother with passing by reference.

Change-Id: I793678f5ae352b7f24d2c7e758dc75827c2190df
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-02-26 06:25:04 +01:00
Qt Forward Merge Bot 226533fd85 Merge remote-tracking branch 'origin/5.14' into 5.15
Change-Id: Iad459349ea8b4090d79b4771bfff8f656a8a8189
2020-02-26 01:00:08 +01:00
Allan Sandfeld Jensen 462c2745a5 Add replacement message to deprecation of QImage::alphaChannel()
Change-Id: I1d8afecc6da5df6fef72ecc59d14ac455c43d9a6
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-02-25 19:53:27 +01:00
Andre de la Rocha a434880e62 Rename AA_MSWindowsDisableVirtualKeyboard to AA_DisableNativeVirtualKeyboard
Renaming the attribute to make it platform-independent, since in spite
of currently being supported only on Windows, it may be eventually
supported on other platforms where it may be useful.

Task-number: QTBUG-76088
Change-Id: Id98ccd7a34e1c43b1f2274efce6ab4b4aff24f03
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-02-25 19:53:27 +01:00
Timur Pocheptsov 0394961f95 Rename TransferTimeoutPreset to DefaultTransferTimeoutConstant
Found in API review. Replacing with the suggested name which is more Qt-ish.
And also preventively fix the name to contain its enum's name to follow the
conventions.

Change-Id: I00b510e36ccc831f107ecc3c79943d617726b4fb
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-02-25 19:53:27 +01:00
Volker Hilsheimer 66e0079569 QStyle: deprecate enum values that are marked for removal in Qt 6
Those enum values are not used by widget code. Exception is
PE_PanelItemViewRow, which is used by all item views, and no replacement
is provided. So removing the ### Qt 6 comment from this value.

Change-Id: Id4371bda5c3b14e3565c87ab233ee621d995f081
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2020-02-25 19:53:27 +01:00
Topi Reinio 95aec76e31 Doc: Fix documentation warnings for Qt Core
- QCborError: Classes cannot relate to header files; use \inheaderfile
  instead and link to the class from header file documentation.

- QRecursiveMutex: QDoc doesn't allow shared documentation comments
  for duplicating \fn docs between the base and deriving classes.
  Remove the sharing, the function documentation is available under
  'All Members' doc for QRecursiveMutex.

- QMultiMap: unite() and one overload of insert() were not recognized
  because their definitions in the same header file interfered with
  QDoc - use Q_CLANG_QDOC macro to comment them out, and tag \fn
  comments to ensure that the function documentation is matched.

Change-Id: Ic96869904a72d92453e4ffa6901000147571969b
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-02-25 19:53:27 +01:00
Thomas Sondergaard e59e5643b5 Use QT_DEPRECATED_X instead of Q_DECL_DEPRECATED_X
Allow deprecation warnings to be controlled with
QT_NO_DEPRECATED_WARNINGS.

Fixes: QTBUG-82424
Change-Id: I6df55ee2abaf4c141ac9b0e7661e46ba3706b20e
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-02-25 18:58:18 +01:00
Andy Shaw ce55667b62 Set the size of the buffer so it is big enough to hold the contents
This will prevent a crash later on when it tries to assign to an index
in a QString that has not been allocated.

Fixes: QTBUG-81950
Change-Id: Ia0b5648a18f15594eeca07d234bedadcfeb266ac
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-02-25 18:58:17 +01:00
Volker Hilsheimer 34a67b3652 Remove misplaced backslash from documentation
A \c{} section is already rendered using monospace, no need to escape
the \nullptr keyword explicitly.

Change-Id: I004a409892809e968c7a73c68a5b3c54a4680425
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-02-25 18:58:17 +01:00
Leander Beernaert 92ee6dcec0 CMake: Generate Win32 Resource Files
Add support to generate win32 resources files through CMake. The
functionality is implemented via qt6_generate_win32_rc_file() in
Qt6CoreMacros.cmake.

Currently qt_add_test(), qt_add_module() and add_qt_gui_executable()
call the above function when building on windows. The function itself
has been written as part of the public API so it can be called from
other locations if required.

Change-Id: Id5388b3bf9a2068b36780d8268306326f990778c
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-02-25 16:38:45 +01:00
Allan Sandfeld Jensen 59d1fa25d5 Make QDebug constructors explicit
So that QDebug objects are not created accidentally.

Change-Id: I73f927fc89c060c838870543be65ea0fd6526c34
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-02-25 15:24:59 +00:00
Joerg Bornemann 119ffd4781 CMake: Port the reduce-relocations feature
As reduce-relocations implies bsymbolic_functions, we also add the
-Bsymbolic-functions linker flag.
Also, handle the .dynlist files that are passed to the linker by
bsymbolic_functions.prf in the qmake build.

Change-Id: I535c33fba888596d2f8975b16864bbe9f0a7caa4
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-02-25 15:47:50 +01:00
Jan Arve Sæther aa9c6f9832 Introduce QGraphicsLayoutItem::isEmpty()
This change does basically two things:
* Renames QGraphicsGridLayoutEngineItem::isIgnored() to
  QGraphicsGridLayoutEngineItem::isEmpty() to be consistent with
  QLayoutItem::isEmpty()

* Creates a new public API function QGraphicsLayoutItem::isEmpty() so
  that there is a public method of overriding the behavior.

Change-Id: I771a8fb429f9764a75e220f0ff9d07f578f981d3
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2020-02-25 15:43:16 +01:00
Alexandru Croitor 26059d1b9b CMake: Allow building bundled 3rd party libraries in qtbase
A few things are needed to accomplish that:

- the python scripts do not ignore certain system_foo features anymore
  (it is a hardcoded list for now just to be safe)

- configurejson2cmake now outputs
  qt_find_package(WrapSystemFoo) calls for bundled libraries
  (see below)

- the harfbuzz .pro file is modified to accommodate pro2cmake
  not being able to correctly parse some conditional scopes

- the freetype .pro file is modified to make sure linking of the
  library succeeds without duplicate symbol errors, which qmake
  doesn't encounter due to magical exclusion of cpp files that are
  included in other cpp files (presumably for include moc_foo.cpp
  support)

- feature evaluation for Core, Gui, Network now happens in the
  qtbase/src directory, so that bundled libraries can be conditionally
  built

- for each bundled library there are now two FindWrap scripts:
  - FindWrapSystemFoo which finds an installed library in the system
  - FindWrapFoo which either uses the system installed library or
    the built bundled one depending on a condition

- projects that intend to use bundled libraries need to link against
  WrapFoo::WrapFoo instead of WrapSystemFoo::WrapSystemFoo targets
  (this is handled by pro2cmake).
  Unfortunately manually added qt_find_package(WrapFoo) calls might
  still be needed as is the case for WrapFreetype and others.

- a new cmake/QtFindWrapHelper.cmake file is added that provides
  a macro to simplify creation of WrapFoo targets that link against
  a bundled or system library. The implementation is fairly ugly
  due to CMake macro constraints, but it was deemed better than
  copy-pasting a bunch of almost identical code across all
  FindWrapFoo.cmake files.

- a qtzlib header-only module is now created when using bundled
  zlib, to provide public syncqt created headers for consumers
  that need them. These are projects that have
  'QT_PRIVATE += zlib-private' in their .pro files
  (e.g. qtimageformats, qtlocation, qt3d, etc.)
  This is unfortunately needed due to QtNetwork using zlib
  types in its private C++ API.

The change includes support for building the following bundled
libraries:
- zlib
- libpng
- libjpeg
- Freetype
- Harfbuzz-ng
- PCRE2

The following 3rd party libraries are still using an old
implementation within the CMake build system, and should be migrated
to the new one in the near future:
- double-conversion
- Old harfbuzz

The are a few libraries that are not yet ported:
- system-sqlite
- systemxcb
- maybe others

Among other things, this change allows building qtbase on Windows
without requiring vcpkg.

Task-number: QTBUG-82167
Change-Id: I35ecea0d832f66c1943c82e618de4a51440971a5
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Leander Beernaert <leander.beernaert@qt.io>
2020-02-25 15:43:16 +01:00
Alexandru Croitor 160184d6a5 CMake: Fix X11 and xkb library usage in the platform projects
This is a prerequisite for building the bundled 3rd party libraries.

Because the feature evaluation will be moved into src/CMakeLists.txt,
some of the X11 packages were found in the src dir, and then a second
time inside the x11-related projects.
These qt_find_package calls in the x11 related projects tried to
promote the imported targets to global, which failed, because they were
created in a different directory scope.

To avoid this, the special case qt_find_package calls are removed from
the nested projects.

Also, fix the mapping of some of the x11 libraries to be correct
- xkbcommon_x11 was incorrectly mapped to XKB::XKB instead of the
  xkb common x11 library
- xlib was mapped to xcb, whereas X11 is the correct CMake target

Change-Id: I30781b2ecbdd478c98419b14baa0492037e49c61
Reviewed-by: Leander Beernaert <leander.beernaert@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2020-02-25 15:43:16 +01:00
Olivier Goffart 46f407126e MetaObject: store the QMetaType of the properties
Change-Id: I563e7232b70e94de4184f2c23a581319313dcf5c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-02-25 15:43:15 +01:00
Olivier Goffart a68e4f3b96 Use the new QMetaType API in QVariant
Change-Id: I5495ee1159864ebd64083fadbfac7e07177ed406
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-02-25 15:43:15 +01:00
Olivier Goffart 5e908ada67 Fix crashes with MSVC 2019
Apparently the compiler bug causing MSVC to mix lambdas is not fixed in MSVC 2019

Fixes: QTBUG-82405
Change-Id: Ifafde3497ff264cda931ebfba79fcef1d5130510
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-02-25 15:43:15 +01:00
Volker Hilsheimer 02e0c30a8a QGraphicsView: Clear the rubber band when dragMode changes
Without this change, and ongoing rubber-band selection will not be
cleared when the dragmode property changes (e.g. because of a key press)
which leaves a rubber-band displayed on the view.

Move the rubber-band-clearing code from mouseReleaseEvent into a private
helper that is then called from setDragMode.

Change-Id: I32c15f7fe4ef2b8002ef5dd58e22f4bb30dd2409
Fixes: QTBUG-65186
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
2020-02-25 05:29:03 +01:00
Friedemann Kleint a5ea2f7e99 Merge remote-tracking branch 'origin/5.14' into 5.15
Change-Id: Ibe5b4aa249863a54007180f3684dc5ce1b23cb7b
2020-02-24 08:40:45 +01:00
Christian Ehrlicher 875420f1c2 QAbstractItemView: Make sure to update the editor geometries
QAbstractItemView::setIndexWidget() does not trigger a relayouting when
a new widget is set. This results in a wrong editor geometry under some
circumstances. Fix it by triggering a delayed relayout.

Fixes: QTBUG-81763
Change-Id: I75d0e19bd5e56d63effe4990d782d202fb39e3e6
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-02-23 10:48:53 +01:00
Alexander Akulich 291b3cebb9 QAbstractSocket: Use constructor delegation
Change-Id: Ib749ff46dd3c9d44c1a3c6273eadd78fdf0f837e
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-02-22 17:20:35 +03:00
Mitch Curtis 658b9697f9 Add QDebug::toString()
This template function streams the given object into a QDebug instance
that operates on a string, and then returns that string.

This function is useful for cases where you need the textual
representation of an object for debugging, but cannot use operator<<.
A good example of this is when writing tests where you want to provide
a useful failure message involving details about an object, but must
provide it in a string to e.g. QVERIFY2.

[ChangeLog][QtCore][QDebug] Added static template toString() function,
which streams the given object into a QDebug instance that operates on
a string, and then returns that string.

Fixes: QTBUG-82309
Change-Id: I8411394e899dedad19cec788d779a4515d52ba11
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-02-22 14:16:59 +01:00
Friedemann Kleint 835e18d9ff Fix wrong DPI used by QStyle::pixelMetric()
Pass on the option or the widget in order to ensure usage of the
correct DPI for High DPI scaling.

Task-number: QTBUG-82356
Change-Id: I5df903a83f88adebd143e514e2fead367d39f015
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2020-02-22 10:05:03 +01:00
Johan Klokkhammer Helsing 8471a422e3 Move QOpenGLVersionProfile to its own files
Prepare to move it out of QtGui

Task-number: QTBUG-74409
Change-Id: Iefde4945ede27cf3c2f6f50e5a693c03625cadf6
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-02-22 09:11:29 +01:00
Johan Klokkhammer Helsing 872af6811b Move QOpenGLBuffer from QtGui to QtOpenGL
Task-number: QTBUG-74409
Change-Id: I72c839e54f24810b2bde2385c568921c4e4a2869
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-02-22 02:08:26 +01:00
Qt Forward Merge Bot aa3226bab3 Merge "Merge remote-tracking branch 'origin/5.14' into 5.15" 2020-02-22 01:00:18 +01:00
Qt Forward Merge Bot 65cafea797 Merge remote-tracking branch 'origin/5.14' into 5.15
Change-Id: Iace12004afdfe765a3068dfcf6f1320c1123c539
2020-02-22 01:00:07 +01:00
Giuseppe D'Angelo 4b0fc03077 Update md4c to 0.4.3
Fixes important bugs.

[ChangeLog][Third-Party Code] md4c was updated to 0.4.3.

Change-Id: Ifed7939b7bd67e3f0a7776b4f4b1132d80141033
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2020-02-22 00:38:10 +01:00
Christian Ehrlicher 1559c328d5 QTableWidget: avoid complete redrawing when an item is removed
When an item gets removed from QTableWidget, the dataChanged() signal
is sent out with an invalid index. This triggers a complete repaint
which is not needed since only one cell is changed.
Fix it by retrieving the model index *before* the internal structure is
cleaned for the given item since otherwise index() will no longer find
the item and return an invalid index.

Change-Id: Ia0d82edb6b44118e8a1546904250ca29d9c45140
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-02-21 20:04:21 +01:00
Volker Hilsheimer 3c20b9b973 QGraphicsProxyWidgets: document that using OpenGL comes with limitations
The documentation already states that high-performance scenarios are not
a usecase that mixes well with QGraphicsProxyWidget. However, we can
generally not test or support all combinations of widgets and styles
with an OpenGL viewport.

That Qt's basic framework code has to be graphicsview aware is already
unfortunate enough; adding more special checks all over the place
hurts maintainability, makes the general usecase slower, and poorly
serves use-cases that are beyond of what QGraphicsProxyWidget was
designed for.

Change-Id: Iff43ead292240f7b068dcf9206bb3bee3031b1dc
Fixes: QTBUG-63687
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-02-21 20:03:45 +01:00
Topi Reinio 6248bfd9e5 Doc: Remove \pagekeywords command
The command does nothing, it was not implemented by QDoc.

Change-Id: Id1e5fcc02101723e9089df55d9f8949e50c89b3f
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-02-21 19:45:10 +01:00
Alberto Mardegan 57c2c37715 macOS: Use more of QStyleOption and less of QWidget
This is a step in the direction of reducing QWidget usage in the macOS style.

Change-Id: I247f39c2ba46c7fa5be51e01cc41fd8b8a93cea7
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-02-21 19:20:31 +03:00
Mårten Nordheim 1826fa978a Move function declaration to global scope so namespace is applied
The function-local declaration ignores the current namespace and when
linking it will look for a global exported function named
qt_writing_system_for_script instead of the one found in our namespace.

Move the declaration outside of the function to work around it.

Change-Id: I161bf1760e2e4e37d0f548b01bb3bea5ebb9ecdd
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2020-02-21 15:21:11 +01:00
Morten Johan Sørvig 4e1c41a26e QStyle: Use primary screen DPI as default DPI
Change d603ee68 made the default DPI be 96, for cases
where a style option is not provided.

This causes inconsistencies, since there are in fact
several cases where QStyle API is called without a
style option.

Restore historical Qt behavior of using the primary
screen DPI. Single-screen systems should now be consistent,
as before.

Task-number: QTBUG-82356
Change-Id: I849934ca2e5604b9fb2f045ed4f6058f3e0426ff
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-02-21 10:38:58 +01:00
Johan Klokkhammer Helsing 8193f9e0ec Move QOpenGLVertexArrayObject from QtGui to QtOpenGL
Task-number: QTBUG-74409
Change-Id: I6442693ca2b28b3a66f0f4fb41843e1e404df32b
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-02-21 10:00:47 +01:00
Laszlo Agocs 2940c375e4 rhi: Allow querying the native buffer objects behind a QRhiBuffer
Modeled after QRhiTexture's NativeTexture query.

This becomes valuable in advanced cases of integrating external native
rendering code with Qt Quick(3D), because it allows using (typically
vertex and index) buffers created by Quick(3D) in the custom renderer as
well, without having to duplicate the content by manually creating native
buffers with the same vertex and index data.

Change-Id: I659193345fa1dfe6221b898043f0b75ba649d296
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2020-02-21 09:15:18 +01:00
Laszlo Agocs efba2530f9 rhi: Do not rely on unspecified relation between readbacks and FramesInFlight
Add a new queriable resource limit value MaxAsyncReadbackFrames. Change
the autotest to rely on this instead of relying on the unspecified,
works-by-accident relation between readbacks and FramesInFlight. This
way even if the behavior diverges in some backend in the future, clients
(well written ones, that is), will continue to function correctly.

Also clarify the docs for FramesInFlight, and change d3d and gl to return
the correct value (which is 1 from QRhi perspective; the expanded docs now
explain a bit what this really means and what it does not).

Change-Id: I0486715570a9e6fc5d3dc431694d1712875dfe01
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2020-02-21 09:15:05 +01:00
Mårten Nordheim fb6acf08bb Replace usage of std::result_of with decltype
It's slated for removal in c++20

Fixes: QTBUG-82240
Change-Id: I7b35c151413b131ca49b2c09b6382efc3fc8ccb6
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-02-21 01:31:52 +01:00
Timur Pocheptsov 4f076db3d2 Remove QUrl::topLevelDomain
And move the actual implementation from corelib/io to network/kernel
sub-module.

Fixes: QTBUG-80308
Change-Id: I554b05bae3552c68e1e1a405c169366ee19120b2
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2020-02-20 21:41:54 +01:00
Eskil Abrahamsen Blomfeldt ba50d27e76 DirectWrite font db: Fix fallback fonts
The implementation of this was based on a misunderstanding of the API. The
GetMatchingFonts() function does not give a sorted list of fonts that
can be used in place of the given family, but just requests the fonts in
the family itself.

Instead, we use the same implementation as in the other two font databases
we have on Windows (moving the implementation to be shared).

Change-Id: I6a7b73e3d8376f7d97f598db0d7b63122ad1940c
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-02-20 16:29:51 +01:00
Olivier Goffart 3c0cd7566c Export an extern template for QMetaTypeForType for builtin types
That way not every translation unit generates the QMetaTypeInterface
for the builtin types

Change-Id: Id703c14532646a58f4088e8f3914564ce35e398e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-02-20 16:11:02 +01:00
Olivier Goffart 4dbac23e53 Normalize types at compile time
This also fix the normalization algorithm:
 - Some 'const' after pointers were not removed as they should.
 - No need to keep the space in '> >' and '< :' in C++11 anymore
 - Fix normalization of 'long unsigned int' and similar

Change-Id: I2b72f0fede96c1063e7b155d9f25a85fccfc7bf9
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2020-02-20 16:11:02 +01:00
Olivier Goffart 33cd680ddb New QMetaType representation
the QMetaType is represented as a pointer to a "vtable" in the form of
a QtPrivate::QMetaTypeInterface*

The recomanded use of QMetaType is to construct an object with
QMetaType::fromType. This does not require any registration.

There is still an id() function which will do some registration
for compatibility with Qt5. Also the patch does not really touch
the other extra things that can be registered (data stream operator,
comparison operator, iteratable, ...) and this still uses the previous
system.

This is only the change in QMetaType, other changes to use it in QVariant
and QMetaObject will follow

Change-Id: Iffad20085cf33f33447f58a68236013a8b60fdbf
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2020-02-20 16:11:02 +01:00
Allan Sandfeld Jensen 14f1ec186f Make bytes-per-line safe for int overflow
Goes through the Qt code and make sure bytes-per-line calculations are
safe when they are too big for 32bit integers.

Change-Id: I88b2d74b3da82e91407d316aa932a4a37587c0cf
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-02-20 16:11:02 +01:00
Johan Klokkhammer Helsing 4b611d649e Move QOpenGLShaderProgram from QtGui to QtOpenGL
Task-number: QTBUG-74409
Change-Id: I20dfafc0c9bf8e2b68b03e171d70c2cb4ad2bfaf
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-02-20 16:11:02 +01:00
Johan Klokkhammer Helsing 012bb039e3 Docs: Remove traces of QGL
The QGL* classes have been removed and the examples ported to QOpenGL, update
the documentation to reflect that.

Task-number: QTBUG-74408
Change-Id: Ibb4787cdeedc05a807d673943b61838f19092234
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-02-20 16:11:02 +01:00
Johan Klokkhammer Helsing 734b3a33c1 Docs: Remove lenghty comparison with QGLWidget
QGLWidget doesn't exist any more, and has been legacy for a long time, so we
shouldn't try to explain what QOpenGLWidget is in terms of QGLWidget any more.

Task-number: QTBUG-74409
Change-Id: I87ff6c35dfed1303bd6d74621b244e1ed84ceafe
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2020-02-20 16:11:01 +01:00
Edward Welbourne 336fe172b1 Back out of calendar support in Qt::DateFormat methods
We're deprecating the locale-specific date-formats, which are the only
ones that use the calendar. The QDateTime::toString() variant was new
in 5.15, so we can simply remove it again.  The QDate one was present
in 5.14, so we need to keep it; deprecated it at 5.15 for removal at
Qt 6.

[ChangeLog][QtCore][QDate] QDate::toString(Qt::DateFormat, QCalendar)
no longer takes calendar into account for Qt::TextDate. There was no
matching support in QDateTime and the locale-independent formats are
intended to be standard, rather than customized to the user.

Fixes: QTBUG-82178
Change-Id: I09db8a82ec5a4eab22f197790264fa3a3724e383
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-02-20 14:44:29 +01:00
Shawn Rutledge aeff4b70c5 Make xcb plugin compile with -no-feature-tabletevent
fixed1616ToReal() is used for touch and scroll events too, not just
tablet.

Task-number: QTBUG-82168
Change-Id: Idcdd6365b5619824b41c1278e5dc5ffb81c400f8
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2020-02-20 12:36:58 +01:00
Oliver Wolff 5893f10390 QMultiMap: Work around compiler problem in MSVC 2017
In more complex projects (like MuseScore) it is possible, that MSVC 2017
chokes on the usage of "using typename ...". Just fully specify the
iterators when they are used.

Fixes: QTBUG-82166
Change-Id: I5e7882a0963445fc8529cfcb59d2aae606a2777e
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-02-20 10:58:34 +01:00
Allan Sandfeld Jensen 9d563e605b Prepare QGuiAction::enabled property for declarative use
Make the order of visible, group and enabled insignificant, by storing
ignored explicit values of enabled.

Also adds resetEnabled method QQuickAction has on the enabled property.

Change-Id: I9299dec0d1f74fdf655721bb4f72ba565ae85c7a
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2020-02-20 09:05:28 +01:00
Allan Sandfeld Jensen 498cf6a455 Add enabled to QGuiAction debug output
It is a rather important property

Change-Id: I085031531235b1776faf5d2b52269ed4a05f0704
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-02-20 09:05:28 +01:00
Friedemann Kleint e0225d8bee Merge "Merge remote-tracking branch 'origin/5.14' into 5.15" 2020-02-20 08:36:03 +01:00
Friedemann Kleint 41ecb6abbf Merge remote-tracking branch 'origin/5.14' into 5.15
Change-Id: Ide8768d0d95aaeec943658aea27a03737d7dbf3f
2020-02-20 08:34:46 +01:00
Volker Hilsheimer 1821f5163d Fix font and palette propagation for themed children created at runtime
Widgets have a default palette and font that is influenced by several
factors: theme, style, QApplication-wide overrides, and the parent's.
If an application sets a font or palette on a parent, then widgets
inherit those settings, no matter when they are added to the parent.

The bug is that this is not true for widgets that have an application-
wide override defined by the platform theme. For those, we need to merge
parent palette and font attributes with the theme, and this is currently
not done correctly, as the respective masks are not merged and inherited.

This change fixes this for fonts and palettes. Children are inheriting
their parent's inheritance masks, combined with the mask for the
attributes set explicitly on the parent. This makes the font and palette
resolving code correctly adopt those attributes that are set explicily,
while leaving everything else as per the theme override.

The test verifies that this works for children and grand children added
to a widget that has a palette or font set, both when themed and
unthemed. Children with own entries don't inherit from parent.

The QFont::resetFont test had to be changed, as it was testing the
wrong behavior. If the child would be added to the parent before the
font property was set, then the test would have failed. Since this
change makes sure that children inherit fonts in the same way, no
matter on when they are added to their parent, the test is now
modified to cover both cases, and ensures that they return identical
results.

[ChangeLog][QtWidgets][QWidget] Fonts and palette settings are inherited
by children from their parents even if the children have application-
wide platform theme overrides.

Change-Id: I179a652b735e85bba3fafc30098d08d61684f488
Fixes: QTBUG-82125
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Vitaly Fanaskov <vitaly.fanaskov@qt.io>
2020-02-20 08:04:47 +01:00
Nicolas Guichard f9086ebd01 QShaderGenerator: Allow more expressions in input nodes
Currently QShaderGenerator will crash when encountering some expressions
in input nodes.

For example, this node prototype would make it crash:
"VERTEX_COLOR": {
  "outputs": ["color", "alpha"],
  "rules": [
    "headerSnippets": ["in vec4 vertexColor;"],
    "substitution": "vec3 $color = vertexColor.rgb;
                     float $alpha = vertexColor.a;"
  ]
}

Change-Id: I37abb8099d376843a4cb13228140467dc1b8f60c
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
2020-02-20 08:00:20 +01:00
Nicolas Guichard 39994e0705 QShaderGenerator: Don't crash when a node has multiple outputs
It was already possible to declare a node prototype with multiple
outputs, but trying to assign to all those outputs was not possible and
instead resulted in a crash.

It is now possible to declare nodes like this without crashing:
"SEPERATE_XYZ": {
  "inputs": ["vector"],
  "outputs": ["x", "y", "z"],
  "rules": [
    {
        "substitution": "float $x = $vector.x;
                         float $y = $vector.y;
                         float $z = $vector.z;"
    }
  ]
}

Change-Id: I748e77e84c9120dc688c573eee33dc13c6bfbace
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
2020-02-20 08:00:14 +01:00
Andre Hartmann 8cf4ce0fea QString: Add missing number() crosslinks to setNum()
Change-Id: I22a4c86034b399782115bb078c298b211095476a
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-02-20 06:59:55 +01:00
Eskil Abrahamsen Blomfeldt 2f521438eb DirectWrite font db: Fix writing system detection
The implementation here was accidentally missing from the
first commit. We use the OS/2 table for determining the writing system
support as intended by the font designer, and fall back to actually
checking the Unicode ranges if the table should be missing.

Change-Id: Ibfdf76c27f3a94eda2142b3e269a1ca30d4bc045
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-02-20 06:38:13 +01:00
Paul Wicking d1186f9299 Doc: Update description of QTextDocument::characterCount
A QTextDocument always contains a QChar::ParagraphSeparator, so
characterCount() will always return actual count + 1.
The tests confirm this behavior, make it explicit in the docs.

Fixes: QTBUG-80597
Change-Id: I91040fb6eb2c4fae5235458c695110f8f15bdfea
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
2020-02-20 06:00:42 +01:00
Lorn Potter d928beb024 wasm: do not try to resume main thread if mainloop has not started yet
Fixes: QTBUG-81520
Change-Id: Ibd891629d1d023e47d196dd60821cc5c583a178d
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2020-02-20 08:32:53 +10:00
Tor Arne Vestbø 8c3cc07bf5 widgets: Translate QWindow move events into widget relative position
If a widget backed by a QWindow is moved we need to translate the window
geometry into a position relative to the parent widget. In most cases this
was incidentally working due to widgets backed by QWindows always having
QWindow parents too, so the QWindow position was applicable to the widget
as well. But when Qt::WA_DontCreateNativeAncestors is used this is no
longer the case, and we would end up with a widget geometry that included
the parent positions all the way up to the next native widget.

The updatePos() function has been squashed into handleMoveEvent(), since
we need to ensure the position in the move event sent to the widget is
correct as well.

Change-Id: I55894ad7ab42a6d4d65e446a332ecdd7dcdcc263
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-02-19 20:04:19 +00:00
Sona Kurazyan 63a559845c Remove QLinkedList
QLinkedList has been moved to Qt5Compat. Remove and stop mentioning
it in docs, examples (the docs & examples for QLinkedList itself will
be moved to Qt5Compat) and remove the corresponding tests.

Also remove QT_NO_LINKED_LIST, since it's not needed anymore.

Task-number: QTBUG-81630
Task-number: QTBUG-80312
Change-Id: I4a8f1105cb60aa87e7fd67e901ec1a27c489aa31
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-02-19 21:01:07 +01:00
Nicolas Guichard 7981dbfaf3 QShaderGraph: don't generate statements with undefined inputs
This fixes the shader generation for graphs like this one:

                 Function0 ------> Output0
            (with unbound input)

   Input ------> Function1 ------> Output1

With those graphs, createStatements will not return any statement for
nodes Function0 and Output0.

Change-Id: Iec32aa51623e176b03ae23e580f06d14df80a194
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
2020-02-19 17:39:51 +01:00
Leander Beernaert baea8bf7d5 Fix qmimeprovider_database.cpp generation for Win32 with CMake
Incorrect arguments were being passed to the command which generates the
above file.

Change-Id: I9f06aca30e747e4368c8f6a727a02cb93b936167
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-02-19 16:14:45 +01:00
André Klitzing fc3226e790 Fix broken -no-feature-dom
44a26a0a79 did a clean up
and moved the new private header outside of QT_NO_DOM.

Fixes: QTBUG-82175
Change-Id: Iafe9c53b78037bdac8420911f6847d29672c68de
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
2020-02-19 15:21:40 +01:00
Mårten Nordheim 3dc69d651b QNAM Doc: Remove mention of bearer
🐻er management is going away

Change-Id: I86067d593ece0d35a33f23130260ccb7c4b64881
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-02-19 13:28:01 +01:00
Assam Boudjelthia 1576f81baa Android: QFileDialog check isLocalFile() with static functions
The functions below try to return the selected QUrl string
with toLocalFile(), however in case of Android "content" Uri
isLocalFile() is false, thus we end up with empty path.
This checks is QUrl isLocalFile() otherwise return QUrl::toString().

* QString QFileDialog::getSaveFileName()
* QString QFileDialog::getOpenFileName()
* QStringList QFileDialog::getOpenFileNames()
* QString QFileDialog::getExistingDirectory()

Change-Id: If7eefb3a067d4bd09849807e60554e0ded507f19
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2020-02-19 14:28:00 +02:00
Vitaly Fanaskov 3703a28511 QComboBox: remove currentIndexChanged(const QString&)
Fixes: QTBUG-81913
Task-number: QTBUG-81845
Change-Id: I8f24b858ce4e35b495440001d7734cc8f169cd5f
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2020-02-19 11:32:40 +00:00
Nicolas Guichard 49dbe760e4 Fix QShaderGenerator crashing when a node port name prefixed another one
QShaderGenerator didn't handle substitutions like
`vec4 $color = mix($color1, $color2, $fac);`

Note that `$color` is a prefix to `$color1` and `$color2`. For the
substitution `QByteArray::replace` was used so if `$color` was handled
first and replaced by `v1`, `$color1` and `$color2` were never correctly
replaced and instead became `v11` and `v12` which caused a crash later
on.

Change-Id: Idaf800fdac468f33c323eb722701da5f8eb918d6
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
2020-02-19 08:47:58 +01:00
Konstantin Ritt 181bece09a Fix sorting of fallback fonts based on writing systems
This rewrites 243f4b2a8c
in a more complete and optimized manner

Task-number: QTBUG-81924
Change-Id: I52105a9ede07ce350fad3d50277dd631df371f06
Reviewed-by: Hikaru Terazono (3c1u) <3c1u@vulpesgames.tokyo>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2020-02-19 10:41:15 +03:00
Christian Ehrlicher 3dd5caaaec QtSql: cleanup QSqlDriverPrivate and QSqlResultPrivate
Cleanup QSqlDriverPrivate/QSqlResultPrivate and their derived classes
in ODBC, MySql, PostgreSQL and SQLite.

Change-Id: I52e69c00cf981b81dde7c3a0370f86f06ef756bb
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2020-02-19 06:50:21 +01:00
Friedemann Kleint 045a143c2c Fix RollEffect misplacements in High DPI setups
Pass the correct screen as parent of the roll effect widget.

Fixes: QTBUG-82011
Change-Id: I25c163cb2e4c038e60ceced702a1ea6c18aa5424
Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
2020-02-18 22:27:25 +01:00
Liang Qi fd49b4a2b9 Merge "Merge remote-tracking branch 'origin/5.14' into 5.15" 2020-02-18 22:13:18 +01:00
Andy Shaw 9029c55864 Send the LanguageChange event to all top level windows, not just widgets
By sending it to all top level windows it will make it possible for
non widget based controls to listen for this event if it cares about it
so it can handle translation updates as appropriate.

Task-number: QTBUG-78141
Task-number: QTBUG-82020
Change-Id: I8f35cdcccd81a199ff780c3f4f3d2c663480d638
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2020-02-18 22:11:30 +01:00
Dmitry Shachnev 57af7f2166 Make libmd4c a private dependency of Qt GUI
Otherwise, when Qt is built with system libmd4c, all applications using
Qt GUI have to link with it, even if they do not use it.

Change-Id: I662dfd4caf29bb692b62c20cef0e99148a87a99a
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2020-02-18 22:29:16 +03:00
Timur Pocheptsov 379895798e QMacStyle - fix tab buttons
not to have arrows under some conditions. NSPopUpButton had a needed
color, except it also has arrow(s). Which looks quite confusing on an
inactive window on a tab button.

Fixes: QTBUG-82122
Change-Id: I40c57abe9ccae48fa906d592169c412f5f89f712
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
(cherry picked from commit 0e643bf783)
2020-02-18 18:05:50 +00:00
Alexander Akulich ee73ec0c77 Fix a typo in QLocalSocket doc
Change-Id: I3047cb24051c7f25d77d5b2b86ff145a52695107
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-02-18 20:34:50 +03:00
Edward Welbourne 274b6f3c13 Silence deprecation warnings on implementation of deprecated formats
Change-Id: I3abb36e27e96033b4eb44802c28e0a6ba8250ce5
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-02-18 16:28:24 +01:00
Alexandru Croitor eaa29378b9 CMake: Fix c++ standard config tests with MSVC
Need to pass additional -Zc:__cplusplus flag when using
MSVC, so that the __cplusplus define has correct values.

Additionally make the option be propagated to consumers of Qt
via the public Platform target, which QtCore links against.

Change-Id: Ie1283c25334b93f993529beb7fb32bdb001627f5
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Leander Beernaert <leander.beernaert@qt.io>
2020-02-18 14:44:57 +01:00
Liang Qi b9585277e7 Merge remote-tracking branch 'origin/5.14' into 5.15
Conflicts:
	src/corelib/tools/qlinkedlist.h
	src/plugins/platforms/wasm/qwasmintegration.cpp
	src/plugins/platforms/wasm/qwasmscreen.cpp

Change-Id: Iefca7f9f4966bdc20e7052aca736874861055738
2020-02-18 09:26:53 +01:00
Johan Klokkhammer Helsing 00eeed234f Move QOpenGLWidget from QtOpenGL to its own module
Same pattern as QtQuickWidgets. Gets rid of QtOpenGL's dependency on QtWidgets.

Task-number: QTBUG-74409
Change-Id: I4f9b55c23e25a1e0519734037b768a16e870c7d2
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-02-18 09:22:51 +01:00
Friedemann Kleint c308a796d9 Windows QPA: Fix disabled color of menu items in dark mode
Replace green by the standard light color.

Fixes: QTBUG-82197
Change-Id: I12477a055788cc7b6c829e315d5ae9f1577770bf
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2020-02-18 08:55:17 +01:00
Friedemann Kleint e2e596c0c5 Windows style: Turn off SH_EtchDisabledText in dark mode
It does not look good in dark mode.

Task-number: QTBUG-82197
Change-Id: I043c7d66d962e4c82581f37e52f279d4f4ed8c7e
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2020-02-18 08:55:09 +01:00
Lorn Potter d7b6c4288f wasm: add platform qsettings
Since the backend is async, the settings will not be ready to read/write
instantly as on other platforms, but only be ready after the
filesystem has been synced to the sandbox. This takes at least 250 to
500 ms. The QSettings status() or isWritable() can be used to discern when the
settings are ready for use.

This also fixes a crash in threaded wasm

Task-number: QTBUG-70002
Change-Id: I080bdb940aa8e9a126d7358b524f32477db151b6
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2020-02-18 12:40:24 +10:00
Lorn Potter 1538395e3f wasm: futureproof EmscriptenMouseEvent
Future versions of emscripten will remove the timestamp, so we need to
replace this with the current timestamp

See a7f058a1e6 (diff-9a5d68085dc7db2938b37a2b7b05c1f5)

Change-Id: I8379d1adee1df1084461fddb1dd2e71684de9657
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2020-02-18 12:40:21 +10:00
Lorn Potter 51cc564c50 wasm: guard nonthreaded builds from using threading.h
Change-Id: Ib5cd8afc4822cc89371d184ee5645ed8f496c8b0
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2020-02-18 12:40:19 +10:00