Commit Graph

33222 Commits (1a342b2db14fa92bca717f5daff950b2eef869f7)

Author SHA1 Message Date
Lars Knoll e1e573cee8 new QCache implementation
Make use of the new features available in QHash and do a more
performant implementation than the old one.

Change-Id: Ie74b3cdcc9871cd241aca205672093dc395d04a7
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-04-09 20:03:03 +02:00
Lars Knoll 5b7c3e31b5 New QHash implementation
A brand new QHash implementation using a faster and more memory efficient data
structure than the old QHash.

A new implementation for QHash. Instead of a node based approach as the old
QHash, this implementation now uses a two stage lookup table. The total
amount of buckets in the table are divided into spans of 128 entries.
Inside each span, we use an array of chars to index into a storage area
for the span.

The storage area for each span is a simple array, that gets (re-)allocated
with size increments of 16 items. This gives an average memory overhead of
8*sizeof(struct{ Key; Value; }) + 128*sizeof(char) + 16 for each span.

To give good performance and avoid too many collisions, the array keeps its
load factor between .25 and .5 (and grows and rehashes if the load factor goes
above .5).

This design allows us to keep the memory overhead of the Hash very small, while
at the same time giving very good performance. The calculated overhead for a
QHash<int, int> comes to 1.7-3.3 bytes per entry and to 2.2-4.3 bytes for
a QHash<ptr, ptr>.

The new implementation also completely splits the QHash and QMultiHash classes.

One behavioral change to note is that the new QHash implementation will not
provide stable references to nodes in the hash when the table needs to grow.

Benchmarking using https://github.com/Tessil/hash-table-shootout shows
very nice performance compared to many different hash table implementation.
Numbers shown below are for a hash<int64, int64> with 1 million entries. These
numbers scale nicely (mostly in a linear fashion with some variation due to
varying load factors) to smaller and larger tables. All numbers are in seconds,
measured with gcc on Linux:

Hash table              random     random     random  random reads   full
                        insertion  insertion  full    full   after   iteration
                                   (reserved) deletes reads  deletes
------------------------------------------------------------------------------
std::unordered_map      0,3842     0,1969     0,4511  0,1300 0,1169  0,0708
google::dense_hash_map  0,1091     0,0846     0,0550  0,0452 0,0754  0,0160
google::sparse_hash_map 0,2888     0,1582     0,0948  0,1020 0,1348  0,0112
tsl::sparse_map         0,1487     0,1013     0,0735  0,0448 0,0505  0,0042
old QHash               0,2886     0,1798     0,5065  0,0840 0,0717  0,1387
new QHash               0,0940     0,0714     0,1494  0,0579 0,0449  0,0146

Numbers for hash<std::string, int64>, with the string having 15 characters:

Hash table              random     random     random  random reads
                        insertion  insertion  full    full   after
                                   (reserved) deletes reads  deletes
--------------------------------------------------------------------
std::unordered_map      0,4993     0,2563     0,5515  0,2950 0,2153
google::dense_hash_map  0,2691     0,1870     0,1547  0,1125 0,1622
google::sparse_hash_map 0,6979     0,3304     0,1884  0,1822 0,2122
tsl::sparse_map         0,4066     0,2586     0,1929  0,1146 0,1095
old QHash               0,3236     0,2064     0,5986  0,2115 0,1666
new QHash               0,2119     0,1652     0,2390  0,1378 0,0965

Memory usage numbers (in MB for a table with 1M entries) also look very nice:

Hash table        Key   int64      std::string (15 chars)
                  Value int64      int64
---------------------------------------------------------
std::unordered_map      44.63      75.35
google::dense_hash_map  32.32      80,60
google::sparse_hash_map 18.08      44.21
tsl::sparse_map         20.44      45,93
old QHash               53.95      69,16
new QHash               23.23      51,32

Fixes: QTBUG-80311
Change-Id: I5679734144bc9bca2102acbe725fcc2fa89f0dff
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-04-09 20:02:55 +02:00
Szabolcs David 926a0886d1 Support multiple page ranges in QPrinter
Add a new QRangeCollection type to store and manage
multiple page ranges. This moves out the parser and validator
logic from the platform dependent (UNIX) dialog and makes it
publicly available from QPrinter.

This improves the usability of QPrinter in those applications
which doesn't use print dialog to configure printer.
(e.g.: QTextDocument, QWebEnginePage)

Change-Id: I0be5a8a64781c411f83b96a24f216605a84958e5
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
2020-04-09 16:45:32 +02:00
Thiago Macieira 9de8313b0b Fix warning about deprecated QComboBox::AdjustToMinimumContentsLength
Change-Id: Ibdc95e9af7bd456a94ecfffd1603f5c25dabf78e
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-04-09 11:33:31 -03:00
Shawn Rutledge cf4a8b12fa Remove more calls to deprecated TouchPoint functions
Followup to ed3ed0b9db
68916fede4 and
3c159957f8.

In QWindowSystemInterfacePrivate::fromNativeTouchPoints() and
QWindowSystemInterfacePrivate::toNativeTouchPoints() we continue using
struct TouchPoint's QRectF area as storage for the screen position +
ellipse diameters; as the comment says, this is _unrotated_, meaning
that rotation is stored separately, and area should not be construed as
the bounding box of the rotated ellipse. (In Qt 6 we can make the
QPA touchpoint look the same as the QTouchEvent::TouchPoint to
eliminate the need to calculate the center of the rect.)

In QGraphicsScenePrivate::updateTouchPointsForItem(), setRect() sets the
position and the ellipse diameters, but the latter is redundant because
the purpose of this function is to localize a touchpoint to the
coordinate system of a particular QGraphicsItem.  Ellipse diameters
should stay the same.

In QApplicationPrivate::updateTouchPointsForWidget(), as in
QGraphicsScene, we are localizing touchpoints to a widget
and to the screen that the widget is shown on, so only the position
needs to be set, while preserving the sub-pixel resolution that
mapFromGlobal(QPoint) loses.

Fixes: QTBUG-83403
Change-Id: I61d29e14cbe38567767b164af6ae895082c5e1a1
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-04-09 15:57:02 +02:00
Thiago Macieira f0ec2eb151 Fix warning about QMetaObject::isEditable() being deprecated
Change-Id: Ibdc95e9af7bd456a94ecfffd1603f482445bff28
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-04-09 13:55:25 +00:00
Allan Sandfeld Jensen 712ed3d5d6 Switch to using versioned deprecated macros
Change-Id: I4728e6ecc7218a6c98fd3a10e50e6edd1704fb83
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-04-09 15:55:25 +02:00
Thiago Macieira 954d66e572 QCborArray: fix operator[] that extends the array
This was never tested. The infinite loop in QCborContainerPrivate::grow
is the proof.

[ChangeLog][QtCore][QCborArray] Fixed an infinite loop when operator[]
was called with with an index larger than the array's size plus 1.

Change-Id: Ibdc95e9af7bd456a94ecfffd1603df3855c73f20
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-04-09 09:41:56 -03:00
Thiago Macieira 57a57fda78 QCborMap: fix assigning elements from the map to itself
Similar to the QJsonObject issue of the previous commit (found with the
same tests, but not the same root cause). One fix was that copying of
byte data from the QByteArray to itself won't work if the array
reallocates. The second was that

  assign(*that, other.concrete());

fails to set other.d to null after moving. By calling the operator=, we
get the proper sequence of events.

[ChangeLog][QtCore][QCborMap] Fixed some issues relating to assigning
elements from a map to itself.

Note: QCborMap is not affected by the design flaw discovered in
QJsonObject because it always appends elements (it's unsorted), so
existing QCborValueRef references still refer to the same value.

Task-number: QTBUG-83366
Change-Id: Ibdc95e9af7bd456a94ecfffd1603df846f46094d
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-04-09 09:41:40 -03:00
Thiago Macieira ddc7b3c156 QJsonObject: add missing detach2() calls
The refactoring to use CBOR missed two places where we could assign from
the same object and thus cause corruption. In fixing this issue, I found
a design flaw in QJsonObject, see Q_EXPECT_FAILing unit test and task
QTBUG-83398.

[ChangeLog][QtCore][QJsonObject] Fixed a regression from 5.13 that
incorrect results when assigning elements from an object to itself.

Fixes: QTBUG-83366
Change-Id: Ibdc95e9af7bd456a94ecfffd1603df24b06713aa
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-04-09 09:41:06 -03:00
Thiago Macieira 1b7de8988c QFactoryLoader: Fix warning about binary JSON being deprecated
Change-Id: Ibdc95e9af7bd456a94ecfffd1603f4abb1c3dfec
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
2020-04-09 09:39:24 -03:00
Thiago Macieira 39972cf899 KMS: fix warning about hex() and dec() being deprecated
Change-Id: Ibdc95e9af7bd456a94ecfffd1603f54bcb86fb87
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2020-04-09 09:38:32 -03:00
Kai Koehne e961cc057b MinGW: Fix debug only angle builds
Fixes: QTBUG-83397
Change-Id: I89e21cc8101a17dcdb232ff5df1a76cc08842434
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: André Klitzing <aklitzing@gmail.com>
2020-04-09 10:25:53 +02:00
Volker Hilsheimer c9b2528a9d Don't set WindowContextHelpButtonHint by default for dialogs and sheets
This makes the Qt::AA_DisableWindowContextHelpButton flag obsolete. It
is already documented as such in Qt 5, so we can remove it now.

[ChangeLog][QtWidgets] Do not show 'What's this' button anymore in
dialogs on Windows. To show the button again, you need to set
Qt::WindowsContextHelpButtonHint explicitly the top level widget.

Change-Id: I30017ca300441cb2ee37940ce97dfe18eb2b118b
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
2020-04-09 09:35:23 +02:00
Karsten Heimrich b75c82f645 Resolve Qt6 TODO items, replace Median and BlockSizeManager
* Replaces the, only internaly used, implementation of template
  class Median with a fixed size none templated version.
* Replaces BlockSizeManager with an updated BlockSizeManager V2,
  but keeping the original name.
* adapt the auto-test to take the fixed size array into account

Change-Id: If76cb944676c4a06a7566ad0bc37ded25b81c70c
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
2020-04-09 02:49:18 +02:00
Karsten Heimrich 9ad8b80fb9 Remove some dead code
Change-Id: I526d9baee260f018cec6076595a28be8596b6395
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Vitaly Fanaskov <vitaly.fanaskov@qt.io>
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
2020-04-09 02:49:08 +02:00
Thiago Macieira 36feab8bf4 QTemporaryFile/Linux: don't cut the root dir's slash
Normally people shouldn't create temporary files on /, but if you're
running as root, why not?

Caught when running tst_qtemporaryfile as root:

 openat(AT_FDCWD, "", O_RDWR|O_CLOEXEC|O_TMPFILE, 0600) = -1 ENOENT (No such file or directory)

Change-Id: Ibdc95e9af7bd456a94ecfffd1603ebfc17cea220
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: David Faure <david.faure@kdab.com>
2020-04-08 19:55:00 -03:00
Volker Hilsheimer 0f968085b9 QApplication: remove obsolete keypadNavigationEnabled member
QApplicationPrivate::keypadNavigationEnabled remains, and is
used in many places in QtWidgets.

Change-Id: Id95239560c279850f340f65414acb92202d10367
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
2020-04-09 00:49:42 +02:00
Volker Hilsheimer 9c551778c8 QApplication: remove deprecated keyboardInputLocale/Direction members
Change-Id: I87767cbf16aadb1ee36cfed958b5d6367a565915
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
2020-04-09 00:49:32 +02:00
Qt Forward Merge Bot c937ed8af4 Merge "Merge remote-tracking branch 'origin/5.15' into dev" 2020-04-08 22:04:23 +02:00
Alexandru Croitor e0346df1b2 CMake: Handle finding of OpenSSL headers correctly
In Coin when provisioning for Android, we download and configure
the OpenSSL package, but don't actually build it. This means that
find_package(OpenSSL) can find the headers, but not the library,
and thus the package is marked as not found.

Previously the openssl_headers feature used the result of finding
the OpenSSL package, which led to it being disabled in the above
described Android case.

Introduce 2 new find scripts FindWrapOpenSSL and
FindWrapOpenSSLHeaders. FindWrapOpenSSLHeaders wraps FindOpenSSL,
and checks if the headers were found, regardless of the OpenSSL_FOUND
value, which can be used for implementing the openssl_headers feature.

FindWrapOpenSSL uses FindWrapOpenSSLHeaders, and simply wraps the
OpenSSL target if available.

The find scripts also have to set CMAKE_FIND_ROOT_PATH for Android.
Otherwise when someone passes in an OPENSSL_ROOT_DIR, its value will
always be prepended to the Android sysroot, causing the package not
to be found.

Adjust the mapping in helper.py to use the targets created by these
find scripts. This also replaces the openssl/nolink target.

Adjust the projects and tests to use the new target names.

Adjust the compile tests for dtls and oscp to use the
WrapOpenSSLHeaders target, so that the features can be enabled even
if the library is dlopen-ed (like on Android).

Task-number: QTBUG-83371
Change-Id: I738600e5aafef47a57e1db070be40116ca8ab995
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2020-04-08 22:03:24 +02:00
Volker Hilsheimer 0651a4c274 Remove global GDI helpers qt_win_display_dc and qt_region_from_HRGN
They were no longer used anyway.

Change-Id: I565480cf39d2d8a27735afe56ac6537bc62fbd4a
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-04-08 21:58:41 +02:00
Volker Hilsheimer aad8d17f74 QApplication: remove forwarding of QGuiApplication::windowIcon
Change-Id: If886b0187bd5a6e0d57f6f0ed6bc4fca3edbe435
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-04-08 21:58:41 +02:00
Volker Hilsheimer d638d62ce3 QApplication: remove obsolete syncX member
Change-Id: I388fe7e9eef56ad5dcc63a8b7d14b95cfc39e599
Reviewed-by: Liang Qi <liang.qi@qt.io>
2020-04-08 21:58:41 +02:00
Volker Hilsheimer e25d79a5bd QApplication: remove obsolete setGraphicsSystem
Change-Id: I1152207947f9dfe0c40b5702f33d12d2da85502e
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-04-08 21:58:41 +02:00
Volker Hilsheimer 402e955db0 QApplication: remove deprecated members for obsolete ColorSpec
Change-Id: Idf1f4fd34e22c0ecac50a030e709d90b46dd6145
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-04-08 21:58:41 +02:00
Volker Hilsheimer c8dea4a833 Override virtual method in private class instead of downcasting
Move QGraphicsView specific code into reimplementation of now virtual
(and const) canStartScrollingAt.

Remove unhelpful comment.

Change-Id: Ib4799e48ac4f85748c77c52d29511a0490303676
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-04-08 21:58:41 +02:00
Volker Hilsheimer e349f787d5 QGraphicsView: consistently use ranged for and iterators
- replace random access with ranged for
- replace foreach with ranged for
- add qAsConst where possible
- iterate directly over QMap, rather than the keys (address FIXME
  comment)
- add some const to ensure that code has no side effects on
  containers or indices used in different places

Change-Id: I6199fd6edd5e4426c6c7fee0ff64ec9421a64cd5
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-04-08 21:58:41 +02:00
Volker Hilsheimer 6dab2577bf Constify parameter in QGraphicsItem/Object debug streaming operator
Address FIXME comment.

Change-Id: I55b6e458f2aead9baac8ab3bba7009ad993863e6
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2020-04-08 21:58:41 +02:00
Volker Hilsheimer 6693befcbb Move code from QTabBar::event to mouseDoubleClickEvent override
Address FIXME comment, convert if/else cascade to switch-statement,
and fix coding style in surrounding code.

Change-Id: Ia883b839d2af314f4abe18e4d7cefa21d77ff7c9
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-04-08 21:58:40 +02:00
Shawn Rutledge 9901d39ea6 Minimal platform: fix leaking QMinimalScreen instance
This caused false alarms in fuzzing tests.

The lifetime of the screen is the same as that of QMinimalIntegration.
But failure to call handleScreenRemoved() also causes a warning; so
as on "normal" platforms, the screen has to be separately allocated.

Change-Id: Iad0cc53b8d09687400ced28bc2353b7500b01110
Reviewed-by: Robert Loehning <robert.loehning@qt.io>
2020-04-08 21:10:57 +02:00
Qt Forward Merge Bot 8823bb8d30 Merge remote-tracking branch 'origin/5.15' into dev
Conflicts:
	examples/opengl/doc/src/cube.qdoc
	src/corelib/global/qlibraryinfo.cpp
	src/corelib/text/qbytearray_p.h
	src/corelib/text/qlocale_data_p.h
	src/corelib/time/qhijricalendar_data_p.h
	src/corelib/time/qjalalicalendar_data_p.h
	src/corelib/time/qromancalendar_data_p.h
	src/network/ssl/qsslcertificate.h
	src/widgets/doc/src/graphicsview.qdoc
	src/widgets/widgets/qcombobox.cpp
	src/widgets/widgets/qcombobox.h
	tests/auto/corelib/tools/qscopeguard/tst_qscopeguard.cpp
	tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp
	tests/benchmarks/corelib/io/qdiriterator/qdiriterator.pro
	tests/manual/diaglib/debugproxystyle.cpp
	tests/manual/diaglib/qwidgetdump.cpp
	tests/manual/diaglib/qwindowdump.cpp
	tests/manual/diaglib/textdump.cpp
	util/locale_database/cldr2qlocalexml.py
	util/locale_database/qlocalexml.py
	util/locale_database/qlocalexml2cpp.py

Resolution of util/locale_database/ are based on:
https://codereview.qt-project.org/c/qt/qtbase/+/294250
and src/corelib/{text,time}/*_data_p.h were then regenerated by
running those scripts.

Updated CMakeLists.txt in each of
	tests/auto/corelib/serialization/qcborstreamreader/
	tests/auto/corelib/serialization/qcborvalue/
	tests/auto/gui/kernel/
and generated new ones in each of
	tests/auto/gui/kernel/qaddpostroutine/
	tests/auto/gui/kernel/qhighdpiscaling/
	tests/libfuzzer/corelib/text/qregularexpression/optimize/
	tests/libfuzzer/gui/painting/qcolorspace/fromiccprofile/
	tests/libfuzzer/gui/text/qtextdocument/sethtml/
	tests/libfuzzer/gui/text/qtextdocument/setmarkdown/
	tests/libfuzzer/gui/text/qtextlayout/beginlayout/
by running util/cmake/pro2cmake.py on their changed .pro files.

Changed target name in
	tests/auto/gui/kernel/qaction/qaction.pro
	tests/auto/gui/kernel/qaction/qactiongroup.pro
	tests/auto/gui/kernel/qshortcut/qshortcut.pro
to ensure unique target names for CMake

Changed tst_QComboBox::currentIndex to not test the
currentIndexChanged(QString), as that one does not exist in Qt 6
anymore.

Change-Id: I9a85705484855ae1dc874a81f49d27a50b0dcff7
2020-04-08 20:11:39 +02:00
Joerg Bornemann 48e8f06658 CMake: Add 'opengl' to QT.gui.CONFIG if OpenGL is ON
...like we do in the qmake build.

Change-Id: I1fed28f3294c8556e115c3a86589c98f85554bf8
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-04-08 15:14:09 +02:00
Fabian Kosmale 14c55e2979 Revert "QCommonStyle::pixelMetric(): Silence warnings about deprecated enum values"
This reverts commit 82a39f12fa.

Reason for revert: Breaks the 5.15 -> dev merge. Failing tests appear
in tst_qgridlayout.

Change-Id: Ic251df6e06f5505de37376a6b15249762cba5307
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-04-08 12:01:58 +00:00
Simon Hausmann 5422fb7948 Allow declaring QProperty<> based Q_PROPERTYies with a notify signal
This requires mostly making moc a bit more permissive, which has the
advantage that it also simplifies the code a little bit.

The newly added test case demonstrates how to connect such a property
with a change signal.

One test case needed to be changed regarding the callback as the
publicProperty member now has a (permanent) observer and therefore
re-assigning the binding will re-evaluate it as the value might have
changed.

Change-Id: Ia7edcec432de830bdd4e07d943c5d4550c175ca4
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2020-04-08 11:26:39 +02:00
Qt Forward Merge Bot 34adcabc6c Merge remote-tracking branch 'origin/5.14' into 5.15
Change-Id: I34a71ddbc6afb1f12a0a044d0d3876e1af58d60c
2020-04-08 01:01:06 +02:00
Vitaly Fanaskov 8365322d3d StoredFunctionCall: simplify runFunctor implementation
Task-number: QTBUG-82383
Change-Id: Ib8e196106c80e8f3aba1ff7d0c8b76a547c648da
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-04-07 17:47:31 +02:00
Timur Pocheptsov 603eaa9fbb H2C - make sure we send the client preface and settings
It's required as a response to upgraded protocol and apparently some
servers would wait for it, not sending any frames. Becomes a problem
in case only one request was sent.

Fixes: QTBUG-83312
Change-Id: I90dc5c04095f0b78baa404466625d329dc4c6e21
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-04-07 16:46:44 +02:00
Topi Reinio 2d0c7d3d9e Doc: Document QTestStream manipulators under the Qt namespace
The global variants of the manipulators have been deprecated in favor of
the ones in the Qt namespace. However, only one set was documented (the
deprecated ones).

Ensure documentation for both sets is generated, and link to the Qt::
manipulators in QTextStream documentation.

Fixes: QTBUG-82532
Change-Id: I430d15f6d9a34411d1d7265031249e600f6874ef
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
2020-04-07 09:32:19 +02:00
André Klitzing 2a4e6124ac Fix build with macOS 10.15 and deployment 10.12
io/qfilesystemengine_unix.cpp:1420:9: error: 'futimens' is only available on macOS 10.13 or newer [-Werror,-Wunguarded-availability-new]
     if (futimens(fd, ts) == -1) {
         ^~~~~~~~
 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/include/sys/stat.h:396:9: note: 'futimens' has been marked as being introduced in macOS 10.13 here, but the deployment target is macOS 10.12.0
 int     futimens(int __fd, const struct timespec __times[2]) __API_AVAILABLE(macosx(10.13), ios(11.0), tvos(11.0), watchos(4.0));
         ^
 io/qfilesystemengine_unix.cpp:1420:9: note: enclose 'futimens' in a __builtin_available check to silence this warning
     if (futimens(fd, ts) == -1) {
         ^~~~~~~~

Change-Id: Ib52adf7b1ec4f1057d8cb260a00da509429cfaed
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
(cherry picked from commit 2f030c2cf3fe368be217c0e0b157e050d1c27afc)
2020-04-07 08:24:12 +02:00
Edward Welbourne b0383cbd38 Purge two old time-zone lookup fallbacks
We used to need to consult /etc/timezone for the zone name back when
Debian, up to Jessie, used a copy of the zoneinfo file as
/etc/localtime, instead of a symlink.  Jessie's end of life is this
May, but Thiago reports that its gcc can't build Qt 5.14, so we may as
well remove this fall-back.  Newer versions of Debian use a symlink.

We used to need to consult /etc/sysconfig/clock for this information
back when ancient Red Hat distros copied zoneinfo to /etc/localtime
instead of symlinking, but Thiago believes that's now ancient history.
So, again, remove this old fallback.

Change-Id: I73cb40b926186b311dac6f00fe8743d37a9dfce5
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-04-07 05:10:14 +02:00
Edward Welbourne b40ac4b858 Ensure QTzTimeZonePrivate always tries a non-empty IANA ID
QTzTimeZonePrivate::init() was coping with empty and then saving the
system ID if the ID it looked up was empty. Better to have its caller
ensure it's passed the system ID in place of empty. The system ID is
always non-empty, as it falls back to "UTC" if it would otherwise have
been empty.

Change-Id: I5c74e23f01ef578de0dc1f6d558e9c8c7e65ff53
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-04-07 05:09:59 +02:00
Qt Forward Merge Bot 12fc3f5751 Merge "Merge remote-tracking branch 'origin/5.14' into 5.15" 2020-04-06 16:50:23 +02:00
Qt Forward Merge Bot 864048a8f5 Merge remote-tracking branch 'origin/5.14' into 5.15
Conflicts:
	src/corelib/kernel/qeventdispatcher_win.cpp

Change-Id: I32db3f755577aefc15f757041367d6144f5e5c66
2020-04-06 15:45:11 +02:00
Thiago Macieira 276fa8383a QLibrary: fix deadlock caused by fix to QTBUG-39642
Commit ae6f73e856 inserted a mutex around
the entire load_sys(). We had reasoed that deadlocks would only occur if
the object creation in instance() recursed into its own instance(),
which was already a bug. But we had forgotten that dlopen()/
LoadLibrary() executes initialization code from the module being loaded,
which could cause a recursion back into the same QPluginLoader or
QLibrary object. This recursion is benign because the module *is* loaded
and dlopen()/LoadLibrary() returns the same handle.

[ChangeLog][QtCore][QLibrary and QPluginLoader] Fixed a deadlock that
would happen if the plugin or library being loaded has load-time
initialization code (C++ global variables) that recursed back into the
same QLibrary or QPluginLoader object.

PS: QLibraryPrivate::loadPlugin() updates pluginState outside a mutex
lock, so pluginState should be made an atomic variable. Once that is
done, we'll only need locking the mutex to update errorString (no
locking before loading).

Fixes: QTBUG-83207
Task-number: QTBUG-39642
Change-Id: Ibdc95e9af7bd456a94ecfffd160209304e5ab2eb
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: David Faure <david.faure@kdab.com>
2020-04-06 13:27:05 +00:00
Laszlo Agocs ec07f83190 rhi: d3d11: Disable DXGI message queue monitoring
We do not benefit from it (don't need Alt+Enter and such). Switching
to DXGI_MWA_NO_WINDOW_CHANGES is also in line with the qtbase/5.14
patch 1430b29 that does the same for ANGLE.

Change-Id: Ie6384aeb2e97130ff439f761a7c166086f04526c
Reviewed-by: Jonas Karlsson <jonas.karlsson@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-04-06 14:25:12 +02:00
Simon Hausmann 549712830b QProperty: Add support for member function change handlers
When a class has multiple QProperty members to implement functionality,
it is common to have functions in the class that react to changes. For
example to emit a compatibility signal, in case of Qt Quick to mark the
scene graph as dirty, etc. etc.

To faciliate this use-case, this patch adds an internal
QPropertyMemberChangeHandler template that allows connecting a QProperty
field to a member function callback.

At the moment that callback is still 3 * sizeof(pointer). This could in
theory be reduced to 2 by eliminating the back-pointer (prev) as the
observer lives as long as the property. That however belongs into maybe
a future patch.

In order to get a pointer back to the surrounding object that holds the
QProperty as well as provides the callback function, the property system
was changed to pass through the address of the QProperty member at
run-time, and at compile time the delta from the QProperty member to the
beginning of the surrounding class is calculated. Through subtraction we
obtain the pointer to the owning object.

Change-Id: Ia2976357053f474ff44d0d6f60527c3b8e1f613a
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-04-06 14:25:12 +02:00
Marcel Krems bee2bfc6c6 QSqlError: Remove deprecated methods
Change-Id: I4eb9918e65bc7990effb8a643332ba232e975893
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
2020-04-06 14:25:12 +02:00
Jean-Michaël Celerier 3f9862db95 Add missing endif() in a CMake file
Change-Id: I545a91dafd26d0fc88c3b205aec9805629b9371e
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
2020-04-05 22:44:16 +02:00
Morten Johan Sørvig f9137c8c6e Wasm: don’t deadlock on parallel image conversions
A special restriction of threads on WebAssembly is
that you should not block the main thread, also not
to wait for worker threads.

For example, blocking the main thread may prevent the
browser from starting a new web worker to service the
pthread the main thread is waiting for.

We may be able create an abstraction to support use
cases like this (most likely using emscripten asyncify),
but for disable use of threads to avoid deadlocking.

Change-Id: I35edd5e1bb465e2549fa7cc4288b47dcd2e4244b
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2020-04-05 22:20:55 +02:00
Mårten Nordheim d8b49e6b51 QtNetwork: Delete bearer management
All remaining pieces are gone, configuration included.

Relevant CMakeLists and configure.cmake were regenerated.

Fixes: QTBUG-76502
Change-Id: I667b5da7e3802830d236d50b5e9190c2ee9c19e2
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-04-05 16:41:08 +02:00
Giuseppe D'Angelo 9121829916 QRegularExpression: rename AnchoredMatchOption to AnchorAtOffsetMatchOption
The name of the option may cause confusion due to the fact
that it's not _fully_ anchoring the match, only anchoring it
at the offset passed to match() -- in other words, it's a
"left" anchoring. Deprecate the old name and introduce
a new one that should explain the situation better.

[ChangeLog][QtCore][QRegularExpression] The AnchoredMatchOption
match option has been deprecated in favor of
AnchorAtOffsetMatchOption, which should better describe
that the match is only anchored at the offset.

Change-Id: Ib751e5e488f2d0309a2da6496378247dfa4648de
Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
2020-04-03 21:49:57 +02:00
Sona Kurazyan 1812830ac3 Fix potential race condition in QtConcurrent blocking methods
QtConcurrent::blocking*() methods are using the ExceptionStore directly,
which is not thread safe. In case if there's an exception thrown from
multiple threads there may be a race condition. Added a lock to avoid
that.

Change-Id: I5de9928f91f5f43951b9bf9c4594694dc0ca0328
Reviewed-by: Vitaly Fanaskov <vitaly.fanaskov@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-04-03 19:46:04 +02:00
Volker Hilsheimer ab71c9c996 Unexport QWidgetResizeHandler and remove move functionality
Address FIXME comment.

The class is not public, and only used in QtWidgets for the resizing of
docking widgets. The move functionality is unused, and has been
removed.

Change-Id: Id477f36cb7d449b06e124950fed6f5f182aa5721
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-04-03 19:01:57 +02:00
Alexandru Croitor 708d365a64 CMake: Regenerate projects after .pro files were modified
Change-Id: If6aec596bf68b209b42e0728dd6857eec8c261be
Reviewed-by: Leander Beernaert <leander.beernaert@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-04-03 16:05:29 +02:00
Leena Miettinen ff36ed8c41 Doc: Fix QLineF::IntersectionType enum name
Fixes: QTBUG-82727
Change-Id: Iaffa3b0f61debf27a9fe55775362a3f016612217
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
2020-04-03 16:05:27 +02:00
Topi Reinio 3f783bfad9 Doc: Clarify equivalence of two QDate instances
Fixes: QTBUG-83212
Change-Id: I627716522a962a4c90c5833446dd62f6a18d7d86
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2020-04-03 16:05:27 +02:00
Alex Trotsenko e0d80167c1 QEventDispatcherWin32: fix posted events delivering
To avoid livelocks, posted events should be delivered when all pending
messages have been processed, and the thread's message queue becomes
empty. Although the logic of the previous patch is correct, it turned
out that determining the moment when the message queue is really empty
is not so simple. It is worth noting that the GetQueueStatus function
sometimes reports unexpected results due to internal filtering and
processing. Indeed, Windows docs say that "the return value from
GetQueueStatus should be considered only a hint as to whether
GetMessage or PeekMessage should be called". Thus, we cannot rely on
GetQueueStatus in unambiguous logic inside the qt_GetMessageHook.

To solve the problem, this patch introduces a guard timer which
guarantees low priority processing for posted events in foreign loop.
The wakeUps flag reset logic has also been changed to provide clearer
synchronization of the Qt internal loop.

Fixes: QTBUG-82701
Fixes: QTBUG-83151
Change-Id: I33d5001a40d2a4879ef4eb878c09bc1c0616e289
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-04-03 14:05:27 +00:00
Thiago Macieira 9834536cfa QLibrary/Android: Correct improper merging
I had originally developed ae6f73e856 in
5.13, where this code for Android didn't exist. I didn't notice the use
of pHnd there when I merged up for the push.

Change-Id: Ibdc95e9af7bd456a94ecfffd160208dfaa596d95
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2020-04-03 11:05:27 -03:00
Volker Hilsheimer de78425ca0 Make setRange methods in QValidator subclasses non-virtual
As per the FIXME comment. These functions are not called by Qt, so no
reason to have them virtual.

As a drive-by, remove redundant virtual keyword from overrides.

[ChangeLog][QtGui][QValidator] QIntValidator::setRange and
QDoubleValidator::setRange are no longer declared as virtual.

Change-Id: I640646fb18ed50554e384ed67ac85b3f408ea8cc
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2020-04-03 16:05:04 +02:00
Tor Arne Vestbø 1c23d34ad4 qpa: Remove references to lighthouse
Change-Id: I37646113f626c878883cff49f4e186ec71bcfa15
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2020-04-03 15:26:29 +02:00
Nico Vertriest 713cd83200 Doc: Make Qt Test snippets compilable
Task-number: QTBUG-81498
Change-Id: I22f07cd539e5e317b6cf15eb369d59915146bd13
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2020-04-03 13:13:55 +00:00
Qt Forward Merge Bot 7672e09770 Merge "Merge remote-tracking branch 'origin/5.14' into 5.15" 2020-04-03 15:12:48 +02:00
Tor Arne Vestbø ab4c22d47d macOS: Remove all use of deprecated Q_OS_OSX define
Change-Id: I49c285604694c93d37c9d1c7cd6d3b1509858319
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-04-03 13:44:37 +02:00
Kai Koehne 7e7c649884 CMake: Fix double inclusion of CMake plugin targets
After 99ace38d22, all plugin files are
included automatically, not only the ones ending in Plugin.cmake.

Thus the extra inclusion done by the QmlConfigExtras file should only
be done if strict mode is set.

Amends 99ace38d22
Amends 2f2dd3b0c28db210ea1f00d569f6c1626894c5f4

Task-number: QTBUG-83282
Change-Id: I416cbad6c4788d605a9a74f21062543c9c98e968
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-04-03 13:32:56 +02:00
Morten Johan Sørvig 4aee10b9da No-thread: Don’t assert in ~QThreadData()
The no-thread build is not maintaining the
QThreadData refcount.

Change-Id: I80ce4151b8da9391764ed3d820943dcac0d70999
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
2020-04-03 13:32:56 +02:00
Qt Forward Merge Bot 86d9e36b06 Merge remote-tracking branch 'origin/5.14' into 5.15
Conflicts:
	tests/benchmarks/corelib/text/qstringlist/qstringlist.pro

Change-Id: Ie9b97bd83c2df00fd9b556b5f09d405f71970169
2020-04-03 09:01:44 +02:00
Edward Welbourne 67c0e28789 Purge a stray space from calendar locale data
It was causing all lines after the first, in each calendar's
locale_data[], to be over-indented. This only changes spacing.

Change-Id: Ibfc4986548eecbfdba2902cc18f44a2af669bc6d
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-04-02 19:44:01 +01:00
Edward Welbourne 89bd12b9ad Change QLocale to use CLDR's accounting formats for currencies
In particular, this changed the US currency formats for negative
amounts to be parenthesised versions of the positive amount forms,
rather than having a minus sign after the $ sign. Test updated.

[ChangeLog][QtCore][QLocale] Currency formats are now based on CLDR's
accounting formats, where they were previously mostly based (more or
less by accident) on standard formats. In particular, this now means
negative currency formats are specified, where available, where they
(mostly) were not previously.

Task-number: QTBUG-79902
Change-Id: Ie0c07515ece8bd518a74a6956bf97ca85e9894eb
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
2020-04-02 20:43:34 +02:00
Edward Welbourne 81cf23c7a7 Take CLDR's distinguished attributes into account
When doing XPATH searches, child nodes that have distinguished
attributes that were not asked for should be skipped. This is part of
the LDML spec and matters when resolving locale inheritance. Scan the
LDML DTD (previously only scanned for the CLDR version) to find which
attributes of which tags are ignorable - all others are distinguished
- and take the result into account when performing XPATH searches.

The XPath we were using for currency formats wasn't excluding
currencyFormatLength elements with type="short" and patterns specific
to thousands (and larger multiples); this is fixed by taking
distinguished attributes into account. However, the XPATH also wasn't
specifying the always distinguished attribute type="standard" that
was, in practice, used for nearly all locales that weren't (wrongly)
using short-forms for thousands; so type="standard" is now made
explicit, so as to minimize the diff.

This leaves only twenty-one locales with a negative currency formats.
A later commit shall switch to using accounting by default (it falls
back via an alias to standard, in any case), thereby restoring the two
mentioned below that were using it by accident, but the present change
gives the minimal diff here.

Thousands-specific formats replaced with sensible ones:
* zh_Hant_{HK,MO} (Traditional Mandarin, Hong Kong and Macau)
* eo_001 (Esperanto)
* fr_CA (Canadian French)
* ha_* (Hausa, when not written in Arabic)
* es_{GT,MX,US} (Spanish - Guatemala, Mexico, USA)
* sw_KE (Swahili, Kenya)
* yi_001 (Yiddish)
* mfe_MU (Morisyen, Mauritius)
* lag_TZ (Langi, Tanzania)
* mgh_MZ (Makhuwa Meetto, Mozambique)
* wae_CH (Walser, Switzerland)
* kkj_CM (Kako, Cameroon)
* lkt_US (Lakota, USA)
* pa_Arab_PK (Punjabi, in Arabic script, as used in Pakistan; uses
  arabext number system, whose currency falls back to latn's, for
  which pa_Arab over-rides the thousands-format).

Format changed from an over-ridden type="accounting" to standard (so
these lost a negative-specific form) in:
* en_SI (English, Slovenia)
* es_DO (Spanish, Dominican Republic; same)

For some locales we were picking up over-rides of narrow or short list
formats, or formats for or-lists or unit-lists rather than and-lists,
in place of the standard list format, that these locales don't
over-ride, provided by a parent locale. This changed list formats for:
* en_CA, en_IN (dropped "Oxford" comma before "and")
* qu_* (Quechua; dropped "utaq", presumably meaning "and")
* ur_IN (Urdu, India; was using unit-list formats)

[ChangeLog][QtCore][QLocale] Data used for currency formats in several
locales and list patterns in some locales have changed due to now
parsing the CLDR data more faithfully.

Fixes: QTBUG-81344
Change-Id: I6b95c6c37db92df167153767c1b103becfb0ac98
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
2020-04-02 19:43:28 +01:00
Edward Welbourne e5eb0aa428 Take number system into account in currency format look-up
CLDR's currency formats do have number system variation, so take it
into account. (The old xpathlite code clearly intended to do this, but
failed at it due to looking for the wrong component of an XPATH to
fix.) This changes the currency formats in use for
* all Dutch locales (because nl.xml lists a currency format for arab
  before the one for latn, and they differ),
* Punjabi, Urdu - specifically pa_Guru_IN, ur_Arab_PK (both like
  Dutch, arabext before latn; which is correct for pa_Arab_PK and
  ur_Arab_IN),
* Sindi (whose over-ride of latn currency format we were using, where
  we should be using arab's format, supplied by root's default),
* Tatar (which specifies a generic currency format, which we were
  using, before one specific to latn, which we now use),
* Tongan (same as Dutch),
* Konkani (like Dutch, deva before latn) and
* several North African Arabic locales (whose default number system is
  latn, rather than arab, but previously used arab's formats).

Task-number: QTBUG-79902
Change-Id: I18d8ec16bfd3a516d1bcd2f63bc7f7f15179a3f4
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
2020-04-02 19:43:23 +01:00
Edward Welbourne 9fab53a513 Rework qlocalexml2cpp.py to use writers based on Transcriber
This saves repetition of temporary-file manipulation code. In the
process, ensure that we tidy away temporary files on failure.

Moved a comment in qlocale.h to *outside* the re-written portion, to
save having to rewrite it every time. Added blank lines to separate
script data from country data in the generated output. Changed 0s in
one comment to zeros, to match another comment.

Isolated use of sys to the __main__ block.
Isolated use of enumdata to the new LocaleHeaderWriter class.
Modernised all the string-formatting I touched.

Task-number: QTBUG-81344
Change-Id: I5768e45d9a8ea23facc303b3dd8af8b3ccbf7ff2
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
2020-04-02 19:42:56 +01:00
Edward Welbourne 5b1c33cc78 Rework cldr2qtimezone.py into more maintainable form
Broke out the updating of a source file to a ZoneIdWriter helper
class, which enables tidying away the temporary file if we fail.
Collected up the rest of the script into a main() that's now
called from a __name__ == '__main__' block.
Rationalized the imports.

Eliminated an inefficient lookup function by constructing a suitable
dict() before entering the loop that needed it.

Separated the "data you might need to update" tables from the code
that does the work, to make it easier for those adding support for new
zones to see what they're doing.

Removed the spurious $Revision$ from the output and reworded the
premable of the generated file. (It would seem CLDR no longer uses an
RCS-based version-control system.) Generated output is otherwise
unchanged.

Task-number: QTBUG-81344
Change-Id: I7d9de8357ebcb599d154de9f862e25f7ade00390
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
2020-04-02 19:42:50 +01:00
Edward Welbourne 333d7e6de4 Clean up QTzTimeZonePrivate::systemTimeZoneId()
The special handling of ":/etc/localtime" should only apply if that's
the exact value of $TZ; the old code would have treated
"/etc/localtime" the same, due to stripping a leading ':' before
checking for it.  We can also test whether to do that stripping using
startsWith().

When reading the content of files, avoid QTextStream's trip via
QString and back to QByteArray by using the QFile's readLine()
directly, or by using readAll().

Task-number: QTBUG-75585
Change-Id: I1524529a2c34d83a9fbd00d41c11f2d994dfc49d
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-04-02 20:41:09 +02:00
Samuel Thibault 54886d7f81 Enable accessibility on Linux when org.a11y.Status IsEnable is true
Otherwise accessibility would only work when Orca is set to be started
in the session preference, and it would not work when running Orca or
compiz' zoom by hand.

The existing comment said that it was always true since gnome 3.6, but at
least in Debian 8's gnome 3.14, Debian 9's gnome 3.22, and Debian 10's
3.30 it is not always true, it is Orca which sets it on startup. Compiz's
focuspoll module also does so for people with low vision using zoom with
focus tracking.

[ChangeLog][Accessibility][Linux] Enable accessibility on Linux when Orca is
started by hand

Change-Id: I36cfe1b45e442c0fcefe813e09a67a74205c3ecf
Reviewed-by: Frederik Gladhorn <gladhorn@kde.org>
2020-04-02 19:34:07 +01:00
Lars Knoll 64b1af3fa0 Warn that the EDITABLE flag for property declarations is deprecated
Additionally mark QMetaProperty::isEditable as deprecated.

Change-Id: I1abe4c6f2d30c2f96380f9e5942be431dbfed38f
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-04-02 15:21:46 +00:00
Volker Hilsheimer 1de427bd4e Use correct deprecation macro, and add \since to new member function
Change-Id: Ib9e88855c708f1fe2402d78c55ff08812d86e035
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-04-02 16:32:03 +02:00
Tor Arne Vestbø 7e9481f1fb Resolve QWidget window handle without depending on QtWidgets
Change-Id: If5b2f17283193d7a1718f476b72f380e9e67d0f0
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-04-02 10:33:29 +02:00
Shawn Rutledge c83ae88faf Remove QTabletEvent::PointerType::XFreeEraser
This is an artifact of pre-Qt 5 Wacom driver implementation, hasn't
been in use during the Qt 5 series, but was kept for source compatibility
with very old sources. Let's hope the usages are all gone by now.

Change-Id: I39dc36699510ea5e51cacd369470264fd8a27b37
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-04-02 10:09:50 +02:00
Alexandru Croitor 3e658d5c70 CMake: Regenerate configure.cmake files
Fixes syntax warning for c++ filesystem check.

Amends 907652e1ed

Change-Id: Ieafee3610b3eea0e6c13df4d78f21ab333f3d3c0
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-04-02 09:39:24 +02:00
Fabian Kosmale b51218483b QMetaType: Add namespace where necessary
Change-Id: I973522331bec057bcf0ddb72e46776249dff8aa8
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-04-02 09:09:38 +02:00
Oliver Wolff 1430b2944b ANGLE: d3d11: Do not register windows message hooks for d3d11 windows
These message hooks are used to handle ALT+ENTER to enter/exit fullscreen
mode and PRINTSCREEN to take screenshots. Qt is implementing these
functionalities itself so we do not have to register these hooks.

If too many of these hooks are registered, callbacks are no longer called
and Qt's message queue is no longer handling messages. By saving these
hooks we can make sure that more Qt windows at the same time are possible
without getting unresponsive due to too many hooks being registered.

Change-Id: I5354f91f08cbfeda5e8dc3ad7f824fbd5b3b2932
Reviewed-by: Dominik Holland <dominik.holland@qt.io>
Reviewed-by: André de la Rocha <andre.rocha@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-04-02 08:58:03 +02:00
Mårten Nordheim 4888e3e840 Remove bearermanagement usage inside QNAM and QNetworkProxy
Change-Id: I2c4fdf598b46daf1b69a65848ebe0fd78ef8be24
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-04-01 21:35:12 +01:00
Lars Knoll ab91ac0992 Don't store iterators on QHash while erasing
QHash::erase() in the new QHash will invalidate
all iterators pointing into the hash.

Change-Id: Ia54e8485a947cd7274f832c7c8c624d0aaded4ba
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-04-01 21:33:57 +01:00
Lars Knoll 605bda587e Remove QRegExp usage in QNetworkCookie
Changed this to not use capturedTexts(), as it
is slower than required, and behaves slightly
differently than in QRegExp (the returned list
might be shorter than the amount of captures if the
last capture didn't match).

Change-Id: I3f90128af62d784a3d1beb993ab215e0c7d6b826
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-04-01 22:32:39 +02:00
Sona Kurazyan 0f78e85421 Add support of failure handler callbacks to QFuture
Added QFuture::onFailed() method, which allows attaching handlers for
exceptions that may occur in QFuture continuation chains.

Task-number: QTBUG-81588
Change-Id: Iadeee99e3a7573207f6ca9f650ff9f7b6faa2cf7
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-04-01 21:51:13 +02:00
Sona Kurazyan 495f958b9a Store QFuture exceptions as std::exception_ptr
Replaced the internal ExceptionHolder for storing QException* by
std::exception_ptr. This will allow to report and store exceptions
of types that are not derived from QException.

Task-number: QTBUG-81588
Change-Id: I96be919d8289448b3e608310e51a16cebc586301
Reviewed-by: Vitaly Fanaskov <vitaly.fanaskov@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2020-04-01 21:51:06 +02:00
Volker Hilsheimer 5c1bc5c8a4 QLineEdit: clarify the impact of using validators
Values that are validated as Intermediate are possible to enter, but
returnPressed and editingFinished signals are not emitted.

Fixes: QTBUG-82915
Change-Id: I3e194cd6ee93b3402090117b67044cf3663a232e
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2020-04-01 21:37:48 +02:00
Fabian Kosmale 33b1030929 QTableView: remove unused lambda capture
Change-Id: Ifd6994f90d2c4f550d8c1b8443f426006c06af96
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
2020-04-01 10:29:32 +02:00
Lars Knoll ef0f1429ae Remove QRegExp based API and QRegExp usage from QTextDocument
Change-Id: Ib5cc2d747f215a483585b703f9b4f6415e0d59f7
Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
2020-04-01 10:29:26 +02:00
Lars Knoll 70beac08af Remove all QRegExp dependencies from widgets
QRegExp is deprecated in Qt6 and will get moved to the Qt 5 compat
library. As such we need to remove all API and usages of QRegExp
in Qt.

Change-Id: I33fb56701d3d7c577f98a304c1d4e6f626fcb397
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2020-04-01 10:29:26 +02:00
Lars Knoll 66f06a930d Make QLocale(QString) explicit
We should not implicitly convert a QString to a QLocale object. It can
easily create unwanted side effects.

Change-Id: I7bd9b4a4e4512c0e60176ee4d241d172f00fdc32
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2020-04-01 09:29:26 +01:00
Friedemann Kleint 098d2edb07 uic: Generate include statement for QActionGroup
Legacy forms from Qt 3 may still contain QActionGroup,
generate an include statement for them.

Change-Id: I292967f23f798a132ec7e360e437b20a529c3a26
Complements: bcaff2b06f
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-03-31 18:51:57 +02:00
Liang Qi 7ed097b31f Merge "Merge remote-tracking branch 'origin/5.14' into 5.15" 2020-03-31 16:24:30 +02:00
Friedemann Kleint 82a39f12fa QCommonStyle::pixelMetric(): Silence warnings about deprecated enum values
Add the Qt 6 code paths and enclose in warnings exclusions.

Change-Id: I321296ef220fb788f04979ffff42a8a5f226dfdb
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2020-03-31 16:08:53 +02:00
Timur Pocheptsov 44ceb56455 QFuture - add ability to move results from QFuture
QFuture's original design pre-dates C++11 and its
introduction of move semantics. QFuture is documented
as requiring copy-constructible classes and uses copy
operations for results (which in Qt's universe in general
is relatively cheap, due to the use of COW/data sharing).
QFuture::result(), QFuture::results(), QFuture::resultAt()
return copies. Now that the year is 2020, it makes some
sense to add support for move semantics and, in particular,
move-only types, like std::unique_ptr (that cannot be
obtained from QFuture using result etc.). Taking a result
or results from a QFuture renders it invalid.  This patch
adds QFuture<T>::takeResults(), takeResult() and isValid().
'Taking' functions are 'enabled_if' for non-void types only
to improve the compiler's diagnostic (which would otherwise
spit some semi-articulate diagnostic).
As a bonus a bug was found in the pre-existing code (after
initially copy and pasted into the new function) - the one
where we incorrectly report ready results in (rather obscure)
filter mode.

Fixes: QTBUG-81941
Fixes: QTBUG-83182
Change-Id: I8ccdfc50aa310a3a79eef2cdc55f5ea210f889c3
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-31 15:28:23 +02:00
Lars Knoll 3af596402a Remove QRegExp usage from QSslCertificate and QSslSocket
Change-Id: I81abe1ab2173af922fa4b5fad58d25fa602c523b
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-31 15:28:23 +02:00
Lars Knoll 6a8132c8ee Get rid of QRegExp usage in QFtp
Change-Id: Ia8743467d5b4537fe324a1278b526eb16bf0f732
Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-03-31 15:28:23 +02:00
Lars Knoll ed2e091d0d Don't keep a reference into the hash while modifying it
Change-Id: I8c7e180a3bc640a63c183f460918914265a2a31b
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2020-03-31 15:28:23 +02:00
Liang Qi 947e1f45c7 Merge remote-tracking branch 'origin/5.14' into 5.15
Conflicts:
	tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp

Change-Id: Ifaa56153f5f0d687a6b4d94f84fcfa1e1751afd2
2020-03-31 12:30:18 +02:00
Volker Hilsheimer d934fd7f54 Send MouseMove events without buttons if the press closed the popup
With nested popup widgets, pressing a mouse button on the lower
popup will close the active popup. MouseMove events that are generated
before the button is released again should not have that button
included, as it is likely to result in incorrect state handling in
the widget. This change removes all buttons from the MouseMove event,
which is the second best option.

This is mostly consistent with the behavior when closing a popup and
no other popup remains. The widget underneath will get MouseMove
events without the respective button included.

This change doesn't include a fix for the final release event, which
should ideally also not be delivered to the remaining popup, as it
never got a corresponding press event. Qt has already reset the states
in which it stores which widget received the press event at the time
the release is generated, such as qt_button_down and qt_popup_down.
So we can't separate a release grabbed by a newly opened popup (which
we want) from a release to the popup that became active after closing
(which we don't want).
However, widgets can more easily work around this issue, and the risk
of breaking things by changing the code further becomes too high.

Change-Id: I603bbdbc7e7355952d96ab77c5e2d2f1e6f94987
Fixes: QTBUG-82538
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2020-03-30 20:06:20 +01:00
Allan Sandfeld Jensen 8f88a3962a Fix 1 pixel wide images
Images are rounded up to 4 bytes per line minimum, so one pixel wide
images might not shrink when resizing.

Fixes: QTBUG-83179
Change-Id: If72c94409e4c899c5ad05b2867f5f53a94d0580f
Reviewed-by: Christian Kamm <mail@ckamm.de>
2020-03-30 20:55:11 +02:00
Liang Qi 22fe293038 testlib: add QAbstractItemModelTester::verify()
This amends b3e4be2d8b.

When building testlib with QtGui linked:(use "QT = core-private gui"
in src/testlib/testlib.pro)

    Undefined symbols for architecture x86_64:
      "QAbstractItemModelTester::verify(bool, char const*, char const*, char const*, int)", referenced from:
          QTestPrivate::testDataGuiRoles(QAbstractItemModelTester*) in qabstractitemmodeltester.o

Change-Id: Ideb10ddd6717fed8d9f91f75bbfc9d5a22104730
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2020-03-30 19:32:06 +02:00
Shawn Rutledge 68916fede4 Finish deprecating TouchPoint::rect, sceneRect and screenRect accessors
All 6 getters and setters were deprecated by doc comment \obsolete in
3c159957f8 (Qt 5.9). Now we will generate
compiler warnings too.

Change-Id: I94c6da607fa5758072af1287c9286b6c52179cfb
Reviewed-by: Frederik Gladhorn <gladhorn@kde.org>
2020-03-30 18:12:51 +02:00
Eskil Abrahamsen Blomfeldt 3abacf39de RHI: Fix running with Vulkan on Wayland
When the Wayland client plugin is in use, the capabilities
for the surface may report a minimum image count of 4. The
internal "maximum minimum count" of 3, was arbitrary and
only used for sizing buffers. To be more friendly to different
setups, we remove the restriction and use QVarLengthArrays
instead.

We also set the initial size of the buffers to 4 so that we
can run with Wayland without any resizing, but now the arrays
will also grow to be safe for cases where 4 is not sufficient.

Change-Id: Iba5434e84417d36b70f2655b152e816f04650ce4
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-03-30 14:04:19 +02:00
Eskil Abrahamsen Blomfeldt adc205631b Android: Update minimum version to 23 again
In 519ea72108, the minimum SDK
version was moved away from the AndroidManifest.xml, and when
the change was merged, we lost parts of the update to set
the minimum version to 23.

This redoes it in the remaining locations.

Change-Id: Iada8188d3c0c8ec0a4801c1d219640ecb3976753
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2020-03-30 13:04:06 +01:00
Eskil Abrahamsen Blomfeldt a35a7fcb5a Android: Implement MaximizeUsingFullscreenGeometryHint
(This reintroduces c17a5cec19,
which was reverted in Qt 5 because it requires API level 23.)

This flag tells the app to use as much of the screen as possible
while still keeping system UI visible, and can be supported on Android
by using translucent system UI, similar to iOS.

What this does:
1. It changes the current fullscreen/not-fullscreen logic to
allow three states: fullscreen, fullscreen with translucent
decorations and not-fullscreen.

2. In order for it to work, we have to send the actual
screen geometry and available geometry, at least in the case
where the user needs to know the available geometry to
know the safe area of the window. So we get the real screen
metrics and pass these to the QPA plugin (API level 17, so
we can do that now that the minimum version is 21.)

3. Note that getting the insets and calculating the useable
area does not work for non-fullscreen windows, since Android
is quite inconsistent in this respect. So in this case we
just use the window size and origin of 0,0 for the available
geometry.

4. Since we are touching this code anyway, this patch also tries to use
more consistent wording (calling it "available geometry" everywhere
instead of desktop geometry in some places and just geometry in
others, etc.)

[ChangeLog][Android] Qt::MaximizeUsingFullscreenGeometryHint window
flag is now supported, and will make the window fullscreen, but keep
the system UI on-screen, with a translucent background color.

Fixes: QTBUG-74202
Change-Id: I4cc5ef9cc2a3bd22d4d8d2bb767c6ff8a3aa75c0
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
2020-03-30 13:03:49 +01:00
Andy Shaw 2e0c29a4bb itemviews: Use the start of the current selection when getting the range
When doing a shift-select while moving the mouse then the start point
should be based on the start of the current selection and not the
pressed position. If there is no current selection start index, then
we can safely depend on pressed position as this will be the previous
index pressed on.

This resolves an issue introduced by
e02293a76d when fixing QTBUG-78797

Fixes: QTBUG-81542
Change-Id: Ia66c42b220452fdcbc8cfccc05dbc8a3911c3f5e
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2020-03-30 11:17:59 +00:00
Mitch Curtis 3f73995a03 Move undo framework out of Qt Widgets
- Moves QUndo* classes (except QUndoView) from src/widgets/utils to src/gui/utils
- Moves related auto tests from widgets to gui
- Replaces QUndoAction with lambdas that do text prefixing

[ChangeLog][Undo Framework] QUndo* classes (except QUndoView) were moved from Qt
Widgets to Qt GUI.

Done-with: volker.hilsheimer@qt.io
Fixes: QTBUG-40040
Change-Id: I3bd8d4d32c64f8dee548f62159a1df2126da89d8
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-03-30 12:36:29 +02:00
Lars Knoll adc1be3c33 Get rid of QRegExp usage in qfiledialog
and replace with QRegularExpression

Change-Id: Ic692fc0ea24da84dd4b6bb4c8a846c0fcc62c3cb
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
2020-03-30 11:33:11 +01:00
Lars Knoll 3532c0256d Make MatchRegExp an alias to MatchRegularExpression
All matching happens using QRegularExpression now.

Change-Id: I10bfcefbf4d9c79d235242e3e05116cdf7af02d1
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2020-03-30 11:33:07 +01:00
Lars Knoll 2e0070d42c Remove QRegExp dependencies and mentions
Change-Id: I399f8980f56eda5d60b554aa942bf045ab91e0d6
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2020-03-30 11:33:02 +01:00
Lars Knoll 3151c510e8 Remove some leftovers of QRegExpValidator
Amends dee55af0a5

Change-Id: I59c02c6c289028abb86cdab1b2f2b3efdcea7821
Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
2020-03-30 11:32:57 +01:00
Martin Storsjö 907652e1ed Extend the configure test for C++17 filesystem
If recent versions of libc++ are built with filesystem support disabled,
the filesystem header still is installed., The std::filesystem::path()
constructor is completely defined inline in that header, making the test
pass on such configurations, despite C++17 filesystem not being
implemented.

Test a call to std::filesystem::copy instead, which requires the actual
library implementation to be available as well (on recent libc++).

Change-Id: Id997ab75f3299d8431b13cad871f2901f4d9f6ed
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-30 13:31:05 +03:00
Eirik Aavitsland c3b6d09cae Update bundled libjpeg-turbo to version 2.0.4
[ChangeLog][Third-Party Code] libjpeg-turbo was updated to version 2.0.4

Change-Id: I7f74af0dc774a2172ff59713613a706e80d5b2cb
Reviewed-by: Liang Qi <liang.qi@qt.io>
2020-03-30 07:36:47 +01:00
Joni Poikelin 7eb7bb979e Fix Fusion style ignoring SH_UnderlineShortcut from proxy style
Fixes: QTBUG-83133
Change-Id: If3fbfae515567d9a0136beb35ca1f9f59460894b
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2020-03-30 09:11:26 +03:00
Volker Hilsheimer b61ea367a5 Fix deprecation warnings in QCocoaCursor
Explicitly use the Qt APIs that return QPixmap and QBitmap by value, and
fix the API taking those to use const references rather than pointers
or const values.

Change-Id: I2bb7ad1edb3b65f806f0475fca383e5b9bdb61f3
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2020-03-30 00:11:51 +01:00
Vitaly Fanaskov 5a0d4f3313 QtConcurrent: add fluent interface to configure a task before run
Task-number: QTBUG-82950
Change-Id: I449da938b6b501a7646b3425edde5c880d6ca87e
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Mikhail Svetkin <mikhail.svetkin@gmail.com>
2020-03-29 20:44:32 +01:00
Volker Hilsheimer d975ad4ed7 Merge QGuiShortcut and QShortcut again in QtGui
QShortcut has only one widget specific feature, which is whatsThis; that
is just a QString, so the setters and getters can just as well be in
QtGui.

The widgets specific implementation of shortcut matching and of showing
the whatsThis balloon stays in QtWidgets, in the private implementation.
Using virtual functions in the private we can override the empty default
in QtGui, and by adding a virtual factory function in QGuiApplication,
the correct private is instantiated depending on the kind of application
running.

Change-Id: I09ae4a5482f9fb70940c5e2bfe76d3d7fd710afc
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-29 19:31:14 +01:00
Volker Hilsheimer bcaff2b06f Remove QGuiAction again and split QAction implementation up instead
Duplicating the number of classes is a high price to pay to be able to
have some QAction functionality behave differently, or be only available
in widgets applications.

Instead, declare the entire API in QtGui in QAction* classes, and
delegate the implementation of QtWidgets specific functionality to
the private. The creation of the private is then delegated to the
Q(Gui)ApplicationPrivate instance through a virtual factory function.

Change some public APIs that are primarily useful for specialized tools
such as Designer to operate on QObject* rather than QWidget*. APIs that
depend on QtWidgets types have been turned into inline template
functions, so that they are instantiated only at the caller side, where
we can expect the respective types to be fully defined. This way, we
only need to forward declare a few classes in the header, and don't
need to generate any additional code for e.g. language bindings.

Change-Id: Id0b27f9187652ec531a2e8b1b9837e82dc81625c
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-03-29 11:18:57 +01:00
Konstantin Ritt e3d0184065 Follow bundled Harfbuzz update
as we raised the minimum requirement for harfbuzz to version 2.6.0:
* use new HB_SCRIPT values instead of tags
* get rid of deprecated (and no-more-used) callbacks
* replace deprecated hb_ot_tags_from_script() usage with a more
  flexible and up-to-date hb_ot_tags_from_script_and_language()

Change-Id: I0eafdd2d2028c353fa3a93f5868efceccd364a70
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2020-03-28 13:44:19 +03:00
Christian Ehrlicher 8de62d3432 QAbstractItemView::dataChanged(): optimize call to QWidget::update()
When topLeft and bottomRight are different in QAIV::dataChanged(), the
current implementation simply calls QWidget::update() without checking
if the affected cells are visible. This results in a big performance hit
when cells are updated frequently.
Now try to compute the exact update rect by iterating through the
modified indexes.

Fixes: QTBUG-58580
Change-Id: I97de567d494e40ed8cdb1ea1f5b3cf3a2f60455e
Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
2020-03-28 09:03:18 +01:00
Konstantin Ritt b8be5b4002 HB-to-Qt bridge: get rid of stale/dubious safety checks
these aren't needed for quite a long time already

Change-Id: I3a5ce3199cee467d7dfba3c68256d214fee4d83c
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-28 04:17:28 +03:00
Thiago Macieira 783d574b93 CBOR support: prevent overflowing QByteArray's max allocation
QByteArray doesn't like it.

Apply the same protection to QString, which we know uses the same
backend but uses elements twice as big. That means it can contain
slightly more than half as many elements, but exact half will suffice
for our needs.

Change-Id: Iaa63461109844e978376fffd15f9d4c7a9137856
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2020-03-27 16:45:48 -03:00
Qt Forward Merge Bot fd44fb7675 Merge "Merge remote-tracking branch 'origin/5.14' into 5.15" 2020-03-27 18:58:56 +01:00
Simon Hausmann 865d3846d8 Revert "QMetaType: support manual unregistration"
This reverts commit cf000d080c.

Reason for revert: This API is not needed (anymore) by qtdeclarative.

Change-Id: I8af604c2babe3afc11f183ddb3ce3a9038a456ad
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-03-27 16:57:05 +01:00
Morten Johan Sørvig 3a6d8df521 Revert "wasm: Specify event targets by CSS selectors; Support emsdk >= 1.39.5"
This reverts commit c6da278271.

This was a 5.15-only change which should not go into 5.14
since it raises the minimum supported emsdk version.

Task-number: QTBUG-83098
Change-Id: I9e15952803f9dfff89b5b4e9caeff5c03dabca27
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2020-03-27 13:47:09 +01:00
Simon Hausmann f3ce9e9332 Make QPropertyBindingPrivate accessible to QtQml
QtQml needs the private just for one detail which nobody else should
need it for: Tracking additional dependencies and marking the binding as
dirty. Exporting the private requires hiding some variables and
providing accessors, to compile with MSVC - including the removal of
QVarLengthArray usage. Upside: The binding structure shrinks by 8 bytes
and the encapsulation makes it a little easier to change things without
breaking declarative, ... in the unlikely event ;-)

Also remove setDirty() from the public API as it's not needed by QtQml
and using it is dangerous, because it means that there's a risk of
somebody keeping a reference (count) to the untyped binding from within
the binding closure, which introduces a memory leak.

Change-Id: I43bd56f4bdf218efb54fa23e2d627ad3acfafeb5
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-03-27 13:29:47 +01:00
Eirik Aavitsland 533f7d7ca3 Raster painting: fix dashing for separate lines
When drawing multiple distinct (unconnected) lines (e.g. from
QPainter::drawLines() or a QPainterPath with alternating
movetos/linetos), the dash pattern should not continue from one to the
next, as it should when drawing a connected line (e.g. polyline).
Both the cosmetic stroker and the full stroker does it right, but the
fast rasterizing codepath got it wrong.

Fixes: QTBUG-83048
Change-Id: I3d090f7121726755a0e53cb66b99a5563ac0e1c0
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2020-03-27 12:31:01 +01:00
Volker Hilsheimer 0613bf5d16 QTextEdit: remove the cursor when a read-only textedit looses focus
A read-only text edit with Qt::TextSelectableByKeyboard shows a steady
cursor to indicate to users that they can select the text, but not edit
it. When the control receives focus, it doesn't turn on blinking, but
explicitly sets cursorOn to true.

When focus is lost, then cursorOn needs to be reset to false to make
the cursor disappear, even if the blinking (as indicated by the poorly
named cursorVisible variable) is not on.

Change-Id: I78408b5c50c6ede3f9a7128be7a31b9c6795cf9c
Fixes: QTBUG-83029
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2020-03-27 12:13:53 +01:00
Tor Arne Vestbø d4a4202caa widgets: Sync client rect of paint-on-screen widgets during resize
Paint events are delivered with the client rect of the widget, and
this applies to paint-on-screen widgets as well. The same goes for
how the widget repaint manager tracks dirty rects. Internally we
were also calling paintOnScreen() with client rects, so the use
of geometry() in the resize handler was likely a bug/oversight.

Change-Id: I1312ccf77218d1162e0971e4cbabaa80f49c852c
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-03-27 11:19:52 +01:00
Tor Arne Vestbø 80be47ae06 macOS: Fix or ignore deprecated API in 10.14
Fixes: QTBUG-82128
Change-Id: I11abfcf7f245a7a25733625b50e207b07abba289
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-03-27 09:00:11 +00:00
Qt Forward Merge Bot 4752bd7718 Merge remote-tracking branch 'origin/5.14' into 5.15
Conflicts:
	src/corelib/serialization/qcborvalue.cpp

Change-Id: I539d8cae5fd413b8a6c9c5d8a6364c79c8133a0a
2020-03-27 09:23:33 +01:00
Christian Ehrlicher ddcf0df7d7 Speed up QSortFilterProxyModel filtering
Speed up the QSortFilterProxyModel filtering by only updating the
source_to_proxy entries which are really changed - When proxy intervals
are added or removed, it is not needed to update the proxy_to_source
indexes which were not touched.

Change-Id: I35459ff1b04f4610ec74f4b01d58a71832a9ae22
Reviewed-by: David Faure <david.faure@kdab.com>
2020-03-27 06:56:23 +01:00
Lorn Potter 6434101360 wasm: refactor network to use fetch API
This has better support for threaded use, and gets rid of bind use.

This requires emscripten 1.38.37 and above

Task-number: QTBUG-76891
Change-Id: Ic30a6820c2ce945c314751c06cfc356914a71217
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2020-03-26 22:36:36 +00:00
Topi Reinio 96de59d7c1 Doc: Document new property change notifiers for QSortFilterProxyModel
Change-Id: I02789fa2281d33c7344a5d5e730a27fe6fa50e56
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-03-26 15:28:42 +01:00
Topi Reinio 07558ae12d Doc: QItemSelectionModel: Note when function default arguments were added
Change-Id: I4b7a9269b68c86548035b57211c4c1b5ad451767
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-03-26 15:28:08 +01:00
Topi Reinio 7d0f24b166 Doc: Mark QTextStream manipulators as deprecated
and instruct to use the ones from the Qt namespace instead.

Task-number: QTBUG-82532
Change-Id: I6a85f5096da8aec925a287beff136b77d113926e
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-03-26 15:27:58 +01:00
Topi Reinio beffcc590c Doc: Expand reasoning for QHash deprecations
and mark QHash::[const_|key_]iterator operators correctly as deprecated.

Change-Id: I01da16254759b9bdb7920709de45a72933d6b5c8
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-03-26 15:27:49 +01:00
Topi Reinio f588804725 Doc: Expand reasoning for QMap deprecations
Change-Id: Idaec1ebd2a392af2b8d778e72acda6bd117d1a48
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-26 15:27:39 +01:00
Topi Reinio bd9a13b370 Doc: Fix \fn command for qScopeGuard(F &&f)
and tag it in the header file to ensure the documentation is matched.

Change-Id: Id1e7cd395ca0ec337845da9a207bfbf95db01064
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-26 15:27:28 +01:00
Topi Reinio 737e7524e8 Doc: Fix documentation for deprecated QSet functions
QDoc has trouble applying the \obsolete command for multiple
topic (\fn) commands in one go. Separate them out and expand
the reasoning for deprecation.

Mark the rest of the deprecated functions and typedefs related
to reverse iterators as \obsolete.

Change-Id: I09858efd7e1e5fc890d4f3f063f00c8812fc0b52
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-03-26 15:27:16 +01:00
Topi Reinio 5a7a590e8a Doc: Mark deprecated QMutableSetIterator functions as \obsolete
Change-Id: I07a4ade20242fbe4139c0b88cf8728dd74628511
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-03-26 15:27:07 +01:00
Topi Reinio e16137d2db Doc: Document QDBusReply copy constructor
Change-Id: Ice71b8d48f92b9ecd3075fba1927d3657934b018
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-03-26 15:26:48 +01:00
Topi Reinio c81b172781 Doc: Mark gamma-related functions deprecated in QImageReader/Writer
Change-Id: I0a9fbcca7a10a6555f5879cc4955f046eaa56602
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-03-26 15:26:35 +01:00
Topi Reinio a320b57f1d Doc: Don't mention deprecated functions in QTabletEvent overview
Change-Id: I5d41d6061403f2923d673376be7cf1250d0f0e82
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2020-03-26 15:26:21 +01:00
Volker Hilsheimer 5f87fb8813 QLineEdit: Include the horizontal margin in minimumSizeHint
The margin is respected in the sizeHint, but not in the minimumSizeHint.
Since the latter should be the former for a single character (as per the
documentation promising enough space for one character), the margin
calculation needs to be identical.

Adjusting the documentation nevertheless, as there are characters that
won't fit either way. As reported, the permyriad character doesn't fit
even with this fix on macOS, as the core graphics API we are using
doesn't report a glyph-index for U+2031 (so our existing assumption
that 'W' is the widest character is still the best we can do).

Change-Id: I30573960c316cc7b8c9bbe3c3f4c6351792bed36
Fixes: QTBUG-82970
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-03-26 14:56:57 +01:00
Lars Knoll b3b51a7665 Fix deprecation warnings for QInputDialog::getDouble()
The way this was done didn't really make sense. The change added
an overload with one additional argument. The deprecation warning
would have now forced everybody to explicitly specify all arguments
to avoid the warning.

Instead, keep both overloads in 5.15, but document them as one method.
Remove the old version in Qt6 and move the default arguments to the
new version.

Change-Id: I738d4d1b99cdf30db53acf14382a00cac74aa10a
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
2020-03-26 14:48:17 +01:00
Andre de la Rocha 319ac188eb Windows QPA: Enable Toggle UIA pattern for all checkable controls
This change allows the checked/unchecked state to be detected by screen
readers for all controls with a checkable state.

Task-number: QTBUG-81919
Change-Id: I604151397b4ae21297009c274ffe634723ebe783
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-03-26 14:25:00 +01:00
Andre de la Rocha c91b7f15ce Add "checkable" state to QAccessibleTableCell
The information about whether a table/tree item may be checked is necessary
to allow the platform code (in particular, Windows UI Automation layer)
to make this information available to screen readers.

Task-number: QTBUG-81919
Change-Id: Id68eea4a004788751404d70567222a2c531578aa
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2020-03-26 14:24:43 +01:00
Morten Johan Sørvig 85a1582412 wasm: add braces around multiline else case
From clang warning:

qwasmcompositor.cpp:335:13: warning: misleading indentation;
	statement is not part of the previous 'if' [-Wmisleading-indentation]
		offset += (delta +delta);

Change-Id: Id372dfdd8fda1c705c61a24c26843dfb33fba40c
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
2020-03-26 12:31:09 +01:00
Paul Wicking 3f3e200aef Doc: Fix coverity warnings in SQL snippets
Fixes: QTBUG-83008
Change-Id: I126bc04719cd221a3d80ae825fca44e63aeec934
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-03-26 12:25:06 +01:00
Lars Knoll f2208c59e7 Add a public qsimd.h header
This header only covers a part of what qsimd_p.h does, namely
the compile time detection of simd extensions.

Change-Id: I05f1d987f194a5bec335f2405cc2846fbaa88b66
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-03-26 09:15:37 +01:00
Lars Knoll f2f32b88b8 Move qsimd* from corelib/tools to corelib/global
It's not used in tools at all and fits a lot better in global.

Also fix the qsimd_x86* files to have a proper copyright
header.

Change-Id: Id3d8e7cfcd7769a1ca9f3d8cf6d357a31a99ba40
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-26 09:15:32 +01:00
BogDan Vatra c0538d5ff3 Revert "Android: Fix compile on arm64"
This reverts commit 81d6906ad9.

Fixed upstream. \sa https://github.com/harfbuzz/harfbuzz/issues/1308

Change-Id: I7759e2bb199ffd11d42239be59704c4e1f7ddb9f
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-26 01:57:11 +03:00
Lars Knoll 6fea5b4dd8 Make QCborValue::toCbor() const
Those methods don't modify the CBOR value, they should be const.

Change-Id: I213984ed82e43429413344999a22ad1c4c3beac8
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-03-25 23:33:57 +01:00
Thiago Macieira f581b04119 QCborValue: apply a simple optimization to avoid unnecessary allocations
If the map or array is known to be empty, we don't need to allocate a
QCborContainerPrivate.

Change-Id: Ief61acdfbe4d4b5ba1f0fffd15fe212b6a6e77c3
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-25 16:22:02 -03:00
Thiago Macieira 02d595946f QCborValue::fromCbor: Apply a recursion limit to decoding
A simple 16k file can produce deep enough recursion in Qt to cause stack
overflow. So prevent that.

I tested 4096 recursions just fine on my Linux system (8 MB stack), but
decided 1024 was sufficient, as this code will also be run on embedded
systems that could have smaller stacks.

[ChangeLog][QtCore][QCborValue] fromCbor() now limits decoding to at
most 1024 nested maps, arrays, and tags to prevent stack overflows. This
should be sufficient for most uses of CBOR. An API to limit further or
to relax the limit will be provided in 5.15. Meanwhile, if decoding more
is required, QCborStreamReader can be used (note that each level of map
and array allocates memory).

Change-Id: Iaa63461109844e978376fffd15fa0fbefbf607a2
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-25 16:21:47 -03:00
Thiago Macieira b7da66132b QCborValue: create a wrapper to set the QCborStreamReader error state
The next commit will need to do so from outside QCborContainerPrivate,
where QCborStreamReader::d can't be accessed (private).

Change-Id: Iaa63461109844e978376fffd15fa0f6f04081bf2
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-25 16:21:38 -03:00
Thiago Macieira 028ddf3633 QProcess/Linux: use the FFD_VFORK_SEMANTICS flag
... when we are not using the FFD_USE_FORK flag. We use the FFD_USE_FORK
flag when we have user code to run in setupChildProcess(). This code is
enabled for all Unix, but forkfd() honors this flag only on Linux >=
5.4.

See the commit adding the flag for more information on what the flag
does and see the comment in this commit on why it's safe to use it.

Fixes: QTBUG-17331
Change-Id: I1bee3bc466a04f19bd6efffd15f448cb23ce1e91
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
2020-03-25 20:19:41 +01:00
Thiago Macieira defd49f7bf forkfd: add FFD_VFORK_SEMANTICS flag
This flag asks forkfd() to use vfork semantics wherever available. That
is, suspend the calling process execution until the child either does an
execve(2) or _exit(2). The advantage of that is that it puts lower
pressure on the OS VMM system, as the number of pages that need to be
copy-on-write duplicated is much smaller (still not zero, as at least
the stack in the child will be written to).

However, the only implementation that supports using this flag for now
is Linux's pidfd. It would be possible to add to FreeBSD, but pdfork(2)
does not have a flag for this behavior -- if it gets one, we can add
support for it later. Everywhere else, we need to force the child to not
exit until we store the child process's PID in the ProcessInfo structure
we allocated, which means the parent process must run before we even
return from forkfd().

Change-Id: I1bee3bc466a04f19bd6efffd15f447f28c201aa9
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2020-03-25 20:19:38 +01:00
Thiago Macieira ba5e2ce49a forkfd: fix forkfd_wait when FFD_USE_FORK was active
If we detected that the OS supports a version of system forkfd (Linux
pidfd, FreeBSD procdesc), the forkfd_wait() function was using only the
system waiting implementation, which of course can't work for file
descriptors created with FFD_USE_FORK. So just detect EBADF and attempt
again.

If the file descriptor is neither one of our pipes nor a system forkfd,
bad things will happen...

Fixes: QTBUG-82351
Change-Id: I4e559af2a9a1455ab770fffd15f59fb3160b22eb
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
2020-03-25 20:19:36 +01:00
Thiago Macieira 4605583fec forkfd: introduce forkfd_wait4() that takes options
"wait4" because it looks like the wait4() BSD function, which has the
signature:

       pid_t wait4(pid_t pid, int *wstatus, int options,
                   struct rusage *rusage);

And because ours also has 4 parameters.

Having options is important anyway. I might want to add some more later,
but we can't really support them with the fall back implementation (in
fact, we don't honor WNOHANG in the fall back implementation either).

Change-Id: I4e559af2a9a1455ab770fffd15f5858bb357e15b
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
2020-03-25 20:19:34 +01:00
Fabian Kosmale fe275c75ae QMetaType: Do copy constuctible check at compile time
Change-Id: I2f6a9bbaa0153fa33fc6a0b68bcedfbe3b9b1a7c
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-25 17:55:29 +01:00
Fabian Kosmale 98ca319819 QMetaType::fromType: support classes with inaccessible dtors
Change-Id: I60a1b2496d48651a8166173b420da37f59d7a395
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-25 17:55:28 +01:00
Mårten Nordheim eb13e75f56 QHttpNetworkReplyPrivate: Remove unused variable
Oh, and re-remove the spdy protocol handler.

Change-Id: I9ca3517b14ac202eac19ae75d481cfd78d431abb
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-03-25 16:44:17 +01:00
Michal Klocek b1e3f33a28 Call post routines from ~QGuiApplication
Currently depending if user uses QApplication
or QGuiApplication we end up in different behavior
when running post routines. For example QApplication
destructor calls post routines before stopping event dispatcher,
In case of QGuiApplication post routines are called
from QCoreApplication destructor, so no more event dispatcher.
This behavior is not consistent and creates troubles
when releasing resources of web engine.

Attached test will hang on windows with QGuiApplication,
however works fine with QApplication.

Task-number: QTBUG-79864
Change-Id: Ice05e66a467feaf3ad6addfbc14973649da8065e
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-03-25 14:40:32 +00:00
Kai Koehne e63d227289 CMake: Warn about using internal macros and functions
These functions and macros were never documented.
Let's warn about using them for now, with the option of
removing / renaming them in Qt 6.

Change-Id: Ia595aa35b73e54534e535d2946581651af8023f2
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-03-25 14:43:02 +01:00
Leander Beernaert 8dcf7d2674 CMake: Add support for bundled SQLite library
Change-Id: I4d3f6e3bf04eb2fcf337e2c5dbc04b6e6f8ebe0b
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-03-25 13:52:05 +01:00
Lars Knoll 46ebd11e66 Fix deprecation of QComboBox:::currentIndexChanged(const QString&)
Don't introduce another overload with two parameters. Users
want a simple signal to connect to, not another overload. Deprecate
the currentIndexChanged(QString) overload, usage of that can/should
get replaced by currentTextChanged().

This partially reverts commit 11dc7b35c8.

Change-Id: I5e7d16413f3d62b1a5a7a197f510af2c45cdfa55
Reviewed-by: Vitaly Fanaskov <vitaly.fanaskov@qt.io>
2020-03-25 13:09:38 +01:00
Tor Arne Vestbø 02fa39ed22 macOS: Flush sublayers via separate IOSurface backingstores
Flushing sublayers via QImage copies of the root IOSurface was causing
performance regressions due to the constant allocations of new images
each frame.

We now re-use the QCALayerBackingStore implementation for sublayers,
which gives a dynamic swap-chain.

We're still paying the CPU cost of the copy from the root backingstore
to the layered backingstores, as well as the memory cost, but at least
improves the situation.

We do not try to be smart and paint directly into the sublayers,
as that would leave the root backingstore stale, potentially causing
glitches when views are repositioned. Investigating this is left
for future work.

Fixes: QTBUG-82986
Change-Id: I758a3d8e1e40e2ed4fe6bc590a4a5a988d87a3a7
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
(cherry picked from commit ce2d68ebe1aefeae78ff2fd8ec5ff7e20790ef69)
2020-03-25 12:20:00 +01:00
Joni Poikelin d0b30de542 Avoid recreating QRegularExpression for every text block
With very complex regular expressions this makes a significant
difference in performance.

Change-Id: I5267bf71cae98dffb58ec7a1fc982dae639ff312
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2020-03-25 12:33:26 +02:00
Lars Knoll 7b5e4b6944 Don't call QSet::erase() on an end iterator
hash.erase(hash.constFind()) is bound to crash if the hash doesn't
contain the item we're looking for.

Change-Id: Icbefca87b0258970373ec55d5dc113e6ab39c5f0
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-25 11:33:23 +01:00
Leander Beernaert f716a87352 CMake: Fix configuration of FEATURE_JPEG
Without this patch JPEG support is always disabled, even though we can
build it from 3rdparty sources.

Change-Id: I9e619f0ca8ec3ca3e7c58981bb6af9b33426a029
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-03-25 10:51:55 +01:00
Lars Knoll 874c6b00dd Remove QSignalMapper::mappedWidget()
mappedObject() can do exactly the same thing, there's no need for a
mappedWidget() signal as well

This removes a reverse dependency between Qt Widgets and Qt Core where
QWidget pointers are being used inside Qt Core.

[ChangeLog][QtCore] Removed QSignalMapper::mappedWidget. Connect to
mappedObject instead, and use qobject_cast<QWidget *> to handle Widgets.

Change-Id: I60618a34dd94575e993bd6d8a2cead95cfd71d55
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-03-25 09:46:15 +01:00
Lars Knoll 53f8f23369 Get rid of QRegExp usage in rcc
As a drive-by, enable testing of rcc in the cmake build.

Change-Id: I4150ff3ffe7404bab0cbc72f80b23b47a60cf33d
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
2020-03-25 09:34:37 +01:00
Lars Knoll a7fe1af609 Remove QRegExp usage from the XBM handler
Change-Id: Ie7141c2a04c233bc1298195aebfc0437e43df0d1
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2020-03-25 09:34:32 +01:00
Kai Koehne de67bca44e Remove qt6_use_modules
qt5_use_modules has been deprecated in 2013 (commit d9ea4bb144)
and removed for the first time in 2018, but then brought back - see
discussion in https://lists.qt-project.org/pipermail/development/2018-June/032837.html .

Anyhow, I think we can finally put it to a rest in Qt 6.

Change-Id: I770f7e93406ad68535d1d90e4a3bacfb920e2d5a
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-03-25 08:39:43 +01:00
Giulio Camuffo b15ed929f3 Fix memory leak
When creating a new QColorSpacePrivate it must be reffed otherwise in
the destructor the deref() will bring the count to -1 which is true
and will not delete the d_ptr.

Change-Id: Id569bae22134b56bf6ad37158d7079b495599fd7
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
(cherry picked from commit 20eabb72de)
2020-03-25 01:15:51 +01:00
Konstantin Ritt 5e213a41ce HB-to-Qt: stop propagating helpers and types not used outside QtGui
Change-Id: I039efaeabc83bc0367bb3ab949057d2cbc6c2742
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-25 02:22:14 +03:00
Morten Johan Sørvig 1d5eb202b9 wasm: Add OpenGL version check
QtQuick3D probes for the supported OpenGL level by testing
multiple OpenGL versions in descending order. Context creation
must fail for versions not supported by WebGL. It does not
appear that Emscripten does this for the 3.x minor versions,
at least.

Add version check which allows OpenGL (ES) 3.0 and 2.0.

Change-Id: Ide8745dd79e69af86812a8d6f5d6cc16ecdd099a
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
2020-03-24 21:08:54 +00:00
Allan Sandfeld Jensen 5e1e4b9d52 Extend tiled optimization in 64-bit painting to 64-bit sources
Change-Id: I74b88781d631ee68822cd08f9cb0aca03f7b688e
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2020-03-24 21:29:22 +01:00
Liang Qi 08fff0cb55 Merge "Merge remote-tracking branch 'origin/5.14' into 5.15" 2020-03-24 21:22:40 +01:00
Timur Pocheptsov 4561370661 More qOverload cleanups in qtbase
Task-number: QTBUG-82605
Change-Id: I1c3c14ed82911ed5483258c11e76f5dd7744fa12
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-24 20:58:13 +01:00
Allan Sandfeld Jensen 28a0f1ba79 Fix use of deprecated ::forcesign
Change-Id: I39322bcc0e24d0bfccf43c8700a166ce350208ea
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-03-24 17:41:30 +01:00
Mårten Nordheim 737fe89691 Q{File,FileInfo,Dir}: add std::filesystem::path overloads
Add some overloads where (I thought) it makes sense for QDir and QFile
to accept std::filesystem::path objects. Currently my thinking is to
not add overloads for static functions where std::filesystem can already
do the same job, e.g. create directory or file.

Template and enable_if is needed due to both QString and
std::filesystem::path being able to be constructed from string literals.

The common shared code is currently in QFile because QDir had an
implicit include of QFile, made explicit in this patch, and QFileInfo
has an include to QFile as well.

The QT_HAS_STD_FILESYSTEM macro is visible in user-code which I
currently take advantage of in the tests, and users could too.

Change-Id: I8d05d3c34c6c17e20972a6a2053862b8891d6c3c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-03-24 16:20:03 +01:00
Liang Qi 576dc2c701 Merge remote-tracking branch 'origin/5.14' into 5.15
Conflicts:
	src/plugins/platforms/xcb/qxcbdrag.cpp

Change-Id: I0b47324b70b0b4894e54b21aa3e7a5041f9bd5e3
2020-03-24 14:36:02 +01:00
Oliver Wolff f10b31fc1b ANGLE: Fix resizing of windows (Take 2)
Task-number: QTBUG-62475
Change-Id: I0ea17e7875906508941ae64bb396a4236928b0f9
Reviewed-by: Miguel Costa <miguel.costa@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-03-24 14:25:51 +01:00
Tor Arne Vestbø bd78753d62 widgets: Re-calculate focus frame style option after setting new geometry
Fixes: QTBUG-83019
Change-Id: I75d3d93732cb0c5a5b7350f19f0227998bda4791
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-03-24 10:19:12 +01:00
Sze Howe Koh 6a972f44f3 QXcbCursor: Replace deprecated QCursor API
Align with e79a625381 in qtbase.

Task-number: QTBUG-48701
Change-Id: Ia3ca2de6bbf4e9c1738f77193351dd95a14dd2dc
Reviewed-by: Liang Qi <liang.qi@qt.io>
2020-03-24 06:26:33 +00:00
Konstantin Ritt 7c3700c070 Darwin: get rid of Harfbuzz/CoreText specific code
once CoreText shaper in Harfbuzz has been disabled, we do not need
the hack-ish enablers to support it

Follows-up 21c242f9fd

Change-Id: I40d598b2c9b57ca7953716a56e4e119b2fc06a9b
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-24 02:00:22 +03:00
Konstantin Ritt 1ab2e4baef Harfbuzz: get rid of Qt-specific patch in CoreText shaper code
this code isn't used as of 21c242f9fd
and thus we do not need to keep the patch around

Change-Id: Ic3b836c6a68f40b8e450542a39db968ef3b09101
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2020-03-24 01:58:08 +03:00
Konstantin Ritt 12d3d32f31 QTextEngine: stop guessing the same language in a loop
Change-Id: I155b9380a4ff412d59c7939c377d20f4783e4730
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2020-03-24 01:57:09 +03:00
Volker Hilsheimer 34fe5f75bc Deprecation warnings: replace qrand with QRandomGenerator
Change-Id: I80fe6f611b367c6c8a1b77e82dc791493f88929b
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-03-23 20:24:58 +01:00
Volker Hilsheimer c14f3deca9 Fix deprecation warnings from NSColor(Space) with macOS 10.14 SDK
The support for handling color spaces by names is deprecated in
recent AppKit versions, and should be replaced by using
NSColor.type, and operations on the type-specific properties of
the color.

Merge the two implementations from qcoregraphics.mm and
qcocoacolordialoghelper.mm, which also fixes the inconsistent
interpretation of color components as device dependent (in
qcoregraphics) or generic (in qcocoacolordialoghelper). We now
always populate the QColor with device independent components.

Change-Id: Id79c609736ff1962bebe4bd7158781a6d1b4475e
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-03-23 17:36:52 +01:00
Alexander Volkov cc1d891b8e xcb: Add support for XdndActionList property
This allows to pass and receive possible drop actions from other
processes, including GTK applications.

Fixes: QTBUG-75744
Change-Id: I944edc6fa00f8801a25912e70eb104a647a9fc0e
Reviewed-by: JiDe Zhang <zccrs@live.com>
Reviewed-by: Liang Qi <liang.qi@qt.io>
2020-03-23 19:35:19 +03:00
Sona Kurazyan 9ff75d4ea1 Make QFuture::d private
Change-Id: I5820fa1d6d0f003a7cb95db115ef90b32f380a79
Reviewed-by: Vitaly Fanaskov <vitaly.fanaskov@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-23 16:47:55 +01:00
Sona Kurazyan 1005c86c61 Clean-up the duplicate code in QFuture and QFutureWatcher
QFuture<void> and QFutureWatcher<void> are specialized to not contain
any of result fetching methods, but otherwise they share almost the same
implementation with QFuture<T> and QFutureWatcher<T> respectively.

This change unifies their implementations to get rid of unnecessary code
duplication.

Change-Id: I9494ddc58c6db192c66edb988105927da6d61a3b
Reviewed-by: Vitaly Fanaskov <vitaly.fanaskov@qt.io>
2020-03-23 16:47:47 +01:00
Giulio Camuffo 20eabb72de Fix memory leak
When creating a new QColorSpacePrivate it must be reffed otherwise in
the destructor the deref() will bring the count to -1 which is true
and will not delete the d_ptr.

Change-Id: Id569bae22134b56bf6ad37158d7079b495599fd7
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2020-03-23 16:47:22 +01:00
Mitch Curtis 3f744be923 Merge "Merge remote-tracking branch 'origin/5.14' into 5.15" 2020-03-23 13:55:35 +01:00