Commit Graph

50211 Commits

Author SHA1 Message Date
Tor Arne Vestbø
af0fa5cffe macOS: Only check SDK major version for compatibility
The macOS SDKs now follow the same major/minor version scheme as iOS,
where the major version is bumped for each OS release.

Pick-to: 6.0 5.15
Change-Id: I021421a9c58bb1ae64bc0c63b4215f14e4ada358
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2021-01-20 19:11:05 +01:00
Christian Ehrlicher
b002c21087 QPushButton: fix drawing pushbutton with a menu
Drawing a QPushButton with a menu results in a clipped label text and a
wrong aligned decoration and menu button.
The position of the menu button was calculated wrong (spacing has to be
subtracted since the start position is the right side). Also the text
label alignment was done before it was adjusted for the menu button
which results in an unaligned (in constrast to a pushbutton without a
menu) label and decoration.

Fixes: QTBUG-89619
Change-Id: I872d39ff2d8eb685fe6843e38c7f727868e1ee9a
Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Funning <huangyub@uniontech.com>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2021-01-20 17:28:10 +01:00
Richard Moe Gustavsen
427e639275 iOS: ensure we close the edit menu when the user taps outside the input area
iOS used to close the edit menu automatically when
the user tapped on the screen (even for menus shown
explicitly using the UIMenuController API). Apperently
this has now changed (probably as a part of
[UIMenuController setMenuVisible:] being deprecated in
iOS 13). So we now need to hide it explicitly.

Because of this, we no longer close the edit menu if
the user taps outside the input area. This patch will
fix this by updating the logic in QIOSTapRecognizer to
close the menu explicitly.

There are some more details around when to show or hide
the menu, which is commented on at the relevant places
directly in the patch.

Pick-to: 6.0 5.15
Fixes: QTBUG-90332
Change-Id: I336e3f4003817b39c7abf63f963fde1f3ef87c20
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2021-01-20 16:52:21 +01:00
Richard Moe Gustavsen
2e35a03cd6 iOS: ensure we hide the edit menu while dragging on the selection handles
iOS used to close the edit menu automatically when
the user tapped on the screen (even for menus shown
explicitly using the UIMenuController API). Apperently
this has now changed (probably as a part of
[UIMenuController setMenuVisible:] being deprecated in
iOS 13). So we now need to hide it explicitly instead.

Because of this, the edit menu would be showing together
with the magnifier class while the user was dragging on
any of the handles. This patch will fix this, so that we
close the edit menu explicitly whenever the user starts
dragging on a handle.

Pick-to: 6.0 5.15
Fixes: QTBUG-80298
Change-Id: Iff2032d64db1b582fa7f048c6a1f37ec8a1528af
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2021-01-20 16:52:17 +01:00
Sergio Martins
61c3f3539c Make QStyle::proxy() always return the leaf proxy
For example:

  fusion -> proxy1 -> proxy2

Now returns proxy2.

Fixes: QTBUG-85556
Pick-to: 6.0 5.15
Change-Id: I2a60329f948b59ef7d0752d273bee3854a200547
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2021-01-20 15:35:46 +00:00
Ivan Solovev
fb51b4732c Add simple benchmark for QRegularExpression
The benchmark simply calls QRegularExpression's public API methods, so
that we can assess how changes to the implication impact performance.
(Its addition is prompted by evaluation of whether adding a move
constructor saves more or less than the resulting need for
d-pointer null-checks costs.)

Task-number: QTBUG-86634
Change-Id: Idef775ef6cf9f9ded3ce7ba5b85e460571d12756
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-01-20 16:31:07 +01:00
Mårten Nordheim
0875626e22 Long live QNetworkInformation
The plugins are meant to indicate what they do support, meaning users of
QNetworkInformation can choose to not care about which plugin is used
and rather just request what they want.

Task-number: QTBUG-86966
Change-Id: Ie130e1791250ec2a4470e3ba7081d982654af06c
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-01-20 16:21:28 +01:00
Joerg Bornemann
7e7dacc109 Do not export the QT_PLUGINS target property of Qt modules
This property is dynamically determined and set in the
Qt6${module-name}PluginsConfig.cmake files now.

There is no need anymore to export this property.

Change-Id: I2d164864c4099034b88f9ad852eae8b9f9e55f8b
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2021-01-20 15:25:08 +01:00
Joerg Bornemann
d0071a4f87 Fix loading of Qt6*Plugin.cmake files of per-repo builds
When doing a per-repository build of Qt, as it is done for the installer
packages, the build of qtbase has no knowledge of plugins that might be
built and installed from other repositories. That means we must not
write a fixed list of known plugins when exporting Qt modules of qtbase.

In particular, qtsvg adds imageformat plugins that are supposed to be
picked up by qtbase's QtGui module when linking a project against a
statically linked Qt.
${install-prefix}/lib/cmake/Qt6Gui/Qt6GuiPlugins.cmake missed the
include statements for qtsvg's plugin config files and operated on a
fixed list of plugins, all from qtbase.

Apart from that, the Qt6::Gui target's property QT_PLUGINS did only
contain the qtbase plugins.

This patch fixes the situation in the following way:

1. All Qt6*PluginConfig.cmake files in
${install-prefix}/lib/cmake/Qt6Gui are detected and included.

2. From those file names, the target names of the plugins are
deduced. This is safe as the file name of those generated files is a
direct result of the plugin's target name.

3. The QT_PLUGINS property of the module is updated with the detected
plugin target names.

Fixes: QTBUG-89643
Change-Id: Ifc3c39aa9948277ead5ebb209ec5eff64746308b
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2021-01-20 15:24:47 +01:00
Joerg Bornemann
f379938443 pro2cmake: Raise QT_REPO_MODULE_VERSION to 6.1.0
Modules that are ported for dev should get this version now.

Change-Id: I11d47504f163798d53c51e56ef978edaa711d93a
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
2021-01-20 15:24:29 +01:00
Eirik Aavitsland
e1ed570f9d Rasterizer: compute intersection factors only when needed
Fixes oss-fuzz issue 29285

Pick-to: 6.0
Change-Id: I8f7e0bc898b119d153a36cef5a74371249ed7686
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Reviewed-by: Robert Loehning <robert.loehning@qt.io>
2021-01-20 15:19:37 +01:00
Edward Welbourne
f9fff26b2d Fix QTzTimeZonePrivate::displayName()'s fallback
It previously fell back on abbreviation, a very poor choice.
The base class does better than that, so use its implementation instead.

Pick-to: 6.0
Change-Id: I47cbfce815cd8b2b533d9c6aeebcf398e5852d02
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-01-20 14:18:46 +00:00
Alexey Edelev
df788cca8b Generate Qt6EntryPointAdditionalTargetInfo independent of platform
Move AdditionalTargetInfo generation for EntryPoint target out of
WIN32 specific block

Fixes: QTBUG-90414
Change-Id: I8dc34c939f12ef2073de630d4440a0892d8be909
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
(cherry picked from commit 32734f351b076b8774c490c27ef18ddd2243dcaf)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2021-01-20 14:03:45 +00:00
Andy Shaw
15576c9610 iOS: Handle keyboard events when using an external keyboard
This enables the two possible approaches for handling external keyboard
events. While support still exists for before 13.4 then both approaches
are needed. This ensures that all external keyboard events are handled
as key events and passed on accordingly. Additionally, this accounts
for possible shortcuts too, therefore a new function is added to
QShortcutMap to aid that.

As a result, code has now moved from QCocoaKeyMapper to be part of the
gui/platforms/darwin part to make it easier to reuse this code
elsewhere.

Fixes: QTBUG-85727
Change-Id: I349af43468b03fd8dcb16adba02669974affe154
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2021-01-20 12:29:38 +01:00
Pekka Gehör
a5bb7b3ca5 [Android] Fix Text select handle misplaced on fields inside QDialog issues
Get cursorPoint from a mapToGlobal with a cursorRectangle of the selected inputMethod

Fixes: QTBUG-65229
Fixes: QTBUG-58503
Pick-to: 6.0 5.15
Change-Id: I89b056fa91c59d260f02164c9bd6672b5ada64d6
Reviewed-by: Rami Potinkara <rami.potinkara@qt.io>
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
2021-01-20 08:23:26 +00:00
Alexey Edelev
e5a8623032 Add arguments to 'qt_manual_moc' to resolve 'moc' includes
'qt_manual_moc' doesn't provide include paths for 'moc' command to
substitute required macros. This change adds the
'INCLUDE_DIRECTORIES' and 'INCLUDE_DIRECTORY_TARGETS' arguments to
the 'qt_manual_moc' function.
If 'INCLUDE_DIRECTORY_TARGETS' is specified, 'qt_manual_moc'
collects 'INTERFACE_INCLUDE_DIRECTORIES' of provided targets and
uses them as the 'moc' include directories.

Change-Id: I58c8887dae3ca2484574c5e12e2cbd47f5bd3648
Reviewed-by: Craig Scott <craig.scott@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2021-01-20 08:55:48 +01:00
Giuseppe D'Angelo
ca211da2fa QLocale: add a Q_CHECK_PTR
Avoid complaints from static analyzers that the pointer returned
by malloc might be null.

Change-Id: I3ec3ba03d0b5283dd569200a3040a5fe5990f763
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-01-20 08:36:00 +01:00
Giuseppe D'Angelo
e1a810c046 QVLA: add a Q_ASSERT
GCC's -fanalyzer complains that `ptr` might be null. It's actually
never null (by class invariant).

Change-Id: I5660b1e766b2cfde3f042b8e87168987e7618591
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-01-20 08:35:59 +01:00
Jaeyoon Jung
f254d62cb1 CMake: Use private headers for internal module pri
Just like config_module_name is appended by "_private" in the case of
internal module pri, replace module_includes with the private one.
It fixes the issue where a pro file that uses an internal module pri
does not build due to missing paths to private headers.

Fixes: QTBUG-89961
Change-Id: Ice16a1e9f709d29454f1ddf5b954673cc06a88bb
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Jaeyoon Jung <jaeyoon.jung@lge.com>
2021-01-20 07:35:43 +00:00
Eskil Abrahamsen Blomfeldt
d939faeaae Remove debug output
Accidentally committed in d8602ce58b.

Change-Id: I553503720eace59a7bd510a7b9b2aba44c2242a1
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2021-01-20 08:33:19 +01:00
Kevin Funk
9ff448b6db cmake: Bail out in case syncqt failed to run
Make sure to react on failed syncqt runs during the CMake run.

CMake will now report something along this:
```
syncqt couldn't parse .../qt5/qtbase/sync.profile: Can't modify modulus (%) in scalar assignment at .../qt5/qtbase/sync.profile line 25, near ");"
CMake Error at qtbase/cmake/QtModuleHelpers.cmake:192 (message):
  Failed to run syncqt, return code: 255
```

Change-Id: I575a5fc926c547b6b633583e5d675f7e35beb734
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2021-01-20 08:31:04 +01:00
Eirik Aavitsland
96e9c8cc8a Correct item indent in checkable menus in stylesheet style
Not only the checkable items need to be indented, but all items in the
same menu, so that they line up.

Pick-to: 6.0 5.15
Fixes: QTBUG-90242
Change-Id: I559005f753b5cd19eaeeeb6658178d62de93b4ef
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2021-01-20 07:38:50 +01:00
Cameron Gutman
c111aad270 QSsl: fix OpenSSL DLL names for Windows on ARM
OpenSSL adds an '-arm'/'-arm64' suffix to the DLL names when building
for VC-WIN32-ARM or VC-WIN64-ARM. This needs to be accounted for in Qt
to find the OpenSSL DLLs correctly.

Fixes: QTBUG-89647
Pick-to: 5.15
Change-Id: Ibc9b81e06f8e64c0676f335e13024fa7fe3a4fa3
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2021-01-19 18:09:23 -06:00
Morten Johan Sørvig
fded886ff4 macOS: Remove DontConfirmOverwrite workaround
Does not work any more on recent macOS versions.

As a bonus, Qt now handles file names which contain
“___qt_very_unlikely_prefix_” correctly.

Pick-to: 5.15 6.0
Task-number: QTBUG-39791
Change-Id: I944a68efa18edc72939d953ab32ecb53d8f8e1c4
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2021-01-19 23:41:42 +00:00
Thiago Macieira
9c56d4da2f Fix build with GCC 11: include <limits>
Fixes: QTBUG-90395
Pick-to: 6.0
Change-Id: Iecc74d2000eb40dfbe7bfffd165b5dd3708b7a40
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-01-19 14:13:08 -08:00
Giuseppe D'Angelo
790b600840 Mark qBadAlloc as [[noreturn]]
So that static analyzers don't get confused by its semantics.
In builds with exceptions disabled, it's not actually called
by client code (e.g. Q_CHECK_PTR will just terminate in that case),
but we still need to make it not return -- add another path that
callss std::terminate(), otherwise we'd have a noreturn function
returning.

Change-Id: Ia8c4ce3e9d971f1757e9c273051cb3dedf23c61f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-01-19 22:35:17 +01:00
Ville Voutilainen
813a928c7c Build fixes for GCC 11
Task-number: QTBUG-89977
Change-Id: Ic1b7ddbffb8a0a00f8c621d09a868f1d94a52c21
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-01-19 22:33:38 +02:00
Joerg Bornemann
bd8d74e0e2 Fix framework path for *_header_check targets
When building a Qt module against an installer-provided Qt on macOS, the
module pulls in the headersclean feature that creates the *_header_check
targets. Those targets try to compile the public headers of the module,
and the compilation command contains the -iframework argument. That
-iframework argument is supposed to point to the directory where the Qt
libs are installed. However, it pointed to the original
CMAKE_INSTALL_PREFIX of the machine where Qt was packaged.

Use the QT_BUILD_INTERNALS_RELOCATABLE_INSTALL_PREFIX variable instead
that contains the real installation location, even for an
installer-provided Qt.

Pick-to: 6.0
Fixes: QTBUG-90402
Change-Id: I27de8b3cc816488c2716042383b334d5c421452d
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2021-01-19 20:59:29 +01:00
Volker Hilsheimer
45dc973d96 Remove unused variable from QNetworkReply benchmark
Fixes compiler warning.

Change-Id: I73963f9f711b02d999b366dbf884acd5c851c950
Reviewed-by: Andreas Buhr <andreas.buhr@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2021-01-19 20:04:12 +01:00
Bartlomiej Moskal
0d5b43bed4 Android: Finish composing text before Key handling
If the sendKeyEvent was invoked, it means that the button not related
with composing text was used. In such case composing text (if it exists)
should be immediately finished.

Fixes: QTBUG-85715
Pick-to: 5.15 6.0
Change-Id: Ifbca067805b8d20f6a90f95b27210595abed964a
Reviewed-by: Rami Potinkara <rami.potinkara@qt.io>
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2021-01-19 19:37:02 +01:00
Assam Boudjelthia
eb6e65e64a Update QOperatingSystemVersion version names for Android
Change-Id: I88c7713cd75f84d11b303e0dad2093c7d5568bc4
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2021-01-19 20:10:42 +02:00
Nicolas Fella
9b2df27bb3 Add missing since to QEvent::copy docs
Pick-to: 6.0
Change-Id: Idfadc1801b0e97a5030d2784a65ae658900efd12
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2021-01-19 19:10:42 +01:00
Friedemann Kleint
0b4717097e tst_socketnotifier/unexpectedDisconnection: Extend blacklisting to all windows versions
The test has been failing frequently, recently.

Pick-to: 6.0
Change-Id: I3ae00a64f67e4b6a0b5ade0c660805f4d12f8317
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2021-01-19 19:10:42 +01:00
Joerg Bornemann
135f93122c pro2cmake: Add mapping for Qt::StateMachine
Change-Id: I0ccc9082cc6417584013dde248ab3347aad5b87c
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2021-01-19 19:10:42 +01:00
Sophie Kums
aa09bea00c control scrolling of QTabBar using StyleHint
Mouse wheel/touchpad scroll signals sent to the tab bar trigger
cycling through the tabs. In applications where the tab bar is
close to "mouse click hotspots", the cursor may accidentally be
left over the tab bar instead of the main content of the window.
When the user wants to scroll up/down the main conten, the
scroll signals are thus sent to the tab bar and instead of
scrolling, the focus switches to another tab. This is
confusing to the user, because not only does the application
not carry out the desired action (scrolling through the main
content), it jumps to a different tab. Two common examples of
applications affected by this nuisance are Konsole and any kind
of browser (file browser or web browser), where the address bar
is right below the tab bar. Moreover, on macOS, scroll events
do not have an effect on the tab bar widget of the native UI.
Currently, the code makes use of preprocessor directives to
achieve consistent behavior on macOS (`#ifndef Q_OS_MAC`). This
patch implements the check of a StyleHint in order to determine
if scroll events on the tabbar should have an effect. This
approach is more consistent with Qt coding style than
OS-dependent preprocessor directives and, in addition, makes
the behavior configurable according to the user's preferences.

[ChangeLog][QtWidgets][QStyle] Added
SH_TabBar_AllowWheelScrolling as a style hint to enable/disable
cycling through tabs using the scroll wheel. This defaults to
true in all styles except the macOS one so there is no change in
existing behavior.

Change-Id: I99eeb5a1aab03cbc574fac7187d85a8a2d60cf34
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2021-01-19 19:10:41 +01:00
Alexey Edelev
65cc6ec16b Adjust sql drivers documentation to cmake
Update sql drivers build procedure description.

Fixes: QTBUG-89782
Change-Id: I152fad108e24d394c8d21adf95ce6dbd6e7d80bc
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2021-01-19 19:10:41 +01:00
Alexey Edelev
8b7894cb63 Move UNICODE and _UNICODE definitions to internal platform target
Move UNICODE and _UNICODE definitions from the public Qt::Platform
target to the private Qt::PlatformCommonInternal target.

Fixes: QTBUG-89951
Change-Id: Ib4c1c4cab74acda0a43c4ddb3cffd3954393dc89
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2021-01-19 19:10:41 +01:00
Sona Kurazyan
2ce94889a1 tst_QThreadPool: avoid a potential memory leaks
Don't use raw pointers when allocating memory, it won't be deleted if
the test-cases fail.

Change-Id: I212a12c988f401f97c2c92a7fae09b2aa7d913a9
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Andreas Buhr <andreas.buhr@qt.io>
2021-01-19 14:17:55 +01:00
Marianne Yrjänä
4d9a5f28ee Add QNX7.1 to CI
Change-Id: Ib7288844f3474632d70b60beadfb2b06379855c6
Reviewed-by: Simo Fält <simo.falt@qt.io>
2021-01-19 15:17:55 +02:00
Friedemann Kleint
341b0ef501 Windows QPA: Fix blurry title icons with fractional scale factor
Request the icon pixmaps with DPR=1.

Fixes: QTBUG-90363
Change-Id: I789a72e2ed3379c81c68e1074069823bf633cf2f
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2021-01-19 14:17:55 +01:00
Alexey Edelev
e74fd6897b Adjust database packages FindFoo.cmake files to CMake convention
Replace package _LIBRARIES by _LIBRARY and _INCLUDE_DIRS by
_INCLUDE_DIR. Move find_package_handle_standard_args for Oracle and DB2,
since this call should set _FOUND variable but not separate condition.

Fixes: QTBUG-89866
Change-Id: I54be2c2c4d7ba4b849a27139702861ecd937c444
Reviewed-by: Craig Scott <craig.scott@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2021-01-19 13:17:55 +00:00
Alexey Edelev
fd5006eb48 Fix qt_add_big_resources with namespace builds
Add INTERFACE_COMPILE_DEFINITIONS of Qt6::Core to generated rcc object
libraries. This propagates QT_NAMESPACE definition to the object
library.

Fixes: QTBUG-85620
Change-Id: I252d1aaee7b19a49bc321fdd271a5d85a34bf67f
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2021-01-19 14:17:55 +01:00
Assam Boudjelthia
0392dce4f0 Android: skip tst_QFile::moveToTrash()
Android doesn't have a trash bin, so this test is not valid for that
platform.

Pick-to: 6.0
Fixes: QTBUG-89398
Change-Id: I119b25682ba18e18466b5687cae369445dc73311
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2021-01-19 13:17:55 +00:00
Laszlo Agocs
43d379797a vkmemalloc: Silence clang warning about unused member var
Change-Id: Id968fd2302e3ff7b4d1a20cd8dd1f4d789588511
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2021-01-19 13:17:55 +00:00
Laszlo Agocs
c6d6029909 Update QVulkan(Device)Functions to Vulkan 1.2
This also needs improvements to qvkgen. What we get with this patch
are the Vulkan 1.1 and 1.2 core API's additional 11 instance-level
and 30 device-level commands present in QVulkanFunctions and
QVulkanDeviceFunctions.

All of these are attempted to be resolved upon construction. When the
implementation does not return a valid function pointer for some of them
(e.g. because it is a Vulkan 1.0 instance or physical device), calling
the corresponding wrapper functions will lead to unspecified behavior.
This is in line with how QOpenGLExtraFunctions works. The simple
autotest added to exercise some Vulkan 1.1 APIs demonstrates this in
action.

The member functions in the generated qvulkan(device)functions header
and source files are ifdefed by VK_VERSION_1_{0,1,2}. This is essential
because otherwise a Qt build made on a system with Vulkan 1.2
headers would cause compilation breaks in application build environments
with Vulkan 1.0/1.1 headers when including qvulkanfunctions.h (due to
missing the 1.1/1.2 types and constants, some of which are used in the
function prototypes). In practice this should be alright - the only
caveat to keep in mind is that the Qt builds meant to be distributed
to a wide variety of systems need to be made with a sufficiently new
version of the Vulkan headers installed, just to ensure that the
1.1 and 1.2 wrapper functions are compiled into the Qt libraries.

Task-number: QTBUG-90219
Change-Id: I48360a8a2e915d2709fe82993f65e99b2ccd5d53
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2021-01-19 14:17:55 +01:00
Christian Ehrlicher
12d8bb0709 ItemViews: Don't remove items on internal move
When an itemview only allows internal moving of items it can happen that
the target accepts the drag'n'drop operation since it's out of the
control of Qt (e.g. Recycle Bin or an other application). Due to the
nature of a move, the original item is deleted. Therefore check if the
internal move target is the same as the source and don't delete it
otherwse.

Fixes: QTBUG-86020
Pick-to: 6.0
Change-Id: I69de4b8d76d1b0f57338b402aee87580226cd6cb
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2021-01-18 19:51:07 +01:00
Edward Welbourne
6ee13db700 Correct string comparison in Android's IANA ID matching code
It used QString.compare() and assumed it was returning a bool true on
equality, when it actually returns an int that compares to 0 as the
given strings compare. So it should use compare() == 0.

This fixes several of QTimeZone's blacklisted tests on Android and a
crasher, which we dodged with a QSKIP. Added an id-comparison to a
test. Gave two local variables more informative names, made an early
return into a QSKIP so it explains itself.

Fixes: QTBUG-89905
Fixes: QTBUG-69122
Fixes: QTBUG-69132
Fixes: QTBUG-87435
Pick-to: 6.0 5.15
Change-Id: Icf18ed5a810143d6e65d36e34a70e82faac10b8e
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
2021-01-18 15:55:15 +01:00
Edward Welbourne
50c63446f5 Fix problems with offset-derived ids for QTimeZone
When creating a time-zone from a UTC+offset name that isn't known to
the system, QTimeZone (since the fix to QTBUG-77738 in 5.15.0) falls
back to constructing a suitable UTC-offset backend; however, the id of
this is not guaranteed to match the id passed in to the constructor.
In all other cases, the id of a QTimeZone does match the id passed to
its constructor.

Some utcOffsetId testcases had different id() than the id passed to
the constructor, due to mismatches where a zone was constructed using
the fall-back but the generated id included its minutes (as :00) or
omitted its seconds. The omission of seconds is clearly a bug, but we
also don't want to include :00 for seconds when it's not needed. So
change QTimeZonePrivate::isoOffsetFormat() to accept a
QTimeZone::NameType to configure how much we include in an id. Its
callers other than the relevant constructor (from offset) still get
minutes, even when :00, but will also get seconds added if that isn't
zero; and the constructor from offset now gets the short form obtained
by omitting all trailing zeros.

Since all valid whole-hour offset names that do include :00 for the
minutes field are in fact known standard offset names, the elision of
minutes will only affect zones created by ID in the case of a
whole-hour offset given without :00 minutes specifier, so these shall
necessarily in fact get the ID passed to the constructor. Creating by
UTC-offset with a name that specifies zero seconds will result in a
QTimeZone instance whose id() differs from what was passed to its
constructor (eliding the :00 seconds and potentially also minutes, if
also zero) but this should be the only case where a QTimeZone's id
doesn't match the one passed to the constructor, when constructed by
id.

Fixed inconsistency between the offset-constructor's declaration
(taking offset as int) and definition (taking qint32) in the process.
Added an id check to the utcOffsetId() testcase. Amended two tests of
offset-derived time-zones' IDs, added comments to make clear how one
of those differs from a matching standard name test and converted two
uses of QCOMPARE(, true) to QVERIFY().

[ChangeLog][QtCore][QTimeZone] QTimeZone instances created by offset
from UTC (in seconds) shall now only include minutes in their ID when
the offset is not a whole number of hours. They shall also include the
seconds in their ID when the offset is not a whole number of minutes.

Pick-to: 6.0 5.15
Task-number: QTBUG-87435
Change-Id: I610e0a78e2aca51e12bfe003497434a998e93dc7
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-01-18 15:55:05 +01:00
Andrei Golubev
6f520abdab Add new special QObjectPrivate::{connect, disconnect} for QML
Original QML-specific connection mechanism ignores the receiver argument
and uses sender as receiver. This causes uncontrollable memory growth
in certain cases as connections on receiver persist even after receiver
is destroyed

New connect() with receiver parameter uses underlying API correctly,
disconnect is provided for the symmetry (not sure it's really needed)

Task-number: QTBUG-86368
Pick-to: 5.15 6.0
Change-Id: I4580d75b617cb2c4dfb971a4dfb8e943e325572b
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-01-18 15:54:03 +01:00
Giuseppe D'Angelo
5a0e5521e4 QVectorND: make some constructors explicit
QVector2D has implicit conversions towards QVector3D/4D, and
QVector3D has an implicit conversion towards QVector4D. Although
in principle this is fine because it's not a data loss, it's still
sketchy; for instance, it allows mixed operations to compile:

  vector2d + vector3d;
  vector4d - vector3d;
  vector3d * vector4d; // !

(Random observation: the conversion from QPoint(F) to QVectorND are
actually already marked as explicit.)

This is a leftover not done for Qt 6.0. I am not making these opt-out:
having an implicit conversion here is outright *dangerous*, and any usage
that fails to compile needs to be inspected to make sure it was the
intended behavior.

[ChangeLog][Potentially Source-Incompatible Changes] The
QVector2D/3D/4D converting constructors from another QVectorND
now explicit. This was done to prevent a category of bugs resulting
from operations accidentally mixing QVectorND objects.

Fixes: QTBUG-90327
Change-Id: Ifcd873f6a0d3fc10b9e68c935fe1f69f86a2340b
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2021-01-18 14:53:24 +00:00