Commit Graph

8928 Commits (bb110cee5dbcce58c44e9a59b47fd0bbf6aaddaa)

Author SHA1 Message Date
Volker Hilsheimer 24b07b2b2d macOS: don't let windows that are transparent for input become key window
Such windows are typically used as mostly transparent overlays on top
of other windows underneath. Letting such an overlay become the key
window breaks cursor updates and focus handling.

Pick-to: 6.0 6.1 5.15
Fixes: QTBUG-83632
Change-Id: I192d419a5bdb8dfa0e9223e9fbbd7876c62fe743
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2021-02-19 15:05:37 +01:00
Liang Qi f61b140482 xcb: unset old states and set new ones for window
This partly reverts a02959bb5b.

Pick-to: 6.1 6.0 5.15 5.12
Fixes: QTBUG-87078
Change-Id: I69e18ad3c0a8d142b2e1f5ab87990addc97d9df1
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2021-02-15 17:09:44 +01:00
Edward Welbourne 5645ef305a Add some special case markers that seem to have been neglected
At least, running util/cmake/configurejson2cmake.py changes these lines.
Adding them has provoked the script to add a .prev_configure.cmake file.

Change-Id: Idc123d1dee2ce51cd640c090c7910ecc1f0fc5a4
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2021-02-15 13:43:42 +01:00
Shawn Rutledge bfa78aedc0 Fix Wacom Art Pen detection on xcb
Fixes: QTBUG-91102
Change-Id: I6cd7af26153457609c1fa8fb0a9e167939d592fc
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2021-02-12 18:25:51 +01:00
Mårten Nordheim 92b15beb9a QNetworkInformation fixups
Addressing feedback that came after the reviews
ended from both bot and people.

Added CLASS_NAME to the CMakeLists files for the plugins so that
cmake can generate the correct import.

Fixes: QTBUG-91061
Change-Id: Ib3f1e863100c1c421a6c0a4081b1d40696d67b23
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-02-11 18:13:01 +01:00
Mårten Nordheim 153ffff7d5 Fix mingw compiler warnings
Mark overridden functions with override.
Remove unused static function.

Change-Id: I06bd52c66ac7b970dfced0e553eac9c4a4d44d79
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2021-02-11 16:59:35 +01:00
Assam Boudjelthia 3348107c03 Android: take JavaVM() from QJniEnvironment and not QtAndroidPrivate
Task-number: QTBUG-89482
Pick-to: 6.1
Change-Id: Idfd442afc90c00e672b28b43c78c789813f46c7d
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
2021-02-11 16:03:43 +02:00
Tor Arne Vestbø f0f00dbd11 iOS: Disable three-finger-tap editing interaction menu when there's no focus object
A typical Qt application, such as a QML application, is a single full
screen QUIView, containing all of the granular controls of the UI.

The view accepts first responder status, so that we can pass on text
input to a possible text field inside the UI. That however triggers iOS
to bring up the editing interaction menu whenever the user taps with
three fingers, as iOS can't know that only parts of our view is suitable
for interaction.

To mitigate that we override the editingInteractionConfiguration getter
of the view, as documented, and dynamically report the correct enablement
based on whether we have an active focus object that accepts input.

This works because iOS queries the getter from the three finger tap
gesture recognizer, before showing the menu.

Change-Id: I0874340c42e437e1d7251896993f2eafe122f09e
Fixes: QTBUG-89735
Pick-to: 6.0 6.1 5.15
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2021-02-11 15:01:45 +01:00
Alexey Edelev 43cb801ccb Fix compilation of the QPSQLDriverPlugin plugin with enabled PCH
PostgreSQL package delivers several header files such as pthread, zlib,
zconf, uuid, etc. within Windows installation package. The headers are
exposed to the compiler by PostgreSQL include paths and have different
versions. When compiling PCH of the QPSQLDriverPlugin plugin, MinGW uses
the pthread.h header from the PostgreSQL include paths, that cause an
error related to pthread implementation mismatch.

Disable PCH for the QPSQLDriverPlugin plugin, when using MinGW.

Fixes: QTBUG-90850
Change-Id: I0be91bbefe37731acb2658d679b5b644ef552b23
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2021-02-09 15:49:47 +01:00
Morten Johan Sørvig d66cb667ef Windows: Change default to ProcessPerMonitorV2DpiAware
Fixes: QTBUG-68712
Change-Id: Id73c4a5422e50b5bee2160468feb4d2f09c5461a
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2021-02-09 13:33:17 +01:00
Tor Arne Vestbø f218d89522 Clarify what QSystemLocale::fallbackLocale() is used for
Change-Id: I8f073f996505ccb42020b32fd76520ecef54e628
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-02-09 13:29:22 +01:00
Hou Lei 841e63cb77 Canonical pointer usage
Other affected rows have also been fixed.

Change-Id: Ie0a32f724bd2e40e7bfacfaa43a78190b58e4a21
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-02-09 10:27:14 +08:00
Laszlo Agocs faebfdea1b Long live VK_KHR_display platform plugin!
Experiment with this once again, this time in a more forward looking
manner: move the code previously placed into eglfs's eglfs_viv backend
into its own plugin.

Move our attention to devices like the Raspberry Pi 4, where
VK_KHR_display has recently been introduced to the Mesa v3dv
backend. This is not in Mesa 20.3.3, the latest release at the time of
writing, but is available and functional when building master. This
serves as the reference system for testing the plugin, because it
looks like a fairly robust implementation.

The sole thing the plugin enables at the moment is creating a
QVulkanInstance and a QWindow with surfaceType VulkanSurface. This is
sufficient to run plain QWindow+QRhi (with QRhi::Vulkan), Qt Quick,
and Qt Quick 3D (with QSG_RHI_BACKEND=vulkan) applications.

One display and mode is chosen, by default the first in the
enumeration lists reported by the Vulkan extension. This can be
overridden with QT_VK_DISPLAY_INDEX and QT_VK_MODE_INDEX (modeled
after QT_VK_PHYSICAL_DEVICE_INDEX). The indices can be determined
based on the logs printed to the debug output. Changing the mode seems
to be working nicely with v3dv.

Multiple screen setups, where there would be more than one
VkDisplayKHR enumerated, have not been tested yet. Regardless,
multiple screens (reporting more than one QScreen, with a different
QWindow on each, eglfs style) are not currently supported. This may be
improved later (while keeping in mind that VK_KHR_display does not
have a fully-featured output management API).

Multiple (non-fullscreen) windows and especially raster windows
(QWidget) are not and will not be supported. Our single QWindow is
always forced to fullscreen.

When it comes to input, the level of support should match linuxfb and
eglfs. Note that while mouse input is fully functional, there is no
mouse cursor. (and this is unlikely to be implemented)

[ChangeLog][Platform Specific Changes][Embedded Linux] Introduced a
vkkhrdisplay platform plugin to run Vulkan-based applications in
fullscreen, without a windowing system, on systems where
VK_KHR_display and VK_KHR_display_swapchain are supported by the
Vulkan implementation.

Change-Id: I6388416f7fb2bfdc4b412a0a4971f25cc05d4668
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2021-02-08 13:01:22 +01:00
Laszlo Agocs 3bda970935 eglfs: kms: Log gbm bo handle and stride as well
Pick-to: 6.1
Change-Id: Ie345a3f4a4ab0407e3c532c6385ae31ca698d628
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2021-02-08 12:32:12 +01:00
Mårten Nordheim 2d5506dd9c QNetworkInformation backend for Android
Based on the old bearer manager code!

A lot of the old code went away though since it had been deprecated
in the time since it was written.

Task-number: QTBUG-86966
Change-Id: I21a6db1d4ebd8367084355a8e3202f4c05d9dce5
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
(cherry picked from commit 8652493529a46a375c11bbaf16d2122ee8466c29)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2021-02-08 11:30:37 +00:00
Morten Johan Sørvig c35643dba3 Windows: Add support for PerMonitorV2 DPI awareness
Add support for opting in to PerMonitorV2 DPI awareness
on the command line:
	-platform windows:dpiawareness=3

This mode is supported on Windows 10 and up. Setting it
requires using the new SetProcessDpiAwarenessContext
API, which can be resolved from user32.dll.

Task-number: QTBUG-68712
Change-Id: I37821e27a67e08c2e9fef25e494cfd7abed13314
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2021-02-08 08:13:56 +01:00
Mårten Nordheim b063d22147 SCNetworkReachability based backend for QNetworkInformation
For macOS/iOS. Based on the code Timur wrote for QNetworkStatusMonitor,
and uses QNetworkConnectionMonitor. It has less detail than the other
backends which is unfortunate but should be fine!

Task-number: QTBUG-86966
Change-Id: I0d5930d539f9668f001d6f85c86c9df0803d0f60
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
(cherry picked from commit 309a2360fdb3e9c1b07d2937859c521da187c486)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2021-02-06 10:28:14 +00:00
Mårten Nordheim 63a9793360 NetworkManager based backend for QNetworkInformation
For Linux. Based on the code from the old bearer plugin for
NetworkManager with changes to fit better the objective of
QNetworkInformation.

Task-number: QTBUG-86966
Change-Id: I90c3488ff31ef6dfdcfb877c0e9c592c6c328a89
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
(cherry picked from commit 6d85e6e45ac9efe12f01ae38619487a23c585e9e)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2021-02-05 14:52:57 +00:00
Richard Moe Gustavsen 0bae5fbabb iOS: close edit menu upon focus transfer
If you select text, the edit menu will show.
But if you tap directly inside another input
field, and as such, transfer focus, the menu
will continue to stay visible.

This patch will ensure that we hide the edit
menu when the input field that it was
requested for looses focus.

Pick-to: 6.0 6.1 5.15
Fixes: QTBUG-90937
Change-Id: I1d97bd57fc793826a3170404795b06a1e058d1b7
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2021-02-05 15:25:10 +01:00
Assam Boudjelthia d6b9200e32 Fix compiler warnings for QFontMetrics use
Pick-to: 6.1 6.0
Change-Id: I4c416280cef8c316258817184e94962c250370da
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2021-02-04 16:50:45 +02:00
Richard Moe Gustavsen be06164201 iOS: don't report selection changed if it didn't change
Be more careful about reporting a new selection to Qt. The code for
handling IM selection events in QQuickTextArea is quite complex
and need to take pre-edit text into account. The latter means
that when the pre-edit text changes, as a result of the user composing
a word, the width of the pre-edit text will also change (and as
such, the cursor rectangle). But the cursor position itself stays
the same.  And for this reason, it emits cursorRectChanged more often
than strictly needed. But rather than trying to clean that up, we
do some extra checking before we send the IM event from QPA in
the first place.

Pick-to: 6.0 6.1 5.15
Fixes: QTBUG-63018
Change-Id: I689d989c3fe5d61ef2b1dbee7a70418b7790bce9
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2021-02-04 14:33:12 +01:00
Jan Arve Sæther f4887aca1e a11y: Report mixed state if QCheckBox is PartiallyChecked
Previously it only returned checked or unchecked for a tri-state
checkbox.

Fixes: QTBUG-84616
Pick-to: 5.15 6.0 6.1
Change-Id: Ife72098e35f8295fd389bda232de5478ffa7e87f
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2021-02-04 13:23:33 +00:00
Richard Moe Gustavsen b390812304 iOS: hide edit menu if typing on the input panel
On iOS, if you select some text, the edit menu will show on
top of it. And if you tap on the screen (or inside the menu) it
will hide. But if you type on the input panel, it will stay
open. This is wrong.

This patch will keep better track of whether or not the edit
menu was opened by us, and if it was, ensure we close it also
if the cursor moves by typing on the input panel.

Pick-to: 6.0 6.1 5.15
Fixes: QTBUG-90860
Change-Id: I0a51382030560182e7925c8b694b42e50943514e
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2021-02-04 12:29:47 +00:00
Morten Sørvig f7dd793db5 Android: Use new QPlatformInputContext geometry API
This simplifies the Android platform plugin code, since
it no longer has to make QHighDpi scaling calls.

QPlatformInputContext returns geometry in the native
window coordinates. These can be used directly, or in
some cases be mapped further to native global (screen)
coordinates. Note that this mapping now happens after
High-dpi scaling, so we must use QPlatformWindow::mapToGlobal()
instead of QWindow::mapToGlobal()

The inputItemTransform() is applied by QPlatformInputContext
when needed, these calls can also be removed.

Change-Id: I179d44d148dded43683df5e97ad506940894c423
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2021-02-04 13:29:46 +01:00
Assam Boudjelthia 4493b90224 Android: fix compiler warnings for Android input
QPointingDevice requires using the constructor to set its settings
in Qt 6.

Replace + with | operator and return QKeyCombination instead of int.

Change-Id: Id3da469cc13b34ec7b55afa751dbc04601880df6
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2021-02-03 11:02:24 +02:00
Tor Arne Vestbø 3d341ae882 macOS: Reduce duplicated code for showing file dialogs
The initialization was duplicated across the different modes. We now do
the setup once, in a shared showPanel:withParent function.

This also simplifies and removes the need to store the return code.

Change-Id: I3c4da48cfef92bcc59c76cffa15b40150de1a9e1
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2021-02-02 11:29:16 +01:00
Tor Arne Vestbø 1724fccb01 macOS: Reduce duplicated updates of file dialog properties
Change-Id: I2017bfdfa6d5598405d700680ecaaf04fd6023fd
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2021-02-02 11:29:13 +01:00
Tor Arne Vestbø 7f8a80ebf8 macOS: Refactor computing of accepted extensions in file dialogs
Change-Id: Ie71db5a0ab66dd9d157b53297cbb9aba248fa8af
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2021-02-02 11:29:11 +01:00
Tor Arne Vestbø 9366e034d9 macOS: Use single variable to track file dialog in QCocoaFileDialogHelper
Relying on Objective-C's no-op behavior when sending messages to nil was
nifty, but a bit confusing when trying to track the ownership model of
the class.

It's now explicit at the call sites what's going on (a cast).

The canSelectHiddenExtension property is valid both save and open
panels, but AppKit will only show it for save panels.

Change-Id: I8e12d629639e2179d155b2ecda1bb2dab2a5757d
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2021-02-02 11:26:17 +01:00
Mårten Nordheim a3b58a7844 NetworkListManager based backend for QNetworkInformation
For Windows. Based on the code I wrote for QNetworkStatusMonitor.
It also renames the netlistmgr feature, avoiding the abbreviation.
Locally my MinGW fails the networklistmanager feature test so it may
not be supported on MinGW, likely leaving it without a backend at all.

Change-Id: I13bbe4127edc2a9c0bb91602c95f1cb206a85a69
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2021-02-02 11:10:06 +01:00
Morten Sørvig dc3446c1e3 Make setSelectionOnFocusObject() take native pixels
Change the setSelectionOnFocusObject() to take geometry
arguments in native pixels, in order to be consistent with
other QPlatformInputContext API.

Calling code which pass non-native geometry must be updated
(in practice only the Android platform plugin).

Change-Id: I1c61b8cf583afe607567d6056ca7ff23cc3de3f3
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2021-02-02 10:22:52 +01:00
Morten Sørvig b23f5621d7 iOS: Use new QPlatformInputContext geometry API
This enables support for QT_SCALE_FACTOR on iOS.

Fixes: QTBUG-74978
Change-Id: Ibcf0741c178e44802065e472e096a5f4c7d6f3cf
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2021-02-01 22:44:51 +01:00
Morten Johan Sørvig dafe9e2363 Windows: Fix frame margins calculation
Passing nullptr to QHighDpi::toNativePixels() is seldom
correct, and will work only on the main screen.

Instead, call frameMargins() on the platform window
(instead of on the QWindow) and get the margins directly
in native pixels.

Pick-to: 5.15
Fixes: QTBUG-90716
Change-Id: Id7b31ec3246010c367781b64ed832c589bbaeb0d
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2021-02-01 22:43:59 +01:00
Morten Johan Sørvig fddc0b34df Add geometry accessors to QPlatformInputContext
Currently the platform plugins use the public QInputMethod
API when querying geometry. However, QInputMethod returns
geometry in device independent pixels, while the platform
plugins require geometry in native pixels.

Add new API to QPlatformInputContext which returns input
geometry in the native window coordinate system:

    QRectF inputItemRectangle()
    QRectF inputItemClipRectangle()
    QRectF cursorRectangle()
    QRectF anchorRectangle()
    QRectF keyboardRectangle()

These make the relevant QHighDpi calls internally, and
such calls can then be moved out of the platform plugins.

Disambiguate inputItemRectangle() in qandroidinputcontext.cpp
by renaming it to screenInputItemRectangle().

Change-Id: I561745b64fb197d64e3dfddcf0751528bb8d0605
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2021-02-01 20:06:52 +01:00
Richard Moe Gustavsen 3811be28ad iOS: always hide edit menu when showing the magnifier glass
Bug: If you do a press and hold on a line edit, the edit menu
will show to let you select a word etc. If you now do
another press and hold to bring back the magnifier glass,
the edit menu will stay open while you move the magnifier glass.

This patch will ensure that we always hide the edit menu when
we show the magnifier. There is never a case where both of
them should show at the same time. By hiding the menu from
the place where we show the magnifier means that we can
remove code from the QIOSSelectionRecognizer that used
to do this for one of the cases from before.

Pick-to: 6.0 5.15
Fixes: QTBUG-90743
Change-Id: If2a92f94422c730c2b223129d96f5bc3bf3deeee
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2021-02-01 14:50:33 +01:00
Andreas Buhr f1cebefd01 Fix compilation of ibase sqldriver plugin, added override
With gcc 10.2, I cannot compile qtbase without this patch.

Pick-to: 6.0 5.15
Change-Id: I5be48947e2301d5befeec397291c0da597f7eb63
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2021-02-01 14:44:48 +01:00
Andy Shaw 115bcdb862 Cocoa: When validating menus, account for modal window only if active
When a modal window is WindowModal then it is possible for another top
level window to be active and therefore the menus shown may be valid
for the window. So we can still allow the menu items to be validated in
the context of that window.

Fixes: QTBUG-74088
Pick-to: 6.0 5.15
Change-Id: Ifb9c3fe12654b2972e0e3c368dc093fae1ed4cc8
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2021-01-29 11:55:43 +01:00
Assam Boudjelthia 4e60681c87 Make QJniObject and QJniEnvironment public API
As part of Qt 6 restructring for the extras modules, this change exposes
the Jni APIs which are very important for Android platform. This patch
adds the APIs QJniObject, QJniEnvironment, QJniExceptionCleaner based
from private QtCore and QtAndroidExtras.

The Jni interface is cross-platform which justifies the name, but
currently, this API is used mainly for Android, and the naming comes
generic without Android keyword to avoid any future limitation on
supporting other platforms.

[ChangeLog][QtCore] Add new QJniObject, QJniEnvironment and
QJniExceptionCleaner APIs.

Task-number: QTBUG-89482
Fixes: QTBUG-89633
Change-Id: I4382dd53a225375759b9d042f6035a4a9810572b
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
2021-01-27 17:23:04 +02:00
Edward Welbourne b08368d99f Add qHypot() to qmath.h, exposing and extending std::hypot()
We have plenty of places where we add some squares and take a square
root; this may be done more accurately and faster by hypot().
Introduce QHypotHelper to handle hypot with more than 3 parameters,
and with 3 when the C++17 version is missing (which it never should
be). Include an overload taking arbitrarily many valus and ensure that
we can use qHypot() with qfloat16.  Illustrate with some example uses,
add some tests.

[ChangeLog][QtCore][QMath] Header <QMath> now provides qHypot(), an
implementation of std::hypot() taking arbitrarily many numeric values,
including support for qfloat16, while avoiding the overflow and
underflow problems that arise when naively taking the square root of a
sum of squares.

Change-Id: Ia4e3913fe83fc27d17d8e7f1a52f03ad445c1fed
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2021-01-27 15:00:57 +01:00
Andy Shaw feb20459bd ibase: Fix the compilation and include it again so it can be detected
Change-Id: I38721155f090173862da8beab8cb04b2e015dcff
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
2021-01-26 21:47:36 +01:00
Alexey Edelev e3e1fc4820 Add upstream version of FindPostgreSQL.cmake
Add CMake upstream(3.20.0) version of FindPostgreSQL.cmake, to avoid
server-related headers lookup.
Avoid using the Qt version of the PostgreSQL module, if it's
older than the CMake's one.

Fixes: QTBUG-89639
Change-Id: I71a0c3508000901969933aea8a08d1ad431db711
Reviewed-by: Craig Scott <craig.scott@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2021-01-26 16:05:05 +01:00
Andy Nichols 3509fc3a1f Android: Fix deprecated QVariant usage
Change-Id: Ib14bbba726d1da352933ed418931d69443720946
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-01-26 13:28:35 +01:00
Tor Arne Vestbø c4c0c54ba1 Clean up QCocoaFileDialogHelper
- Remove indirections via helper functions that did nothing but
   redirect.
 - Remove unneeded checks of !m_helper in delegate. The helper is
   always valid for a delegate.
 - Use m_ prefix for member variables, as in the rest of Qt.
 - Implement init: as per modern Objective-C recommendations.
 - Remove respondsToSelector checks that were not needed.
 - Use modern Objective-C property syntax.
 - Fix code style issues/formatting.
 - Remove unused functions.
 - Reorder and remove unused includes.
 - Class-initialize member variables.

Change-Id: Iedc084b67bb496b2ef13001a0e6aa46d4574eb57
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2021-01-26 13:28:35 +01:00
Tor Arne Vestbø d7c07578bc macOS: Don't restrict non-modal file dialogs to open-dialogs only
None of the APIs used for non-modal operation require NSOpenPanel.

Pick-to: 6.0 5.15
Change-Id: I7ea49a8dad6e724a8a0d4321ea443d4cdcc5a6b1
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2021-01-26 13:28:35 +01:00
Tor Arne Vestbø fce391fefb macOS: Show system tray icon on mouse button press, not release
This was a regression from 395e2d9bc4.

The system behavior is to show the menu on press, so we follow that.

This is also documented at:

 https://doc.qt.io/qt-5/qsystemtrayicon.html#ActivationReason-enum

Fixes: QTBUG-86518
Pick-to: 6.0 5.15
Change-Id: Ia4dc5356bf0377a9d55f238caf5bf1becd95648d
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2021-01-26 13:28:35 +01:00
Tor Arne Vestbø aa3b42d634 macOS: Don't exec file dialogs via runModal unless they are app modal
Non-modal or window modal dialogs are shown at show(), via AppKit APIs
that are non-blocking. If we want to block execution at this point, we
need to spin our own event loop. The runModal API of NSSavePanel is not
meant to be used for blocking execution for already shown dialogs, but
is reserved for application modal dialogs.

This means we no longer trip over AppKit's understanding of what state
the dialog is in, which would result in the dialog not reporting back
any files. It also allows us to remove the guard for closing dialogs
twice.

We now also correctly close and end the application modal session if
the dialog is closed programmatically using Qt APIs.

Task-number: QTBUG-89959
Fixes: QTBUG-85547
Pick-to: 6.0 5.15
Change-Id: Ida3dc404417789d4823822ecfbf0935591c23878
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2021-01-25 18:26:47 +01:00
Allan Sandfeld Jensen fdc7eb80dd Add QPlatformScreen::colorSpace()
Added for macOS and X11 screens

Task-number: QTBUG-90535
Change-Id: Ifafe7a07ee2abc3c42cd12785db2d7329878375b
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2021-01-25 17:21:54 +01:00
Christian Ehrlicher 4e2a942369 QSql/PostgreSQL: allow blobs with more than 2^30 bytes
Due to limitations of QByteArray it was not possible to store more than
2^31 bytes. This was fixed in Qt6 so throw away the casts to int in the
postgres plugin

Fixes: QTBUG-79059
Change-Id: I8ae7276a04d4936bcf5ba6c413e3412f6c342ff5
Pick-to: 6.0
Reviewed-by: Robert Szefner <robertsz27@interia.pl>
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2021-01-25 16:37:25 +01:00
Joerg Bornemann d95a1a8bd4 Fix separately building SQL plugins with CMake 3.16
Also move the cmake_minimum_required call to the top of the file,
because the line before already requires some policy settings, which is
what cmake_minimum_required() is establishing.

For the standard Qt build, we make sure to get appropriate policy
settings by calling qt_internal_upgrade_cmake_policies().

Pick-to: 6.0
Change-Id: If97556a9dd00646e83957959d0f9f16916625160
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2021-01-21 16:18:40 +00: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