Commit Graph

44417 Commits

Author SHA1 Message Date
Alexandru Croitor
05a0a278fc CMake: Allow disabling warnings similar to CONFIG += warn_off
The QT_COMPILE_OPTIONS_WARNINGS_OFF property can be set on targets
in order to disable adding the default compiler warnings flags.

This is useful when building 3rd party library code.

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

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

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

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

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

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

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

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

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

Task-number: QTBUG-74409
Change-Id: Iefde4945ede27cf3c2f6f50e5a693c03625cadf6
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-02-22 09:11:29 +01:00
Timur Pocheptsov
c58ee54a70 tst_qtcpsocket::bind - amend the recent fix
0. The recent patch fixed the case when we can suddenly (meaning from
a particular version of Darwin) bind on a port number 1. Unfortunately,
it's not the case for IPv4 and while fixing one test case, the patch broke
another - so this patch addresses this.
1. Unfortunately, binding on a fixed port 1 on macOS made the test flaky
- we run this 'bind' several times and sometimes OS thinks port is already
bound (because of the previous test case) - closing the connection seems
to fix this problem (thus this patch do this also).
2. As a bonus a proper resource management added (aka RAII) where we would
previously leak a socket in case some QCOMPARE failed.

Fixes: QTBUG-81905
Change-Id: I90c128a332903bb44ab37de4775ca00d390dc162
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2020-02-22 03:36:54 +01:00
Volker Hilsheimer
962a3d8a98 Stabilize QFileSystemModel::dirsBeforeFiles test
Make the test operate in its own temporary directory, so that entries
left behind by other test functions don't impact this test.

Also, call QFileSystemModel::sort explicitly; it would otherwise only
be done once through a single-shot timer, and the test processes events
until the model is populated, which might not process that delayed
sorting. Since dirsBeforeFiles tests the sorting algorithm and not
the sorting logic, best to do this explicitly.

In case of sort failure, print diagnostics.

Done-with: Friedemann Kleint <Friedemann.Kleint@qt.io>
Fixes: QTBUG-75452
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
(cherry picked from commit 4e796e0b0d)
Change-Id: I144b68a17280a38cc7d6daf7ec343eea4453623d
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-02-22 02:52:44 +01:00
Volker Hilsheimer
1ce3585305 Detect double timer during single timeout in registerTimer test, and skip
We observe this happening on macOS in the CI system, and it might happen
if a VM doesn't get CPU cycles for long enough time so that two timers
time out. Then event processing will process two timer events, and we
overwrite the timerIdFromEvent with the second event.

Instead, skip the test when this happens.

This is an ammendment to 5c520f4b0a

Fixes: QTBUG-71751
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
(cherry picked from commit 67491e2df5)
Change-Id: I30eef8cfc94988e6cad500dd5e6722488c2985be
2020-02-22 02:52:36 +01:00
Volker Hilsheimer
c3951470ca Discover the conditions under which registerTimer is flaky, and skip
On macOS, the registerTimer test case fails frequently, and blocks
valid integrations. With this change we try to detect the condition
and skip the test.

Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
(cherry picked from commit 5c520f4b0a)
Change-Id: I97644b5b4654b4c96fbc99858bbf191e6edb5977
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-02-22 02:52:24 +01:00
Johan Klokkhammer Helsing
872af6811b Move QOpenGLBuffer from QtGui to QtOpenGL
Task-number: QTBUG-74409
Change-Id: I72c839e54f24810b2bde2385c568921c4e4a2869
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-02-22 02:08:26 +01:00
Qt Forward Merge Bot
aa3226bab3 Merge "Merge remote-tracking branch 'origin/5.14' into 5.15" 2020-02-22 01:00:18 +01:00
Qt Forward Merge Bot
65cafea797 Merge remote-tracking branch 'origin/5.14' into 5.15
Change-Id: Iace12004afdfe765a3068dfcf6f1320c1123c539
2020-02-22 01:00:07 +01:00
Giuseppe D'Angelo
4b0fc03077 Update md4c to 0.4.3
Fixes important bugs.

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

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

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

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

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

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

Change-Id: I247f39c2ba46c7fa5be51e01cc41fd8b8a93cea7
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-02-21 19:20:31 +03:00
Alexandru Croitor
6d29264e3e CMake: Set minimum deployment target only for host macOS
A future change will come that sets it for iOS and friends.

Change-Id: I74b688ee62d24137e3cdf5475e1a9e858698ccf0
Reviewed-by: Leander Beernaert <leander.beernaert@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-02-21 16:16:26 +01:00
Frederik Gladhorn
e3c4870feb Do not try to find .qmake.conf past the root directory
In case of .qmake.conf not existing, this would result in an infinite loop.

Change-Id: I577aaed7a502efb7b01dc6b199dcf464358bf5a9
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-02-21 16:04:19 +01:00
Mårten Nordheim
1826fa978a Move function declaration to global scope so namespace is applied
The function-local declaration ignores the current namespace and when
linking it will look for a global exported function named
qt_writing_system_for_script instead of the one found in our namespace.

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

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

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

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

Task-number: QTBUG-82356
Change-Id: I849934ca2e5604b9fb2f045ed4f6058f3e0426ff
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-02-21 10:38:58 +01:00
Johan Klokkhammer Helsing
e0fb295aad Port lance manual test to qopengl
Task-number: QTBUG-74408
Change-Id: I5e112a2024aebee4be740e770ea0fb4e5b2a9daa
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2020-02-21 10:01:23 +01:00
Johan Klokkhammer Helsing
e3f2e7afbb Remove legacy OpenGL examples
They all used QGL (which has been removed).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Change-Id: I88b2d74b3da82e91407d316aa932a4a37587c0cf
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-02-20 16:11:02 +01:00
Leander Beernaert
a99d7cf372 CMake: Add missing compile flags for msvc
This patch adds a couple of missing compile flags that are defined in
mkspecs/common/msvc-version.conf and mkspecs/common/msvc-desktop.conf
that were not yet ported to CMake.

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

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

Task-number: QTBUG-74409
Change-Id: I87ff6c35dfed1303bd6d74621b244e1ed84ceafe
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2020-02-20 16:11:01 +01:00
Leander Beernaert
a2376f4ded CMake: Fix tst_plugin
It is not possible to exclude targets based on the build configuration
in CMake. loadDebugPlugin() and loadReleasePlugin() will always fail as
both debug and release plugins are built regardless of the build
configuration.

This patch adds the CMAKE_BUILD define and skips the opposite test on
Windows. E.g.: With config = Debug, the loadReleasePlugin() test is
skipped and viceversa.

Change-Id: I2659882604bb39eb11d3e9e2b2b37a2972475285
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-02-20 15:11:01 +00:00
Leander Beernaert
0959c75d16 Apply the same fix from test/auto/network to network benchmarks
Change-Id: I81d41aa526d5c06adef637e756a3d81e799443e4
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-02-20 16:11:01 +01:00
Leander Beernaert
f03a51a404 CMake: Fix use of compile define QT_NO_DEBUG
Prior to this patch QT_NO_DEBUG would not be correctly set for
generators which support multiple configurations such as Visual Studio
and XCode.

This patch also applies the define to all executables, which was
previously missing.

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

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

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

Task-number: QTBUG-82168
Change-Id: Idcdd6365b5619824b41c1278e5dc5ffb81c400f8
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2020-02-20 12:36:58 +01:00