Commit Graph

7734 Commits (fa8d021fa6fcb040fb702b6ffd2deee52a3b748a)

Author SHA1 Message Date
Allan Sandfeld Jensen 9815ebf24b Switch QSurfaceFormat::colorSpace to a QColorSpace
Allows more flexibility in the future.

Change-Id: Idcf2d8ddaee268a7b5d55379ccb42dd9b3c33abf
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-09-15 01:41:13 +02:00
Allan Sandfeld Jensen fce84f76f0 Get rid of Qt4 virtual hooks
They have existed throughout Qt5, and no longer used by any
QIconEngine I am aware of.

Change-Id: Iab0a978be808a60fb82379467e294e2457056bae
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2020-09-15 01:40:43 +02:00
Laszlo Agocs d7d0f4d5a0 rhi: gl: Eliminate duplicate glUniform calls
This can happen when there is a uniform block in the Vulkan
shader with an instance name, both in the vertex and fragment
shader. The members are mapped to members of a struct uniform
in GLSL since we do not use uniform buffers there.

Now if there is, for example, "ubuf.opacity" both in the vertex and
fragment shader reflection info, then it's still just one single
uniform in the GL program, using one location. Registering it twice
in our 'uniforms' list is harmless, but wasteful, since it means the
uniform value will be set twice upon each setShaderResources().

Change-Id: Ib646eaec333522560d631b3b81800ef610f09319
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2020-09-14 20:41:42 +02:00
Inho Lee 02d5566d68 QRhi: support matrix array types of the uniform in GLES2 backend
Task-number: QTBUG-83173
Change-Id: Ieda8948820a9470e3b0bc420ec7b1af09395d568
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-09-14 20:41:42 +02:00
Shawn Rutledge db07a20355 Remove QPointerEvent::isPointAccepted() and setPointAccepted()
They are redundant, not in use, and got added without implementation in
a81859a3c8.

Change-Id: Ifed1fbf97a8158c2801df09dac47bf1fc90795d4
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-09-14 17:14:52 +02:00
Joerg Bornemann 82ff8a51f9 Revert "Revert "CMake: Make the Vulkan dependency of QtGui optional""
This reverts commit f0873a1c62.
The build failure caused by 58c1c6ee5c has
been fixed.

Change-Id: I5cec78b353089ca024e905795bc99cad423c2d4e
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-09-14 15:03:13 +02:00
Kai Koehne cdb9ffd7e1 Windows: Fix clang error about copy on loop
clang on Windows shows an error:

qtbase/src/gui/text/windows/qwindowsfontdatabase_ft.cpp:122:25: error: loop variable 'key' of type 'const QString' creates a copy from type 'const QString' [-Werror,-Wrange-loop-construct]
        for (const auto key : keys) {
                        ^

Change-Id: Icdfa5e2a6753450213dcb96df70247c5a71c2293
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-09-14 12:41:00 +02:00
Tor Arne Vestbø 0c02f133f3 Plumb application quit through platform plugin
If we have a platform plugin we ask the platform to quit, and if
not we fall back to the base implementation of QCoreApplication
that sends Quit events directly.

This allows the platform to involve the rest of the system in the
process. The platform will then come back with a spontaneous quit
via QWSI::handleApplicationTermination(), which will then send
the corresponding Quit even from QGuiApplication like normal.

Task-number: QTBUG-45262
Task-number: QTBUG-33235
Task-number: QTBUG-72013
Task-number: QTBUG-59782
Change-Id: I0000aaf7192e4b905933c5da0e53901c6c88f26a
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-09-14 12:41:00 +02:00
Lars Knoll f0873a1c62 Revert "CMake: Make the Vulkan dependency of QtGui optional"
The last 4 cmake changes broke configuring qtbase on at least
Volkers and my machine (Ubuntu 20.04)

Revert the changes, to unblock development of qtbase and
other modules.

This reverts commit 16aa8c8f4d.

Change-Id: Id562bdac1915dba429ae4a0af6054d3e5e5e5d12
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-09-13 12:20:50 +02:00
Lars Knoll 652bd1efca Make QStringList an alias to QList<QString>
Fix our API, so that QStringList and QList<QString> are the
same thing.

This required a bit of refactoring in QList and moving the
indexOf(), lastIndexOf() and contains() method into
QListSpecialMethods. In addition, we need to ensure that
the QStringList(const QString&) constructor is still available
for compatibility with Qt 5.

Once those two are done, all methods in QStringList can be moved
into QListSpecialMethods<QString>.

Change-Id: Ib8afbf5b6d9df4d0d47051252233506f62335fa3
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-09-12 23:37:15 +02:00
Lars Knoll 557623cc4f Rename QLibraryInfo::location() to path()
As per ### Qt6 comment. Also rename the LibraryLocation enum
to LibraryPath.

Change-Id: I556025a19c5bcdf2ff52598eaba32269522d4128
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-09-12 23:35:56 +02:00
Lars Knoll b311aff0a0 Fix uninitialized variable
Amends defc8414fd

Change-Id: I0a62f08cb9428e94b30f659d810c767c2bc1b4b2
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-09-12 21:40:21 +02:00
Joerg Bornemann 16aa8c8f4d CMake: Make the Vulkan dependency of QtGui optional
Vulkan cannot be a required public dependency of QtGui, because a
vulkan-enabled build of Qt will fail on a machine where the vulkan
headers are not installed. We cannot make the vulkan dependency private,
because we have public Qt headers that include vulkan headers.

The vulkan dependency is now marked as optional, meaning consuming
projects will try to find it, but there will be no error on failure.

Task-number: QTBUG-86421
Change-Id: I30edfd3eaa603048f4274e77036c54d90789d3c9
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-09-12 19:27:01 +02:00
Nicolas Fella 89c65bc8f7 Fix documentations string in QPagedPaintDevice
pageLayout().pageOrientation() does not exist, but pageLayout().orientation() does.

Pick-to: 5.15
Change-Id: I17a667b18aba284b91972422e604568e2fdbda05
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-09-12 08:43:18 +02:00
Richard Moe Gustavsen 43fa4b2687 QStyle: return 'Fusion' instead of 'fusion'
This change should have no impact on Widgets, since style names
there are case-insensitive. But for QtQuick controls the style
names are case sensitive. So in order to use the style hint
from the platform theme for controls, we need to return
the name with an uppercase "F".

Change-Id: I360f43f174938202b0ef2cdfcde6daf39c9f39bb
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2020-09-12 08:38:39 +02:00
Volker Hilsheimer 60a6f3f3da Remove dead code and obsolete comment
The special members do nothing that the compiler-generated default
doesn't do, so remove them.

Remove the comment introduced in d06b4ca9a1 about
QBitmap inherting QPixmap being a problem. It which wasn't followed
up on for Qt 6, and making QBitmap a QPaintDevice rather than a
QPixmap subclass (as implied in the commit message) would result in
significant code duplication.

Change-Id: I8d5032062f95ab19b38eb97d17191a9b13af870f
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-09-12 05:43:01 +02:00
Allan Sandfeld Jensen 5bb4baae03 Replace qreal with float in QColor
There is no reason to use double precision for colors. We at most have
16 significant bits anyway.

Change-Id: I8b402cd978675b8ba7248176976d934363212ff1
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
2020-09-11 20:41:15 +02:00
Allan Sandfeld Jensen 9346760f5a Minimal ABI necessary for future optimized QPixmap
Add virtual hooks that can make it possible in Qt6 to implement paint
device specific pixmaps.

Change-Id: Ib1d1d7b5e32d9430203f718534344b25c0ead744
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2020-09-11 19:47:10 +02:00
Lars Knoll defc8414fd Cleanup QGradient
Tackle some cleanups scheduled for Qt 6.

Change-Id: I46e6e49e3d74f49ce953a36c5611d635232d43b1
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-09-11 19:32:35 +02:00
Lars Knoll 698761ea8a Remove Qt6 related comment
We can't unexport the class, as it's being used by the
OpenGL paint engine in QtOpenGL.

Change-Id: I74c1bef0e4720a82679a329462e80571f0583a84
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2020-09-11 19:32:35 +02:00
Laszlo Agocs 2c7152ba09 rhi: gl: Fix shader cache with unstable vertex input locations
Task-number: QTBUG-86531
Change-Id: I9bcd314e06662e3c6cc4204b24689d61ee6cb298
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2020-09-11 11:30:56 +02:00
Joerg Bornemann 756c65d367 Fix build with -trace lttng
Fix superfluous space in qtgui.tracepoints and make tracegen more
lenient towards unknown types (the ETW implementation outright ignores
those).

Pick-to: 5.15
Fixes: QTBUG-86546
Change-Id: I71cc323afa1009dbaefe20e55818ecb6c0b09c59
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
2020-09-11 11:30:55 +02:00
Joerg Bornemann 69004cb290 Do not expose xlib as public dependency of QtGui
Consumers of QtGui should link explicitly to xlib if needed.

Fixes: QTBUG-86421
Change-Id: Ibc94eb1c1ac405b53749b320c388b037bf693a08
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-09-11 00:41:13 +02:00
Joerg Bornemann 0f4422113c Do not expose ATSPI as public dependency of QtGui
This was always a compile-only dependency and atspi includes are only
used in private headers. The atspi headers can never be a requirement
for consumers of QtGui.

In Qt5 this code was part of the QtLinuxAccessibilitySupport private
module, and for that module the atspi dependency was public. This only
affected users that explicitly instructed qmake to pull in the
linuxaccessibility_support-private module.

Task-number: QTBUG-86421
Change-Id: I23c6a1c466f86b2015dde13fca605fd26299c9db
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-09-11 00:41:11 +02:00
Joerg Bornemann c30ea1f412 CMake: Re-generate src/gui/CMakeLists.txt
Change-Id: Id2666c3021bcfbeec0e661129c7998977411aaee
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-09-11 00:41:08 +02:00
Joerg Bornemann d774930891 CMake: Re-generate configure.cmake files
Change-Id: I9c325db8031e14cf2a2cfb49e5080e3043a0811a
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2020-09-10 18:05:22 +02:00
Allan Sandfeld Jensen 7249a87b06 Cleanup PageSize enum for Qt6
Fixes B5/B6 order and removes abandoned documentation for a removed duplicate.

Change-Id: I7647ee31a4ef4aa754058c8a6f68b4d4304e0043
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-09-10 17:30:33 +02:00
Allan Sandfeld Jensen 54c37146b7 Clean-up of old VC6 work-around
Change-Id: Ic518f48b62055a4fa229751a80362f9426e0ac42
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2020-09-10 17:28:12 +02:00
Morten Johan Sørvig b3c991ae8f Port from devicePixelRatioF() to devicePixelRatio()
This ports all of QtBase.

Change-Id: If6712da44d7749b97b74f4614a04fac360f69d9e
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-09-10 17:28:11 +02:00
Topi Reinio e1ce78d484 Doc: Fix documentation issues for event and input device classes
* Document the new base classes QPointerEvent and QSinglePointEvent,
  and move relevant documentation to be located under them.
* Replace linking to deprecated functions with their new counterparts.
* Remove non-existent function and parameter documentation.
* Document QEventPoint::State enum.
* Prefer \obsolete over \deprecated and fix the usage.
* Document the Capabilities enum in the correct location and
  add docs for the missing enum values.

Change-Id: Ic8f2732f2e90ecbf522cd744c601cedcc574825c
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2020-09-10 17:28:11 +02:00
Shawn Rutledge a81859a3c8 Move grabbing API from QEventPoint to QPointerEvent
We plan to move storage of the grabbers into QPointingDevice so that
QEventPoint will store only data that does not need to persist between
deliveries of individual events. These API changes prepare for that.

addPassiveGrabber/removePassiveGrabber is a better API than
setPassiveGrabbers(), because it will never require constructing a
temporary QList just to call the function. Eventually we need to emit
signals to notify about grab changes, so it's better to have incremental
changes to the list rather than needing to iterate and find differences.

Fix up the docs.

QEventPoint IDs are no longer written in hex in debug output.
That was done in Qt 5 because an ID was a composite of device ID
with the OS-provided touchpoint ID; but since the QPointingDevice
is always available, it's more readable if the IDs are in decimal.

Change-Id: I86b9016d9b28c331ca05c7c108d9788de93fb642
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-09-10 14:21:47 +02:00
Volker Hilsheimer 62f5ecca7d Clean up PageSizeId enum
Reorder, and remove ### Qt 6 comment

It would be nice to have a way to statically assert that the order
of StandardPageSizes (and their id) matches the order of the enum,
but it's not possible (or at least very cumbersome) to do so.

Change-Id: Id0d0a58958f1e17151725cbe8f8068db64f84939
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-09-10 11:24:20 +02:00
Allan Sandfeld Jensen 030962b01c Cleanup QAction::visible property
Gives it its own changed signal, and simplifies setting from group,
while fixing an inconsistency in propagation.

Change-Id: I22b243210260a8878144fa4b60204df46f847f37
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-09-10 09:24:18 +00:00
Shawn Rutledge ae7442a4e9 Give QEventPoint a d-pointer after all
I still have doubts that QEventPoint can't be made small enough that
copying would be cheaper than reference-counting and all the indirections
in now-noninline accessors, but this gives us the usual freedom to
change the data members later on.

Change-Id: I792f7fc85ac3a9538589da9d7618b647edf0e70c
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-09-10 03:15:49 +02:00
Allan Sandfeld Jensen d263ab6af5 Create consistent sets of QImage methods
Adds consistently named inplace and imperative methods.

Change-Id: I8739c1c4585d2ba4aa181bb9a681255d76c120d7
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2020-09-09 00:14:49 +01:00
Shawn Rutledge 0e475eeea6 Refactor testlib touch functions into qtestsupport_gui and _widgets
Because we removed public setters from QTouchEvent and QEventPoint in
4e400369c0 and now it's proposed to give
QEventPoint a d-pointer again, the implementation of QTouchEventSequence
needs to start using QMutableEventPoint: being a friend will no longer
be enough, because the member variables won't be accessible in the future.
But because we have separate test libs for Gui and Widgets, it needs to
be further refactored into two classes.

Change-Id: I0bfc0978fc4187348ac872e1330d95259d557b69
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-09-08 08:02:15 +02:00
Marcel Krems fc3d10d37a Remove deprecated method QOpenGLFunctions::initializeGLFunctions()
Change-Id: I0c02b22630f8c9d463f48f6402a1930b60d3f818
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-09-08 08:02:15 +02:00
Marcel Krems e8b0b5c0ce Remove deprecated API from QSurfaceFormat
Change-Id: I8dacdaa18cea967a85e8835c2440ba53ee5df2e1
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-09-08 08:02:15 +02:00
Marcel Krems e14e46ccd6 Remove deprecated method QTextList::isEmpty()
Change-Id: I7acc0bb110c2bed55374576f59c24451afa7742a
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-09-08 08:02:15 +02:00
Lars Knoll 0ae5b8af9c Clean up QTextBoundaryFinder and qunicodetools
Make QTBF ready for Qt6 by using qsizetype in the API and use
QStringView where it makes sense.

Change the exported API of qunicodetools to use QStringView as
well and use char16_t internally.

Change-Id: I853537bcabf40546a8e60fdf2ee7d751bc371761
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-09-07 09:09:55 +02:00
Marcel Krems c93b91c766 Remove deprecated method QQuaternion::conjugate
Change-Id: If539e47618357ef329925033842f266447632e6f
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-09-07 04:36:16 +02:00
Allan Sandfeld Jensen 68198de4db Use C++17 [[maybe_unused]]
In some places needs to be ordered before const/constexpr though.

Change-Id: I57a521ac0ad22b5a018761c4d52befbef69d64c0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-09-06 18:31:43 +02:00
Lars Knoll 75d1d2a913 Get rid of hasPendingEvents() and flush()
They are unused.

Change-Id: I77383f2be45551401ed9c2f88285511134cc8b0d
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-09-06 00:17:12 +02:00
Andy Shaw 973a795bec When finding the engine for a fallback font, then clear the families
If it is a fallback font, then it should just have family set to that
font so it does not get interference from what the families were
originally set to.

Fixes: QTBUG-85560
Change-Id: I6232f3d2ae12052fa3b0b3bc0e7f106e239a585d
Pick-to: 5.15
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2020-09-05 05:22:45 +02:00
Lars Knoll db61425225 Remove some obsolete code
Those checks aren't required anymore for Qt 6.

Change-Id: Ida9f93544f42cb03723659a81e0094aa0cf14799
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-09-05 02:07:29 +02:00
Volker Hilsheimer 403b01f866 Change translation context of strings to new class
The strings were in QFileDialog context even though they were in
QFileIconProvider, probably for historical reasons.

Now that the strings have been moved into QtGui, using a QtWidgets class
as the context makes no sense.

Change-Id: Ia4f3bd18abaab2a5fbbb94e945782f4d2d94e7d1
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-09-05 02:03:58 +02:00
Volker Hilsheimer 455d811b58 Fix compiler warnings from using deprecated qChecksum overload
Change-Id: Ib7a6d0e752dc662a42abe38f2010da3f2b4626f1
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-09-05 02:03:49 +02:00
Liang Qi c91d1fdc10 xcb: drop Xinerama support
[ChangeLog][Important Behavior Changes][X11] Xinerama is no longer
supported.

Fixes: QTBUG-86082
Change-Id: Ieb57d9035e1659fc22bf8333247fc3573fb62992
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2020-09-04 17:28:49 +00:00
Volker Hilsheimer c87b626d70 Merge QPainterPathPrivate and QPainterPathData
As per ### Qt 6 comment, and the code that never allocated QPainterPathPrivate.

Change-Id: I553e3559fdb2a675f37cdd9855462a2f22ef84c6
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2020-09-04 08:38:10 +02:00
Volker Hilsheimer 00a5629d8d Remove deprecated QPrinter and QPagedPaintDevice APIs
Adjusting the QPrinter test case - some use cases no longer exist, or are
already tested in QPageSize and QPageLayout tests.

Adjust examples and manual tests.

Change-Id: I01cbc65f3d8031aea2dac86dd942126ba708b111
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2020-09-04 08:37:59 +02:00
Volker Hilsheimer 85b0335c41 Tighten up QDialogButtonBox::ButtonLayout enum
... and the equivalent enum in QPlatformDialogHelper.

No need to keep numerical values the same anymore.
Remove ### Qt 6 comment.

Change-Id: Ib369ea6ca2362f6ab0f71a3a6c90c4adaa7f11cd
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-09-03 18:51:41 +02:00
Tasuku Suzuki 21de5aa1ac Fix build without features.highdpiscaling
Broken since 37d5aaa4b4

Change-Id: Id741f23ccae4f619e6a389ee71b3e7fe0c599989
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-09-04 00:33:50 +09:00
Laszlo Agocs f6802a5aac rhi: Sanity check the srb in debug builds
Instead of cryptic assertions and crashes depending on the backend,
show some useful warnings (in debug builds only) when one tries to
create an srb with a list where there are duplicated bindings. (a
mistake that happens relatively often during the development of
frameworks, such as Quick 3D, on top)

Change-Id: If1b50a2e8165b001878ad566e048f146e636514f
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2020-09-03 14:18:30 +02:00
Volker Hilsheimer 6bbf3f0257 Mark obsolete QPrinter functions as deprecated from 5.15 on
Some of the methods are overrides of virtuals in QPagedPaintDevice, so document
and mark those as obsolete as well.

Adjust code that calls those APIs to use the recommended replacement.

Change-Id: I3cd1980609ea20808d17379a5f97ca595e869875
Pick-to: 5.15
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-09-03 07:00:36 +02:00
Giuseppe D'Angelo 25351dcc54 Long live QKeyCombination!
C++20 via P1120 is deprecating arithmetic operations between
unrelated enumeration types, and GCC 10 is already complaining.
Hence, these operations might become illegal in C++23 or C++26 at
the latest.

A case of this that affects Qt is in key combinations: a
QKeySequence can be constructed by summing / ORing modifiers and a
key, for instance:

  Qt::CTRL + Qt::Key_A
  Qt::SHIFT | Qt::CTRL | Qt::Key_G (recommended, see below)

The problem is that the modifiers and the key belong to different
enumerations (and there's 2 enumerations for the modifier, and one
for the key).

To solve this: add a dedicated class to represent a combination of
keys, and operators between those enumerations to build instances
of this class.

I would've simply defined operator|, but again docs and pre-existing
code use operator+ as well, so added both to at least tackle simple
cases (modifier + key).

Multiple modifiers create a problem: operator+ between them yields
int, not the corresponding flags type (because operator+ is not
overloaded for this use case):

  Qt::CTRL + Qt::SHIFT + Qt::Key_A
  \__________________/      /
          int              /
           \______________/
                  int

Not only this loses track of the datatypes involved, but it would
also then "add" the key (with NO warnings, now its int + enum, so
it's not mixing enums!) and yielding int again.

I don't want to special-case this; the point of the class is
that int is the wrong datatype. Everything works just fine when
using operator| instead:

  Qt::CTRL | Qt::SHIFT | Qt::Key_A
  \__________________/      /
      Qt::Modifiers        /
           \______________/
            QKeyCombination

So I'm defining operator+ so that the simple cases still work,
but also deprecating it.

Port some code around Qt to the new class. In certain cases,
it's a huge win for clarity. In some others, I've just added
the necessary casts to make it still compile without warnings,
without attempting refactorings.

[ChangeLog][QtCore][QKeyCombination] New class to represent
a combination of a key and zero or more modifiers, to be used
when defining shortcuts or similar.

[ChangeLog][Potentially Source-Incompatible Changes] A keyboard
modifier (such as Qt::CTRL, Qt::AltModifier, etc.) should be
combined with a key (such as Qt::Key_A, Qt::Key_F1, etc.) by using
operator|, not operator+.  The result is now an object of type
QKeyCombination, that stores the key and the modifiers.

Change-Id: I657a3a328232f059023fff69c5031ee31cc91dd6
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-09-03 07:00:31 +02:00
Giuseppe D'Angelo 39e07ebf64 Long live QAIM::multiData!
Views / delegates absolutely *adore* hammering data(). A simple
QListView showing a couple of dozens entries can call data()
a hundred of times on the first show.

Back of the hand calculation,

* 2 times per visible item (sizeHint() + paint()),
* times 9 roles used by the default delegate,
* times 20 visible items

= 360 as a bare minimum, assuming the view doesn't redraw twice
accidentally. Move the mouse over the view, and that'll cause
a full update with certain styles: 360 calls to data() per update.

This has an overhead visible in profilers. The model's data()
has to re-fetch the index from its data structure and extract
the requested field every time.

Also, QVariant is used for the data interexchange,
meaning anything that won't fit in one is also a memory allocation.
This problem will likely be gone in Qt6Variant as that
will store sizeof(void*) * 3, meaning QImage/QPixmap and similar
polymorphic classes will fit in a QVariant now...

So I'm trying to to remove part of that overhead by allowing
views to request all the data they need in one go. For now,
one index a a time.

A view might also store the data returned. The idea is that
the same role on different indexes will _very likely_
return variants of the same type. So a model could move-assign
the data into the variant, avoiding the memory allocation
/deallocation for the variant's private.

This patch:

1) Introduces QModelRoleData as a holder for role+data.

2) Introduces QModelRoleDataSpan as a span over QModelRoleData.
The idea of a span type is twofold. First and foremost, we are
in no position to choose which kind of container a view should
use to store the QModelRoleData objects for a multiData() call;
a span abstracts any contiguous sequence, leaving the view free
to do whatever it wants (statically allocate, use a vector, etc.).
It also solves the problem of efficient passing the roles and
gathering the returned variants from multiData().

3) Add multiData(), which populates a span of roles for a given
model index. The main advantage here is that a model can fetch
all the needed information for a given index just once, then
iterate on the span and provide data for each requested role.
Cf. this with data(), where every call has to re-fetch
the information for the index.

A couple of models have been ported to multiData(), as well as
QStyledItemDelegate.

[ChangeLog][QtCore][QModelRoleData] New class.

[ChangeLog][QtCore][QModelRoleDataSpan] New class.

[ChangeLog][QtCore][QAbstractItemModel] Added the multiData()
function.

Change-Id: Icce0d108ad4e156c9fb05c83ce6df5f58f99f118
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-09-02 22:51:42 +02:00
Volker Hilsheimer e3c08da307 Remove last traces of the PostScript paint engine
Remove enum value, documentation, and another ### Qt 6 comment.

Change-Id: I046d9581625d39c8fc8cf75287e8767501aae0cc
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2020-09-02 22:44:26 +02:00
Tor Arne Vestbø 233b6534a7 High-DPI: Remove legacy environment variables
QT_DEVICE_PIXEL_RATIO is replaced by QT_SCALE_FACTOR, while
QT_AUTO_SCREEN_SCALE_FACTOR is replaced by QT_ENABLE_HIGHDPI_SCALING.

Since High-DPI is now always enabled, there's no reason to keep the
code path for android.app.auto_screen_scale_factor. Also, based on
the original commit message that introduced this code, the value of
the property should have been true.

Change-Id: Ib34b1deeab46c488c67c4d64f087599b4a54dc55
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2020-09-02 19:00:18 +02:00
Friedemann Kleint a494da3b20 Document native interfaces
As the private headers are not included by default in the precompiled
header QDoc builds for QtGui, create a custom module header for
the documentation build and pull in the required headers.

Add dummy declarations for Windows-specific types for building docs
on non-Windows platforms.

Task-number: QTBUG-83252
Change-Id: I225ed08f68cf4f7c1f1d093424070b13ce36aa51
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-09-02 05:29:44 +02:00
Friedemann Kleint d23c118fd4 QTextHtmlParserNode: Fix warnings flood about setting negative pixel size
Exclude the default value (-1) from the check.

Amends 0bd770fb87.

Pick-to: 5.12 5.15 5.15.1
Change-Id: Ib98ae166fd5fdab546c5d4212ce78345b5c9b583
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-09-02 00:13:24 +02:00
Andreas Hartmetz 7f878c6217 Remove "fallback session management"
With the Qt6 compatibility break, it can finally be removed.
Closing windows (which might quit the application with
quitOnLastWindowClosed() true, the default) acted contrary to the
documentation of the commitDataRequest() signal, which could have
been a hint.

This removes the workaround API from the fix for QTBUG-49667 and
also removes the problematic feature that it worked around.

Change-Id: I672be58864ef062df7fb7f2a81658b92c4feedd2
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-09-01 10:16:15 +02:00
Paul Wicking 98f41552e4 Doc: compile transform snippets
Done-with: Nico Vertriest <nico.vertriest@qt.io>
Fixes: QTBUG-81486
Change-Id: Ie35d22469e7f8d9c244b70665af30b39e265766a
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-09-01 06:13:22 +02:00
Paul Wicking 614ca8ec4a Doc: compile separations snippets
Done-with: Nico Vertriest <nico.vertriest@qt.io>
Task-number: QTBUG-81486
Change-Id: I62294cedd4a0f96ebc2513b5b4179d451bb4b375
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-09-01 06:13:20 +02:00
Paul Wicking 7e571c3927 Doc: compile scribe-overview snippet
Done-with: Nico Vertriest <nico.vertriest@qt.io>
Task-number: QTBUG-81486
Change-Id: If760744aba49361d8d9ed51c4a2641b743c35c25
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-09-01 06:13:20 +02:00
Paul Wicking ad654870cb Doc: compile textobjectinterface snippet
Done-with: Nico Vertriest <nico.vertriest@qt.io>
Task-number: QTBUG-81486
Change-Id: Ibad1ef95b85d5484ee7e9cceee8019d026c10cb9
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-09-01 06:13:19 +02:00
Paul Wicking 319e22cb4a Doc: compile qstatustipevent snippet
Done-with: Nico Vertriest <nico.vertriest@qt.io>
Task-number: QTBUG-81486
Change-Id: I44c7b31e0a99009f51f81e2c8d0e736e6eafd535
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-09-01 06:13:18 +02:00
Paul Wicking 5ee39fc7c9 Doc: compile qimagewriter snippet
Done-with: Nico Vertriest <nico.vertriest@qt.io>
Task-number: QTBUG-81486
Change-Id: Ibb4087d7035c3061b2980b317ab4280fa38aab50
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-09-01 06:13:18 +02:00
Paul Wicking 45211e947a Doc: compile qfileopenevent snippet
Done-with: Nico Vertriest <nico.vertriest@qt.io>
Task-number: QTBUG-81486
Change-Id: I28d7e9749b7a8feacd6b82abebcea462010caeba
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-09-01 06:13:17 +02:00
Paul Wicking 87eb059ed3 Doc: compile polygon snippets
Done-with: Nico Vertriest <nico.vertriest@qt.io>
Change-Id: I29caf1818154df3b0f2b599ac19c966e826f6287
Taks-number: QTBUG-81486
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-09-01 06:13:17 +02:00
Paul Wicking 47e0309ea8 Doc: compile plaintextlayout snippet
Done-with: Nico Vertriest <nico.vertriest@qt.io>
Task-number: QTBUG-81486
Change-Id: I2bac37fd41703cc4cfb7de3946b31412c4af37b9
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-09-01 06:13:16 +02:00
Paul Wicking d46eed31a0 Doc: compile picture snippets
Done-with: Nico Vertriest <nico.vertriest@qt.io>
Task-number: QTBUG-81486
Change-Id: I9daf8ed8c7d9620cd59feb40677795cbac30c97c
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-09-01 06:13:15 +02:00
Paul Wicking 91ab585147 Doc: Remove obsolete snippet file
QMatrix is gone, remove the snippet file as the content is
not referenced anywhere.

Done-with: Nico Vertriest <nico.vertriest@qt.io>
Task-number: QTBUG-81486
Change-Id: I57040bce50cc51f7a3580af65cc56713567330f9
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-09-01 06:13:15 +02:00
Paul Wicking fd8132b8ae Doc: compile image snippets
Done-with: Nico Vertriest <nico.vertriest@qt.io>
Task-number: 81486
Change-Id: I9860217a80cf94d27542d7e7836fe60fcd60897e
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-09-01 06:13:14 +02:00
Paul Wicking 65fb72d302 Doc: compile droprectangle snippets
Done-with: Nico Vertriest <nico.vertriest@qt.io>
Task-number: QTBUG-81486
Change-Id: I0087f7cc0746168bc2223972074fed468c3fba46
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-09-01 06:13:13 +02:00
Paul Wicking 4dd53a40aa Doc: Compile dropevents snippets
Done-with: Nico Vertriest <nico.vertriest@qt.io>
Task-number: QTBUG-81486
Change-Id: I8d2eebcd82f47c500a215e310b5828f9b7e303c6
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-09-01 06:13:12 +02:00
Paul Wicking 88e3bdb6e6 Doc: Remove unused snippet files
Done-with: Nico Vertriest <nico.vertriest@qt.io>
Task-number: QTBUG-81486
Change-Id: I7bf5794ffc9f96ca0cb85cc6f58b4400468df439
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-09-01 06:13:12 +02:00
Nico Vertriest e1915cd83e Doc: Make snippets Qt Gui compilable - textblock-fragments
Task-number: QTBUG-81486
Change-Id: I3a6ee6ef744abb694d1cc7ef409f8bb584854395
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-09-01 06:13:11 +02:00
Paul Wicking 37fbffee81 Doc: Remove unused files from snippet
These files aren't referenced from anywhere and duplicates
other snippet content. Remove them.

Task-number: QTBUG-81486
Change-Id: I48976dae3c095ae38ced682147527f2809a8fef6
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-09-01 06:13:11 +02:00
Nico Vertriest b6043dc34e Doc: Make snippets Qt Gui compilable - textblock-formats
Task-number: QTGUI-81486
Change-Id: I06dd6ce04b4d37c49df07d4b1b47c3ef029ee419
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-09-01 06:13:10 +02:00
Paul Wicking 03887ab8a3 Doc: Compile droparea snippet
droparea.h has been removed. Remove all code that depends on that header
except the one snippet that is still used. Add minimal code to allow
the snippet to be compiled.

Done-with: Nico Vertriest <nico.vertriest@qt.io>
Task-number: QTBUG-81486
Change-Id: I58c80d3527c82389ccff97567f4c75c33aec0f5e
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-09-01 06:13:09 +02:00
Nico Vertriest e596f15a45 Doc: Make Qt Gui snippets compilable - textdocument-texttable
Task-number: QTBUG-81486
Change-Id: If77873649aa10552047e0f89a7fccf55597e73f5
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-09-01 06:13:09 +02:00
Paul Wicking b16b7d8879 Doc: Compile textdocument-tables snippets
Minor code cleanup in passing.

Task-number: QTBUG-81486
Change-Id: I23f8b3a22f627050582c69c81e5e0b85b5e45768
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-09-01 06:13:08 +02:00
Nico Vertriest e81383eb09 Doc: Make Qt Gui snippets compilable - textdocument-selections
Task-number: QTBUG-81486
Change-Id: I467ca4d5ecd33f84e44b456a9559748ffd6cc53c
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-09-01 06:13:07 +02:00
Nico Vertriest b5a1e7ac5c Doc: Make Qt Gui snippets compilable - textdocument-resources
Task-number: QTBUG-81486
Change-Id: Ifd3b8d79617532bf16f33f0935f370b956048130
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-09-01 06:13:07 +02:00
Nico Vertriest 69b622cb3d Doc: Make Qt Gui snippets compilable - textdocument-printing
Task-number: QTBUG-81486
Change-Id: If811ac26eebbd6b3f9fd20e2b3fb29d3be24d1cb
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-09-01 06:13:06 +02:00
Nico Vertriest fcea9d4b72 Doc: Make Qt Gui snippets compilable - textdocument-lists
Task-number: QTBUG-81486
Change-Id: I5f8017c7dc7fc735af83279ac340e3dfde68af89
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-09-01 06:13:06 +02:00
Nico Vertriest fec48857e8 Doc: Make Qt Gui snippets compilable - textdocument-listitemstyles
Task-number: QTBUG-81486
Change-Id: Ie718f4ae3de3f9ae12702264f5455f23d38bf1fe
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-09-01 06:13:05 +02:00
Nico Vertriest 29949cc0f7 Doc: Make Qt Gui snippets compilable - textdocument-listitems
Task-number: QTBUG-81486
Change-Id: I7bbecd3cbf086243ea3a03fb7822064bde85201c
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-09-01 06:13:05 +02:00
Nico Vertriest 38653f1633 Doc: Make snippets Qt Gui compilable - textdocument-images
Task-number: QTBUG-81486
Change-Id: I98b6d0b498d181931ee0fc2e39cb1fde5208a303
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-09-01 06:13:04 +02:00
Nico Vertriest 935ce5e41d Doc: Make snippets Qt Gui compilable - textdocument-imageformat
Task-number: QTBUG-81486
Change-Id: I9bf94bb8c82d7751a8615c6e1e3278400e77ce3a
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-09-01 06:13:04 +02:00
Nico Vertriest 2be708b801 Doc: Make snippets Qt Gui compilable - textdocument-imagedrop
Task-number: QTBUG-81486
Change-Id: I80b66fce31ba5ee511690283cf56ce4306702b14
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-09-01 06:13:03 +02:00
Nico Vertriest 6283f447cd Doc: Make snippets Qt Gui compilable - textdocument-frames
Task-number: QTBUG-81486
Change-Id: Ia027d2f07e61944e8a2cc40a24ee23b2d8e526b0
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-09-01 06:13:02 +02:00
Nico Vertriest b28870b2cc Doc: Make snippets Qt Gui compilable - textdocument-find
Task-number: QTBUG-81486
Change-Id: I97b2b9a9b672776971e4792b713a23272eb653ce
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-09-01 06:13:02 +02:00
Nico Vertriest d76d37fd1a Doc: Make snippets Qt Gui compilable - textdocument-cursors
Task-number: QTBUG-81486
Change-Id: If02da7248b6c0299909fad83681fd5f08f3e29d9
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-09-01 06:13:01 +02:00
Nico Vertriest 0f1c8d437f Doc: Make snippets Qt Gui compilable - textdocument-css
Task-number: QTBUG-81486
Change-Id: I4c73a0902bc1c47cd2fa90553941bf8824ba5914
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-09-01 06:13:00 +02:00
Paul Wicking 1ca85a2fd1 Doc: Compile GUI vulkan snippets
Fix minor issues (e.g. whitespace, missing semi-colon) in passing.

Change-Id: Ia16a7793b999e7ffd8d387fa3826117a4ade2c41
Done-with: Nico Vertriest <nico.vertriest@qt.io>
Task-number: QTBUG-81486
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-09-01 06:11:50 +02:00
Paul Wicking 4074c54270 Doc: Compile GUI util snippets
Fix minor issues (e.g. whitespace, missing semi-colon) in passing.

Change-Id: Ieec8deb8aaf4358ffc35502fae6ea7c043d34672
Done-with: Nico Vertriest <nico.vertriest@qt.io>
Task-number: QTBUG-81486
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-09-01 06:11:46 +02:00
Paul Wicking 323d2b57e0 Doc: Remove unused snippet for removed code
QDesktopServices::DataLocation doesn't exist anymore.
Get rid of the snippet.

Task-number: QTBUG-81486
Change-Id: Ibc938437c916b3c08ec64d7692a31e69944c1b30
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-09-01 06:11:42 +02:00
Peng Wenhao f0ae973244 Qpagedpaintdevice: Use marginsF instead of internal struct margins
resolve remaining Qt6 TODOs

Change-Id: Iad659a09ddfe136bdc545bc0635b4c695540c58b
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-09-01 04:57:48 +08:00
Tor Arne Vestbø 90358f6042 Deprecate and remove uses of AA_DisableHighDpiScaling
Change-Id: Ibadce68775858c524b998aacad310905ba2c2e8e
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2020-08-31 19:14:55 +02:00
Tor Arne Vestbø 8028474e62 Remove unused exported functions from QWSI
Change-Id: If85231373bc0ec9a9259f628cd0c62a3a75b813b
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-08-31 14:29:01 +02:00
Tor Arne Vestbø ef854c0bba Remove QWSIPrivate::EventType::FrameStrutMouse
Change-Id: I66eb05ae7ed58ff3375b756c29a96d5067251cc3
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-08-31 14:29:01 +02:00
Tor Arne Vestbø 2dc46c0902 Deprecate and remove all uses of AA_UseHighDpiPixmaps
High-DPI pixmaps are always enabled, and cannot be disabled.

Change-Id: I01a006b404e5431582b64ef812974c1c022b39ae
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-08-31 14:29:01 +02:00
Nico Vertriest 860c68522b Doc: Make snippets Qt Gui compilable - textdocument-charformats
Task-number: QTBUG-81486
Change-Id: I460917c979eb9bd90b9ab7694c0928ab252adae9
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-08-31 07:12:44 +02:00
Nico Vertriest 886cc0e442 Doc: Make snippets Qt Gui compilable - textdocument-blocks
Task-number: QTBUG-81486
Change-Id: I663c53d11e4bd3086c4afee0c994d00ecc0c7cad
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-08-31 07:12:40 +02:00
Paul Wicking bbbbd642d5 Doc: Remove obsolete/removed snippet code
Task-number: QTBUG-81486
Change-Id: Ifc6ac9203a046b6b5da6140931c59875f0dc08c3
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-08-31 07:12:37 +02:00
Paul Wicking 52abab1b42 Doc: rename qfontdatabase snippet project file
The project isn't included as a subdir of the parent because
the project file name doesn't follow proper convention. Fix
by renaming the project file.

Task-number: QTBUG-81486
Change-Id: Ie32aaa587cdaa6802644588d6631b14e61558ae2
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-08-31 07:12:33 +02:00
Nico Vertriest 5e566d004e Doc: Make Qt Gui snippets compilable - clipboard
Task-number: QTBUG-81486
Change-Id: I41b0c5f021ea9fbbe384f224443608f4397dec24
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-08-31 07:12:21 +02:00
Laszlo Agocs 8641d5d729 rhi: gl: Correctly report WideLines for OpenGL
In core profile contexts a line width other than 1 may not work
as expected since it is deprecated in the core profile.

Change-Id: I3fc33cf90c65156aa87d04f08518c9ddcfb62625
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2020-08-30 17:45:02 +02:00
Laszlo Agocs 67faf0641d rhi: vulkan: Enable features on the device
The silly fine-grained enabling of features on the VkDevice
seems to be ignored in practice by the implementations, but
wideLines becomes relevant because the validation layers warns
if a line width is set on the pipeline without enabling the feature
on the device. So to play nice, enable the features we care about.

Change-Id: I0c64a0d10a8279fe43d899118b0d6f0e4f875d41
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2020-08-30 17:44:59 +02:00
Laszlo Agocs fb4760bb21 rhi: gl: Also try GLSL 140 and 130
Change-Id: I21e3ca92d62f20f3ec608bef54c68f9bd09a207f
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2020-08-30 16:17:16 +02:00
Eskil Abrahamsen Blomfeldt cba147d359 Fix text issues when using typographic names
By default, only the legacy family names are populated on Windows,
since we are using GDI to do the population.

The actual typographic names are added later as aliases when
the font is loaded.

This can cause us to fail matching a font against its typographic
name before it has been loaded and e.g .in Qt Quick we will cache
the glyph indexes for a fallback font instead. If the font is later
loaded and aliases are populated, we will use the cached glyph
indexes and get seemingly random glyphs displayed.

We reuse the mechanism invented for CoreText to do lazy population
of aliases. The population will now happen when the first non-match
occurs, and a second attempt will be made after we populate aliases.

[ChangeLog][Windows] Fixes an issue where fonts would sometimes not
fail to work when selected using typographic names.

Fixes: QTBUG-84786
Pick-to: 5.15
Change-Id: Ic7b65cde26ddcbf1a257f1673b9af37154660c2f
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-08-30 01:57:37 +02:00
Paul Wicking e1b1dd7917 Doc: Remove obsolete snippet code
Obsolete code that is unused/not referenced from
documentation - get rid of it.

Task-number: QTBUG-81486
Change-Id: I82ee65b6e827666f88fa8ecf6d87ae736c893cc3
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-08-29 14:23:04 +02:00
Nico Vertriest 80cc233c59 Doc: Make Qt Gui snippets compilable - draganddrop
Task-number: QTBUG-81486
Change-Id: I0a10e4d353f864e295833ff7d4f47950c5199a21
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-08-29 14:22:49 +02:00
Paul Wicking 5596344100 Doc: Make Qt Gui snippets compilable - brush
Remove unused code in snippet files not referenced from anywhere.

Task-number: QTBUG-81486
Change-Id: I80b46c013bde99e1aea86311d3579ccc922b8fd7
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-08-29 14:22:42 +02:00
Paul Wicking 5bf7ceb4d4 Doc: rename snippet project file
The project file name is wrong, so the project won't become
part of the parent subdirs project. Rename the project file
to correct this.

Task-number: QTBUG-81486
Change-Id: I069004caa5e7bdeecc0550fafe78f8977fbf7a87
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-08-29 14:22:36 +02:00
Morten Johan Sørvig 1719be99a7 Deprecate QIcon API which take a QWindow pointer
- pixmap(QWindow * ...)
    Use pixmap(size, dpr) instead
- actualSize(QWindow *, ...)
    Use actualSize(size) instead

Task-number: QTBUG-85885
Change-Id: Ia2d73eec9f040cd659f39c854463e3cd3ba72b93
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-08-29 10:32:54 +00:00
Morten Johan Sørvig 4a0140832d QPixmapIconEngine: port to new virtual functions
Add availableSizes() override function and move the
implementation out of virtual_hook().

Task-number: QTBUG-85885
Change-Id: Ida3575b25e9bca6167b5be97d6a8f0f624559602
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-08-29 10:03:23 +02:00
Morten Johan Sørvig 6486102595 QIconLoader: port to use new virtual functions
Add override functions and move the implementation
out of virtual_hook().

Task-number: QTBUG-85885
Change-Id: I35ed81a3483dd85d49474b78572d5302b0e5b608
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-08-29 10:03:10 +02:00
Edward Welbourne 1aa412987f Remove QUnicodeTools::DefaultOptionsCompat
Used in only one place, declared in a private header with a comment
saying to remove it. All callers of the one function that had it as
default parameter value are passing a value for the parameter.

Task-number: QTBUG-85700
Change-Id: Ic72e4df730740a4023b0a43be6bf7acf33a3166b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-28 21:29:45 +02:00
Joerg Bornemann 8dbb70f44d Remove fxc configure test
This was used for ANGLE, which was removed in 752497910b.

Change-Id: I29bad031b296fddc425145cd206a372baf650267
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-08-28 20:09:31 +02:00
Tor Arne Vestbø dce106c77c High-DPI: Remove usage of Qt::AA_EnableHighDpiScaling
This attribute is now on by default.

Change-Id: I7c9d2e3445d204d3450758673048d514bc9c850c
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-08-28 20:08:43 +02:00
Laszlo Agocs 7819574c4c rhi: d3d: Allow compiling source shaders with debug at run time
Relevant for Qt Quick 3D. As in many cases Quick3D will rely on runtime
generated shader code, the translated HLSL will be compiled via
D3DCompile() at run time. To make such shaders debuggable, the necessary
flag (D3DCOMPILE_DEBUG) should be requestable somehow.

Change-Id: I4d5c3b57bf58df8d46556eebb5cf6fb75e9d0afe
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2020-08-28 15:24:50 +02:00
Robert Loehning e0da5159dc Avoid overflows in variantHash()
Fixes: oss-fuzz-24702
Pick-to: 5.12 5.15
Change-Id: I876bac9e2c276693e59802dfeeea2229a873ee34
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-28 15:20:17 +02:00
Robert Loehning 0bd770fb87 QTextHtmlParserNode: Avoid extreme values for font's pixelsize
They currently cause an integer-overflow in variantHash().

Fixes: oss-fuzz-24702
Pick-to: 5.12 5.15
Change-Id: Ibee4413ca766c8ade9aeff2f2052b82cb9f7d213
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-28 13:19:56 +00:00
Morten Johan Sørvig 89e1289b2a High-DPI: Don’t round scale factors in Qt 6
Set HighDpiScaleFactorRoundingPolicy to PassThough
by default. This makes Qt track the system UI setting
accurately, and is overall the least confusing option.

Historically, Qt has rounded the scale factor (for example,
Windows 175% -> DPR 2) due to faulty handling of fractional
scale factors in Qt Widgets and with the native Windows
style.

Other areas of Qt such as Qt Quick have had few issues
with fractional scale factors and support this well.

Qt has never rounded the scale factor on the Android
platform.

Support for fractional scale factors in Qt Widgets and
the windows style has improved, which makes changing
the default for Qt 6 viable.

Task-number: QTBUG-83068
Change-Id: I38b60f621f95be8ebb6cb84a07d3370fec19ab92
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-08-28 13:00:17 +02:00
Morten Johan Sørvig 080a8285eb High-DPI: Enable scaling by default in Qt 6
Enable high-DPI support for all platforms which use
QHighDpiScaling. This changes the default behavior
of Qt applications on X11, Windows, and Android.

Qt::AA_EnableHighDpiScaling is now effectively on by
default, and Qt 6 applications do not have to set
this application attribute. Opting out is possible by
setting the Qt::AA_DisableHighDpiScaling attribute.

Task-number: QTBUG-83068
Change-Id: Ia2bd3e6f490130afcacd3a951bc50dbb40a79d7f
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-08-28 13:00:08 +02:00
Paul Wicking da9a57a1e6 Doc: Compile text snippets
Fix minor issues (e.g. whitespace, missing semi-colon) in passing.

Change-Id: Ib39bb66a724542dcac4ca70072628b9bfcaf200d
Done-with: Nico Vertriest <nico.vertriest@qt.io>
Task-number: QTBUG-81486
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-08-28 12:38:17 +02:00
Paul Wicking ea85f77a07 Doc: Compile QOpenGLShader snippets
Fix minor issues (e.g. whitespace, missing semi-colon) in passing.

Change-Id: Id5a3d0fe540e94ce0e44062efeacff5f317bc886
Done-with: Nico Vertriest <nico.vertriest@qt.io>
Task-number: QTBUG-81486
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-08-28 12:33:43 +02:00
Paul Wicking 4853cff109 Doc: Compile painting snippets
Fix minor issues (e.g. whitespace, missing semi-colon) in passing.

Change-Id: I223cb257539d2ac4cb0a1ea209f0c3cebddb3d54
Done-with: Nico Vertriest <nico.vertriest@qt.io>
Task-number: QTBUG-81486
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-08-28 12:32:22 +02:00
Paul Wicking 176e7d4d8c Doc: Remove unused snippet file
These snippets aren't used anywhere.
Remove the file.

Change-Id: Ie9fc9d73a20757d51c24e2e4fca8581f44d2e9d2
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-08-28 12:26:03 +02:00
Paul Wicking ef5b4a9891 Doc: Compile OpenGL snippets
Fix minor issues (e.g. whitespace, missing semi-colon) in passing.

Change-Id: I022ac0382ae1068a75246964c37532e7e15417b0
Done-with: Nico Vertriest <nico.vertriest@qt.io>
Task-number: QTBUG-81486
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-08-28 12:25:34 +02:00
Allan Sandfeld Jensen ea70c3c9f9 Add rgb64 inplace generic conversion
Can avoid having direct conversions between all high precision formats.

Change-Id: I36dd223d028cfda1b6f4116b38ca79cdb7bc5243
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2020-08-28 12:18:03 +02:00
Paul Wicking 28f31002c4 Doc: Compile QQuaternion snippets
Change-Id: Ica53a7307c3e77abeffa616db15c8e8ec39fce8f
Done-with: Nico Vertriest <nico.vertriest@qt.io>
Task-number: QTBUG-81486
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-08-28 12:16:20 +02:00
Paul Wicking ed3f50507a Doc: Compile GUI kernel snippets
Fix minor issues (e.g. whitespace, missing semi-colon) in passing.

Change-Id: I103a81a1a5acbfa1ece083a467d23a8544cf647a
Done-with: Nico Vertriest <nico.vertriest@qt.io>
Task-number: QTBUG-81486
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-08-28 12:08:23 +02:00
Paul Wicking 3dda54c02d Doc: drop obsolete snippet
QApplication::setColorSpec is obsolete. Drop the unused snippet
to avoid clutter when compiling snippet file (multiple main
entry points, etc.)

Change-Id: I5e34cc69aa6f1ccae248f625caa1528e70cb836e
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-08-28 12:07:03 +02:00
Paul Wicking 4845a0de2e Doc: Compile standard item model snippets
Fix minor issues (e.g. whitespace, missing semi-colon) in passing.

Done-with: Nico Vertriest <nico.vertriest@qt.io>
Task-number: QTBUG-81486
Change-Id: I46301d37112bddcd38dbff9940d0c22eaae74208
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-08-28 12:06:11 +02:00
Paul Wicking ebabbd0264 Doc: Compile image snippets
Fix minor issues (e.g. whitespace, missing semi-colon) in passing.
Update documentation to use same snippet to avoid duplication of
snippets across snippet files. Remove offending snippet.

Done-with: Nico Vertriest <nico.vertriest@qt.io>
Task-number: QTBUG-81486
Change-Id: Ia45549d50e8f4e22ce72667a19c38132306d38b3
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-08-28 12:05:49 +02:00
Paul Wicking 186eb6d50f Doc: Compile coordinate system snippets
Fix minor issues (e.g. whitespace, missing semi-colon) in passing.

Change-Id: I8b765c2d2889cae91543c865f3b9df845ef6205b
Done-with: Nico Vertriest <nico.vertriest@qt.io>
Task-number: QTBUG-81486
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-08-28 12:01:01 +02:00
Paul Wicking f0fb5eac85 Doc: Compile more GUI snippets
Compile snippets from snippets/code.
Fix minor issues (e.g. whitespace, missing semi-colon) in passing.

Done-with: Nico Vertriest <nico.vertriest@qt.io>
Task-number: QTBUG-81486
Change-Id: Ifbdd5c3152e84c608a6562f4061075b61331a5d6
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-08-28 12:00:07 +02:00
Paul Wicking 6454d227fa Doc: Remove unused snippet
The snippet isn't used anywhere. Remove it.

Change-Id: I56fdadaeb115e4e865476cf2b40e355f753dddf7
Done-with: Nico Vertriest <nico.vertriest@qt.io>
Task-number: QTBUG-81486
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-08-28 11:59:17 +02:00
Paul Wicking 2c7d57259c Doc: Remove unused snippet
Change-Id: Ie7a904fac93ea991820795852cd4dcf175bffe21
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-08-28 11:59:06 +02:00
Paul Wicking ab6a007a4c Doc: Compile rich text code snippets
Extend GUI snippet compilation by adding rich text snippets
from /code sub-directory.

Done-with: Nico Vertriest <nico.vertriest@qt.io>
Task-number: QTBUG-81486
Change-Id: I4f3c978cc1c9042767fda9e33719042e18fd4bee
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-08-28 11:58:45 +02:00
Paul Wicking 8ff63383e4 Doc: Compile textdocument-end snippets
* Extend GUI snippet compilation with textdocument-end snippet.
* Rename the snippet file and replace main() with wrapper().
* Dedent the snippet itself.
* Update documentation that includes the snippet.

Done-with: Nico Vertriest <nico.vertriest@qt.io>
Task-number: QTBUG-81486
Change-Id: Id5e5b284587da1e7fdfd00baa9c899626832a113
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-08-28 11:58:25 +02:00
Paul Wicking 2870c201dc Doc: Compile qfontdatabase snippets
* Extend GUI snippets by adding the qfontdatabase project.
* Rename the snippet file and replace main() with wrapper().
* Minor adjustments of the snippet itself.
* Update documentation that includes the snippet.

Done-with: Nico Vertriest <nico.vertriest@qt.io>
Task-number: QTBUG-81486
Change-Id: Id23aff01a4c919c5264f7059971cb63398c2298c
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-08-28 11:58:17 +02:00
Paul Wicking b5a0baa061 Doc: Add skeleton project for GUI snippets
Done-with: Nico Vertriest <nico.vertriest@qt.io>
Task-number: QTBUG-81486
Change-Id: I4bd1f2f56561298573ae57adb149d77e374d8449
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-08-28 11:58:10 +02:00
Topi Reinio 239982901b Doc: Fix documentation warnings for Qt GUI
* Drop deprecation warnings for now-dropped items
* Use the 'qt6' define and a new \nothing doc macro to conditionally
  document items on Qt 6
* Add a custom module header for docs that pulls in also Vulkan headers
* Add \internal command for internal classes/functions
* Move QtGUI-related code snippets from widgets to gui docs

Change-Id: Ieb386b96631a49568d09059906d307c45c01d93a
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-08-28 11:37:35 +02:00
Jonas Karlsson 174154bcac Remove "internal" parameter in QTextLine::draw()
The method is split up into a private and public version, where the
parameter is moved into the private method.

Fixes: QTBUG-84210
Change-Id: I79e9e02c9b4cc25d31db066e5a9567fdb9bc9fd0
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2020-08-28 07:27:27 +02:00
Jonas Karlsson 3558704ed5 Use OpenType font weights
Task-number: QTBUG-42248
Change-Id: Icdb301b27d6699c2b842c4563fbef9df73c23cbc
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2020-08-28 07:26:54 +02:00
Morten Johan Sørvig 462b36c3de QIconEngine: move away from virtual_hook usage
Upgrade existing functions to be virtual functions:
  - virtual QString iconName()
  - virtual bool isNull()
  - virtual QPixmap scaledPixmap(...)
  - virtual QList<QSize> availableSizes(...)

Make all of them non-const and remove the const_casts in
the implementation. Keep the default implementation
which calls virtual_hook(), for compatibility.

Note: availableSizes was already virtual, but now loses
the “const”. Port two overrides in the platform themes.

Keep virutal_hook() around for future expansion.

Task-number: QTBUG-85885
Change-Id: I76d0c9f75bfd6ca870c669047d4ef18b82c692e5
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-08-27 22:47:33 +02:00