Commit Graph

29569 Commits (ca3a7efffd350b27c05e07f7ea73cc7a7bbeeb08)

Author SHA1 Message Date
Liang Qi 10f477e5bb cmake: add CMakeLists.txt files for xcb/gl_integrations
Change-Id: I34bc3c0ab4b4b686fe57149a3bb69e2d2cafd551
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-05-02 16:23:59 +00:00
Jean-Michaël Celerier 417e714d90 cmake: Fix Vulkan qt_find_package call
Change-Id: I4494d6d7dc2cd0b5afed5bb9d591b62627cbc49d
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-05-02 16:04:23 +00:00
Albert Astals Cid 43c2580e5d cmake: remove mirclient TODO
mirclient qpa code was removed in 8c73ddd8e3

Change-Id: I0c0f5228fb750b69a742c9d1d8377b4a4de165ce
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-05-02 15:34:57 +00:00
Simon Hausmann 7ff93f3364 Fix build by re-generating CMakeLists.txt from offscreen.pro
We don't need the _dummy.cpp files in the build anymore that don't exist
anyway.

Change-Id: I70e12dd39009c86779f3863c945e835b76cb24f6
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-05-02 15:29:48 +00:00
Ville Voutilainen 1361cf5d50 CMake: better GLX detection
Change-Id: I71dfbb331cb02a3249b0c3c65f2a9bd9ce68c739
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-05-02 14:56:32 +00:00
Liang Qi 67c35ed8fc CMake: add xcb platform plugin
Change-Id: I9b3e8b5e4a2f7799b32738319e6eed912d3261e2
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-05-02 13:29:16 +00:00
Jean-Michaël Celerier 1b36fe53c6 cmake: export locally-built dependencies in static build
Change-Id: Ifbcedd32cef3b9c8b4b8c9ca0d229850f696f406
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-05-02 11:41:55 +00:00
Alexandru Croitor 9b0b464e82 Write find_dependency() calls in Qt Module config files
This change introduces a new function called qt_find_package()
which can take an extra option called PROVIDED_TARGETS, which
associates targets with the package that defines those targets.
This is done by setting the INTERFACE_QT_PACKAGE_NAME and
INTERFACE_QT_PACKAGE_VERSION properties on the imported targets.

This information allows us to generate appropriate find_dependency()
calls in a module's Config file for third party libraries.

For example when an application links against QtCore, it should also
link against zlib and atomic libraries. In order to do that, the
library locations first have to be found by CMake. This is achieved by
embedding find_dependency(ZLIB) and find_dependency(Atomic) in
Qt5CoreDependencies.cmake which is included by Qt5CoreConfig.cmake.
The latter is picked up when an application project contains
find_package(Qt5Core), and thus all linking dependencies are resolved.

The information 'which package provides which targets' is contained
in the python json2cmake conversion script. The generated output of
the script contains qt_find_package() calls that represent that
information.

The Qt5CoreDependencies.cmake file and which which dependencies it
contains is generated at the QtPostProcess stop.

Note that for non-static Qt builds, we only need to propagate public
3rd party libraries. For static builds, we need all third party
libraries.

In order for the INTERFACE_QT_PACKAGE_NAME property to be read in any
scope, the targets on which the property is set, have to be GLOBAL.

Also for applications and other modules to find all required third
party libraries, we have to install all our custom Find modules, and
make sure they define INTERFACE IMPORTED libraries, and not just
IMPORTED libraries.

Change-Id: I694d6e32d05b96d5e241df0156fc79d0029426aa
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-05-02 07:30:42 +00:00
Alexandru Croitor 42d3b21c92 Export tool config and target files for each relevant module
CMake will now generate config and target files for each module that
provides tools. As a result, namespaced global targets such as
Qt5::moc or Qt5::rcc can be made available.

Third party projects that require just these tools, and not the Qt
modules themselves,  should specify CMAKE_PREFIX_PATH pointing to the
installed Qt location, and call find_package(Qt5CoreTools),
find_package(Qt5GuiTools), etc.

It is also possible to call
find_package(Qt5Tools REQUIRED Core Widgets) where the last option
is a list of modules whose tools should be imported.

Note that all the tools are in the Qt5::
namespace and not in the Qt5CoreTools:: or Qt5WidgetsTools::
namespace.

This commit also changes the behavior regarding when to build tools
while building Qt itself.

When cross compiling Qt (checked via CMAKE_CROSSCOMPILING) or when
-DQT_FORCE_FIND_TOOLS=TRUE is passed, tools added by add_qt_tool will
always be searched for and not built.
In this case the user has to specify the CMake variable QT_HOST_PATH
pointing to an installed host Qt location.

When not cross compiling, tools added by add_qt_tool are built from
source.

When building leaf modules (like qtsvg) that require some tool that was
built in qtbase (like moc), the module project should contain a
find_package(Qt5ToolsCore) call and specify an appropriate
CMAKE_PREFIX_PATH so that the tool package is found.

Note that because HOST_QT_TOOLS_DIRECTORY was replaced by QT_HOST_PATH,
the ensure syncqt code was changed to make it work properly with
both qtbase and qtsvg.

Here's a list of tools and their module associations:
qmake, moc, rcc, tracegen, qfloat16-tables, qlalr  -> CoreTools
qvkgen -> GuiTools
uic -> WidgetTools
dbus related tools -> DBusTools

Task-number: QTBUG-74134
Change-Id: Ie67d1e2f8de46102b48eca008f0b50caf4fbe3ed
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-05-02 07:30:30 +00:00
Alexandru Croitor 5668522413 Make freetype a required package
With qmake if we don't find a system package, we use the bundled one.
With CMake we don't provide a bundle freetype, hence it's required
to find a system one (or custom provided one).

Change-Id: I00a5e2ac55459957dae0729f89bafa792a102152
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-05-01 19:05:38 +00:00
Alexandru Croitor d35b94829c Remove the Gui extra cmake file which was restored during the merge
When building qtsvg, the file gets picked up while doing
find_package(Qt5Gui) and fails the configuration phase.

Remove it as it was done before.

Change-Id: I3499e33ecc129e31f8d3b144ee6370b2a9bb4f9a
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-04-17 11:48:54 +00:00
Tobias Hunger bbb75d9614 Merge remote-tracking branch 'gerrit/dev' into wip/cmake
Change-Id: I2e1812e4f40131ff74919aa3b558db5c261fe412
2019-04-16 16:50:27 +02:00
Tobias Hunger 6630937e63 Merge commit 'dev' into 'wip/cmake-merge'
Change-Id: I176c40d031be26a1dd1cf08843e448a660598783
2019-04-16 16:32:08 +02:00
Friedemann Kleint f363540580 uic: Do not generate Q_UNUSED for Python
Task-number: PYSIDE-797
Change-Id: Id269af024c03c2c586d440659bb6c49c3d6eedc6
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
2019-04-16 08:21:40 +00:00
Rob Samblanet 327c8a805e android: Properly indicate successful Qt install
This patch ensures that installed files are written to physical disk
before the 'cache.version' file is written.

QtLoader.java uses the 'cache.version' file written during
self-installation to indicate whether re-installation is necessary.
The 'cache.version' file, however, was being written at the start of
installation, so its existence merely indicated that the installation
was attempted. In the case of power loss during installation, the
existence of 'cache.version' would prevent retrying installation on the
next launch, so the bad installation was irrecoverable.

[ChangeLog][Android] Fixed an issue where an application installation
would be irrecoverably broken if power loss or a crash occurred during
its first initialization run.

Fixes: QTBUG-71523
Change-Id: If771b223a0a709a994c766eea5a4ba14ae95201e
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2019-04-15 17:08:54 +00:00
Rolf Eike Beer 093a1a6232 tslib: use ts_setup() to find the device
This automatically searches for some default devices. This not only
reduces the amount of code, it also makes sure that Qt will by default
find the same input devices that tslib (e.g. ts_calibrate) will find.

Fixes: QTBUG-74680
Change-Id: Ied3fff7e8ed9d6637d2b8cf32119660133d251a3
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2019-04-15 15:14:21 +00:00
Martin Koller cab6587e5e Avoid debug messages for not implemented "grab" methods
Change-Id: Ie32b5d261854703fa17bb844cf8354709b031a4c
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2019-04-14 20:20:05 +00:00
Allan Sandfeld Jensen 8f44aeb103 Add Extended RGB model to QColor
Can be used to represent wide-gamut and HDR colors.

Change-Id: I1cca442069ce2f2c070f723fe930fe1f2f5580ad
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2019-04-12 14:57:02 +00:00
Friedemann Kleint 6dca11e1af uic: Port WriteInitialization::writeBrush() be able to generate Python
Task-number: PYSIDE-797
Change-Id: I7c4e204a5ac9be2dee8f06c38323a15a0372fe5c
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
2019-04-12 13:47:47 +00:00
Friedemann Kleint d63a76af8c uic: Refactor WriteInitialization::writeIconProperties() and add Python
Unfold the function with returns to reduce nesting and add language
handling.

Task-number: PYSIDE-797
Change-Id: Ie6c47745b118d75c0bb2c9eea7d52c8f0377f1a6
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
2019-04-12 13:47:34 +00:00
Tobias Hunger f9676fdd91 CMake: Re-generate gui
Change-Id: Ia944a66d75e0bfda888a208f93d581bb5a43a87f
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-04-11 15:07:01 +00:00
Tobias Hunger dac32e95d6 CMake: Update src/corelib
Change-Id: I0321883f762460b146666bfbad0d8b27c3fdeadd
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-04-11 15:06:52 +00:00
Ulf Hermann e7e557cea2 moc: Add a standard way of specifying a URI as part of Q_PLUGIN_METADATA
Usually, when you load a plugin, you don't want to load just any plugin
that fulfills a given interface, but rather a specific one. When loading
dynamic plugins you can differentiate the plugins by file name. This
doesn't work in the static case, and file names are also separate from
the plugin metadata shipped inside the plugin files.

To solve this problem, different hacks have been developed in various
places. QML extension plugins add a special property "uri" via the -M
option of moc, QML debug plugins expect you to add a json file with
an array of "Keys", Qt Creator plugins have a "Name" in their json
files, etc.

By allowing the identifier for the plugin to be specified inline with
the metadata declaration we can make many of the above workarounds
obsolete and provide a clean way for users to find their plugins.

Task-number: QTBUG-74775
Change-Id: Ie2af16c49d4c5aa5a77fab0fae1e0a4449bd7a39
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2019-04-11 14:43:27 +00:00
Liang Qi c7af193d2e Merge remote-tracking branch 'origin/5.13' into dev
Conflicts:
	src/widgets/styles/qstyle_p.h

Change-Id: I0e6e856bd6628da1135b3ba674dddffabbeb5c09
2019-04-11 07:47:21 +02:00
Liang Qi 63e88f60a7 Merge "Merge remote-tracking branch 'origin/5.12' into 5.13" into refs/staging/5.13 2019-04-10 17:33:14 +00:00
Edward Welbourne 235ac95520 Improve the default selection of locale for QCollator
QCollator was using the default-constructed QLocale() as its default;
this locale's default was the system locale; however, that didn't pay
any attention to system settings for collation such as Unix's
environment variable LC_COLLATE or the MS-Win LOCALE_SSORTLOCALE
configuration option.

Teach the system locale back-ends to look up their relevant settings,
add QLocale::collation() as a channel via which to access that and
change no-parameter construction of QCollator to a separate
implementation (rather than the constructor taking QLocale having a
default) using it.

[ChangeLog][QtCore][QLocale] The system locale now knows what to use
for collation, QLocale::system().collation().

[ChangeLog][QtCore][QCollator] The default QCollator now uses the
system's collation locale, rather than the system locale itself.

Fixes: QTBUG-58621
Change-Id: I90f86621541385330315d1f9d6a4b982bdcea9d5
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-04-10 13:31:07 +00:00
Tobias Hunger 92b0d7b911 CMake: Support /nolink libraries
Add a helper function to QtBuild that generates Foo_nolink versions
of Foo library targets.

Map 'Foo/nolink' libs found in qmake to Foo_nolink.

Automatically run helper function to create _nolink targets as
part of extend_target.

Change-Id: I4c23ea68b3037d23c9a31d4ac272a6bd0565f7c0
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-04-10 09:36:40 +00:00
Liang Qi a20da2353c Merge remote-tracking branch 'origin/5.13' into dev
Conflicts:
	mkspecs/win32-clang-msvc/qmake.conf
	src/gui/image/qpnghandler.cpp

Change-Id: Ied79d02912ffb3a307a99483df7db08c7f9d0cd8
2019-04-10 08:16:20 +02:00
Johan Klokkhammer Helsing 0bdded64ac eglfs_viv_wl: Clean up the wl_display
Task-number: QTBUG-74879
Change-Id: Idb39a39a10bccb1822bdb80343fbe1b5c92560e9
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2019-04-10 06:12:54 +00:00
Qt Forward Merge Bot ff88e20b83 Merge remote-tracking branch 'origin/5.12' into 5.13
Change-Id: I44eda44bf424fdcffab048a2534905d6162e5559
2019-04-10 01:00:08 +02:00
Allan Sandfeld Jensen fe7a8d61d1 Update precompiled headers
Include many headers that are commonly used now, and avoid listing them
twice.

Change-Id: I679dc24cff2cb3a3c9c18585ec78007ab3550743
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-04-09 21:57:17 +00:00
Liang Qi ac244dbcf2 Merge "Merge remote-tracking branch 'origin/5.12' into 5.13" into refs/staging/5.13 2019-04-09 19:43:30 +00:00
Christian Ehrlicher 1029a2e010 QTableView: don't draw additional grid lines top and left
QTableView drew additional grid lines on the top and left side when
the corresponding header was not visible and the ScrollMode was
ScrollPerItem. After 8f2bacea41 they were
also drawn for ScrolPerPixel for consistency. But they are not needed at
all and only create visual artifacts.
Therefore remove the drawing of the additional lines completely.

Fixes: QTBUG-74706
Change-Id: I5c77d53a2eeefab9b9bfe0efea6439f5afede4ac
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2019-04-09 18:54:02 +00:00
Christian Ehrlicher 37c24c6b1b QTableView: fix Ctrl+End behavior with disabled columns
Ctrl+End moves the visual index to the bottom left index. This does not
work correctly when the item in the bottom left is disabled. It should
be fixed with 7863be3115 but does not due
to a typo.
Fix the typo by using the newly calculated visualColumn instead the
initial column.
There are cases where the algorithm still does not work as expected when
there are more disabled items but fixing them would add a lot of
complexity with no (much) gain.

Fixes: QTBUG-72400
Change-Id: Ie90f6b3e41e00f54e826c2b4e7303e85ac1e4115
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2019-04-09 18:53:59 +00:00
Milian Wolff 5f2afe18cc Fix QMetaObject::newInstance on non-QObject meta object
QMetaObject::newInstance returns a QObject, thus it's not possible to
create a new instance of a Q_GADGET using this function. Previously, we
returned a non-null QObject pointer for such scenarios, which then
leads to crashes when one tries to use it. Now, we check whether the
meta object inherits QObject's meta object, and error out early
otherwise.

Change-Id: I7b1fb6c8d48b3e98161894be2f281a491963345e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-04-09 15:46:35 +00:00
Allan Sandfeld Jensen 95f787bfdc Replace Q_DECL_NOTHROW with noexcept the remaining places
The first replacement had missed objective-C++ code some places ourside
the src dir.

In C-files Q_DECL_NOTHROW is replaced with Q_DECL_NOEXCEPT as we still
need to turn it off when compiled in C mode, but can get rid of the old
NOTHROW moniker.

Change-Id: I6370f57066679c5120d0265a69e7e378e09d4759
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-04-09 14:48:42 +00:00
Alexandru Croitor be0cf9f8d7 Regenerate cocoa platform plugin
Change-Id: I701b6c20566448074f3a51cef698c89a3b6e21eb
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-04-09 14:29:27 +00:00
Alexandru Croitor b7a55b0931 On second thought, install tracegen and qfloat16-tables tools
They are not needed per se for a host build, but they are still
needed for a cross build (because we don't build tools in that
case).

Task-number: QTBUG-74133
Change-Id: I891e3852c6846119956982a7bdbf449ad7c4836c
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-04-09 14:26:04 +00:00
Friedemann Kleint 434c866e1b QtGui: Use member initialization for QWindowPrivate, QScreenPrivate
Remove the constructors, destructors in favor of member initialization.

Change-Id: I323826328fb783ea2cd931c0e6aad45a98a2ebeb
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2019-04-09 14:23:04 +00:00
Allan Sandfeld Jensen 0bee05f4c1 Make the 64 bit raster backend an optional feature
Can be used to make smaller binaries, and possibly speed up ARGB32
rendering on some platforms.

Change-Id: I7647b197ba7a6582187cc9736b7e0d752bd5bee5
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2019-04-09 12:53:19 +00:00
Friedemann Kleint 84ce5022ce QFileDialog (widgets-based): Remember selection in history
Extend the history by a persistent model index list
reflecting the selection.

[ChangeLog][QtWidgets][QFileDialog] The widgets-based dialog now
remembers the selected files when navigating the history

Fixes: QTBUG-71415
Change-Id: I86774439be070c1b922acd0e9a27d029f02f68d3
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2019-04-09 11:15:36 +00:00
Liang Qi 341729db15 cmake: use WindowsUIAutomationSupportPrivate for windows plugin
Change-Id: Ie7d74ff3431b1ac9bac4255d561ae2c2fb28550a
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-04-09 09:22:42 +00:00
Edward Welbourne 6d4a456a28 Fix off-by-one error in QTranslatorPrivate::do_load()
The central loop starts by reading five bytes; but
the loop condition only checked that four were available.

Change-Id: I244cecacabeffbac10ad94081f32847f912d95d9
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: hjk <hjk@qt.io>
2019-04-09 09:12:11 +00:00
Alexandru Croitor f0cc730197 Fix FindWrapOpenGL to choose the correct GL implementation
The find_package() call for WrapOpenGL was moved to the beginning of
the src/gui project file. This was incorrect, because the features
were not yet computed at that time, and the find module was incorrectly
always choosing the Desktop GL implementation.

Move the find_package() after the add_qt_module() call.

Amends 4f736db08c.

Task-number: QTBUG-74133
Change-Id: Ice1da8f23275843c7285ec748e6d673edbffffac
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-04-09 08:52:18 +00:00
Kai Koehne 7482602e85 ANGLE: Remove superfluous -Gm- option
/GM at one point apparently was set by default for debug builds. However,
nowaways it's officially deprecated and even generates a warning in
Visual Studio 2019; so we don't have to 'unset' it specifically anymore.

Change-Id: I5b9b93c058c2ee8a5e025da43251d3859acbe061
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2019-04-09 07:00:25 +00:00
Kai Koehne 0adb78a847 QElapsedTimer: Remove unused static nanosecondsToTicks method
Fixes clang-cl warning
 qelapsedtimer_win.cpp(80,22): warning: unused function 'nanosecondsToTicks' [-Wunused-function]

Change-Id: I1ff334049fcf4b265fe97235b7daf06969331313
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-04-09 07:00:11 +00:00
Kai Koehne e251f11849 printsupport: Fix clang-cl warning
qprintengine_win.cpp(1117,14): warning: comparison of two values with different enumeration types in switch statement ('QPrint::DuplexMode' and 'QPrinter::DuplexMode') [-Wenum-compare-switch]
        case QPrinter::DuplexShortSide:

Change-Id: Ib5028d80ecf7f6bb9eb0562e5c137acfeb709a14
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2019-04-09 07:00:02 +00:00
Samuel Gaist ffc71a977f QBenchmarkValgrindUtils: port to QRegularExpression
This patch updates the code from the deprecated QRegExp class to
QRegularExpression.

Task-number: QTBUG-25485
Change-Id: I946790f50c6b14787bca31771de5e3a0d5fefe4c
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-04-09 06:57:46 +00:00
Eskil Abrahamsen Blomfeldt 9d1905da9c Revert "Fix font matching of typographic families on Windows"
This reverts commit bcd2fa484a.

There was a report that this caused infinite recursion on some
systems, so we revert it for now and re-add it later when the
issue has been resolved.

Task-number: QTBUG-74983
Change-Id: I747e0437232d72d7a87eb602b10fa09c7130ce8f
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2019-04-09 06:02:22 +00:00
Paul Lemire d92f63122b QShaderGenerator: stop abusing from auto everywhere
Leads to a huge loss of context for people trying to understand
and maintain that code. Replacing with proper types to ensure
better readability and maintenance.

Change-Id: I9900b743e8b7fe11bcc7db9ce3191c89f8718afc
Reviewed-by: Mike Krus <mike.krus@kdab.com>
2019-04-09 04:46:20 +00:00