Commit Graph

10270 Commits (b5d874e36fd39fa6e57ff27db27ae0b029949749)

Author SHA1 Message Date
Tor Arne Vestbø 24da05f68d macOS: Remove workaround for worksWhenModal not being reevaluated
On macOS < 10.15 the worksWhenModal property of our NSWindow was read
on window initialization and propagated to the window server, but never
updated on the window server past that point, even if updating the
worksWhenModal property on the NSWindow.

Now that we no longer support macOS < 10.15, we can remove the workaround,
that was using private APIs to talk to the window server directly.

Pick-to: 6.5
Change-Id: Ide5a6d63cc471fd04748d1aa7f7915ccde2a1cdc
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-03-13 22:26:28 +01:00
Tor Arne Vestbø 441993a9a2 macOS: Guard text input client from destroyed QCocoaWindow
The text input system on macOS may in some cases hold references to our
QNSView, even after we've destroyed the corresponding QCocoaWindow. This
happens e.g. when using the Keyboard Viewer to input text into a dialog,
and then closing the dialog.

In this situation we get text input callbacks such as selectedRange,
attributedSubstringForProposedRange, firstRectForCharacterRange, and
need to account for the lack of a valid platform window.

This happens even if NSTextInputContext.currentInputContext has been
updated to the input context of the parent window, and even if we
explicitly deactivate the old input context and return nil for the
input context of the now QCocoaWindow-less QNSView.

We can combine this situation with the handling of a missing focus
object, so that each callback doesn't need explicit platform window
checks.

Fixes: QTBUG-106369
Fixes: QTBUG-111183
Fixes: QTBUG-105250
Pick-to: 6.5 6.2 5.15
Change-Id: I5bc1b9667376c87221fe5007db162224c022c09f
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-03-13 15:49:37 +00:00
Christian Ehrlicher 30de1f74de SQL/MySQL: Add support for Bit-Value Type - BIT
Add support for MYSQL_TYPE_BIT. Since the bitfield can be max 64bits,
store it in a uint64_t. Writing such a value as MYSQL_TYPE_LONGLONG
works as expected but receiving it needs a special handling.

[ChangeLog][SQL][MySQL] Added handling for Bit-Value Type - BIT.

Fixes: QTBUG-21326
Change-Id: Id20e3316caf6703b3bec8a828144494a20693fd8
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-03-12 16:21:17 +00:00
Christian Ehrlicher f19320748d SQL/ODBC: add another check to detect unicode availability in driver
Since ODBC does not have a direct way finding out if unicode is
supported by the underlying driver the ODBC plugin does some checks. As
a last resort a sql statement is executed which returns a string. But
even this may fail because the select statement has no FROM part which
is rejected by at least Oracle does not allow. Therefore add another
query which is correct for Oracle & DB2 as a workaround. The question
why the first three statements to check for unicode availability fail
is still open but can't be checked since I've no access to an oracle
database.

Pick-to: 6.5
Fixes: QTBUG-96616
Fixes: QTBUG-102958
Change-Id: I8ec0115bbfbfc40852bcfb8e94b4b4ad3e395b37
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-03-12 16:21:17 +00:00
Christian Ehrlicher 3b2c09a13c SQL/MySQL: fix QSqlDatabase::tables() with MySQL 8.0.x
The (undocumented) struct MYSQL returned by mysql_real_connect() no
longer stores the db name in MYSQL.db but something else. This leads to
a wrong select statement within QMYSQLDriver::tables(). Therefore store
the current database name in QMYSQLDriverPrivate to be able to use it in
tables() later on.

Pick-to: 6.5 6.2 5.15
Change-Id: I27d3345dd44a0d8642ca120cddc5c151b8bed85d
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-03-12 16:21:17 +00:00
Mikolaj Boc 6852627777 Reuse the existing canvas context for offscreen surfaces
Due to the nature of WebGL contexts, which cannot be reassigned to
targets other than they were created for, we will now reuse the created
canvas context for offscreen surfaces, since those (hopefully) mostly
operate on textures anyway. If this is not done, any switch to an
offscreen surface for the main RHI context invalidates resources on
contexts in a share group with it.

Fixes: QTBUG-111617
Change-Id: I9752f7eec396a3ef11414881f5f79f26e1e2c859
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2023-03-12 16:00:02 +01:00
Christian Ehrlicher cdbfaf1b65 SQL/OCI: Compile with QT_NO_CAST_FROM_ASCII
Don't know why this even went through the ci.

Pick-to: 6.5
Change-Id: I9f0d1cee0c600c98f5b71bdd10f8f0260e43afcf
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-03-12 12:36:55 +01:00
Ahmad Samir e426a4e3fa QObject: implement startTimer(int) in terms of startTimer(chrono)
I.e. use chrono first, this means the API isn't limited by the size of
int, but by the size of whatever chrono::milliseconds uses (typically
int64_t), and chrono units are much more readable as well.

Task-number: QTBUG-110059
Change-Id: Ie7f2d90864782361a89866693011803be6f8545e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-03-11 12:40:04 +02:00
Volker Hilsheimer d115aa90a2 Windows: initialize COM in internal thread
The QWindowsDialogThread uses COM APIs, so we need to initialize COM.

Task-number: QTBUG-111625
Pick-to: 6.5 6.2
Change-Id: Ief136ee70671034cb8996ab2f5b113e3884d2953
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2023-03-09 19:57:38 +01:00
Tor Arne Vestbø a0313c85a9 Plumb QMessageBox::setCheckBox() through QPlatformMessageDialogHelper
Without this plumbing we have no way of knowing if the QMessageBox
has a checkbox set, and can't decide to skip the native dialog,
leaving the user without the expected checkbox.

As the suppression checkbox on macOS can be customized, we can use
this plumbing to actually provide native dialog support for generic
check boxes.

This mechanism can also be used by QErrorMessage, which now matches
behavior between native and non-native dialogs in terms of the label
of the checkbox and its initial state. We might want to tweak this
in the future, since user's might expect the suppression label and
state to match the system default, but that's something we can
expose from the platform theme if so, and should apply equally
to the non-native dialog.

Fixes: QTBUG-111803
Pick-to: 6.5.0 6.5
Change-Id: Ied9fc34383fe79fbd8437592ad1c1993b9396178
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-03-09 09:41:33 +01:00
Tor Arne Vestbø c80615b6cc macOS: Remove content border thickness members from QCocoaWindow
They were only set by QCocoaWindow::setContentBorderThickness(),
which was removed in 19fc78e967.

Pick-to: 6.5
Change-Id: Ia1b429c56c9627506023b76bddf878a4321d5f0b
Reviewed-by: Doris Verria <doris.verria@qt.io>
2023-03-08 01:22:19 +01:00
Tor Arne Vestbø 6806ed373c macOS: Class initialize QCocoaWindow members
Pick-to: 6.5
Change-Id: I76e107b676ce27526094f851ec23bb544689e32f
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-03-08 01:22:19 +01:00
Tor Arne Vestbø f5afbd6d4b macOS: Move setMask call out of recreateWindowIfNeeded
It semantically applies during platform window initialization, and
doesn't depend on the logic of choosing an appropriate NSWindow class.

Pick-to: 6.5
Change-Id: Ia24a2deafc78ed4c79df766b6372ad64de2d0dde
Reviewed-by: Doris Verria <doris.verria@qt.io>
2023-03-08 01:22:19 +01:00
Tor Arne Vestbø d7e2c9acf2 macOS: Don't set opacity on non-top level windows during NSWindow creation
The opacity is a property of NSWindow.

There's no point in pulling out the opacity from QWindowPrivate,
as QWindow has a public accessor for it. And we don't need to
guard the call with a check for non-1.0 opacity. If we want
logic to avoid redundant calls to the platform APIs, they
should be in the setter.

Pick-to: 6.5
Change-Id: Ic9b8d1051f30d3b7e09dae14b9f22ca899d05865
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-03-08 01:22:19 +01:00
Christian Ehrlicher 4ec5c0efc7 SQL/ODBC: Return all native error codes
ODBC can (similar to DB2) return more than one native error code for an
error but only the last one was recorded which may made the error
diagnostic more complicated. Therefore return a concatenated list of
native error codes the way it's done for DB2.

[ChangeLog][SQL][ODBC] QSqlError::errorCode() might return a semicolon
separated list of native error codes.

Fixes: QTBUG-45087
Change-Id: I70d02adeb33e72897f13e0c72fbbd2c60f307e2f
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-03-07 22:09:28 +01:00
Tor Arne Vestbø 4e59a5252c macOS: Use non-native app modal message box from nested event loops
The NSAlert does not stay open when ran from a nested event loop,
so we need to fall back to the cross platform dialog. The window
modal dialog does not have this issue.

Fixes: QTBUG-111524
Pick-to: 6.5 6.5.0
Change-Id: I63fba0a092018bb19edeef78c06587455d752235
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2023-03-07 14:04:09 +01:00
Piotr Wierciński 4d09152344 Wasm: Hide resizing divs when the window is not resizable
Hide divs that are responsible for resizing the window and changing the
appearance of the cursor on this window if this window is not resizable.

Fixes: QTBUG-111618
Change-Id: I1948eaedf02fdd2a5289ae314521b3fd74ad7811
Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
2023-03-07 12:50:41 +01:00
Piotr Wierciński 073848f3c4 wasm: fix respecting minimum size of QWasmWindow
Minimum size of QWasmWindow was not properly enforced.
Make sure that minimumu size constraints are respected
when the QWasmWindow is created, resized manually or
changed by setGeometry().

Fixes: QTBUG-111162
Change-Id: I2984b0836b5b53f9163275153d734cb1d81ef3b6
Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
2023-03-05 09:31:06 +01:00
Tasuku Suzuki 45df0ed246 Fix build with -no-feature-lineedit
Introduce a new feature for password dialog in cups that needs several widgets

Pick-to: 6.5 6.5.0
Change-Id: I93799b814ac06e661c19cffcd7d3c9bfa56ff814
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-03-04 09:45:21 +00:00
Liang Qi 2b94453cbd xcb: ignore the xscreens which don't belong to current connection
This amends 9a4c98e556.

When a X server has multiple xscreens, for example, ":0.0" and ":0.1",
a Qt application, which uses ":0.1" as display, can't use the randr
monitor from other connection(":0.0") to show contents there. Then
we don't need to generate QXcbScreen for them.

Pick-to: 6.4 6.5
Fixes: QTBUG-110898
Change-Id: I04c1512664b763ffabb55b75db4411d100536255
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: JiDe Zhang <zhangjide@uniontech.com>
Reviewed-by: Liang Qi <liang.qi@qt.io>
2023-03-03 07:42:21 +00:00
Volker Hilsheimer 76c63936d3 macOS: Send a filename QFileOpenEvent if invalid URL, deprecate openFile
When the string we receive from the system doesn't parse into a valid
QUrl (because QUrl requires a valid IDN), then we shouldn't send the
QFileOpenEvent based on that invalid QUrl, but instead pass the string
through as the file name.

The file name is anyway not guaranteed to be path to a file that can be
opened, as per the existence of QFileOpenEvent::open and the repective
documentation stating:
"some files cannot be opened by name, but require specific information
stored in this event."

However, that API is not useful at all, the implementation just opens
the passed-in QFile, using the stored file name. There's no way
to override this, and QFileOpenEvent is a locked class with all data
stored inline. So we can't even redirect to a platform-implementation.
Deprecate that function. Applications should interpret the string
returned by file(), which might not be a path to a local file.

Fixes: QTBUG-98384
Change-Id: Iff75489de9d7c5fc034f44c0bda4963b2efb1925
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2023-03-02 18:58:03 +00:00
Tor Arne Vestbø e7d038c027 iOS: Respect QSurfaceFormat::colorSpace() when using Metal
Unlike on macOS, there's no colorSpace property on UIWindow or UIView,
but CAMetalLayer has one, which allows us to tell Core Animation that
the layer targets a specific color space, and Core Animation will then
do the rest of the color matching to the target display.

Now that we use Metal to flush raster content, this is even more useful.

Task-number: QTBUG-108094
Pick-to: 6.5
Change-Id: Ib04b42d9baa296b608983db38faf0398430db093
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2023-03-02 12:51:14 +01:00
Marc Mutz 6990f23813 Long live QMessageAuthenticationCode::resultView()!
Use it in a few places.

[ChangeLog][QtCore][QMessageAuthenticationCode] Added
QCryptographicHash-style resultView().

Change-Id: I745d71f86f9c19c9a9aabb2021c6617775dab1cf
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2023-03-01 17:20:41 +01:00
Ilya Fedin 481771a331 Rely on Windows to generate CF_TEXT when active code page is UTF-8
It's possible since Windows 10 1903 to set the active code page
to UTF-8 using the manifest. In that mode, QString::toLocal8Bit
converts to UTF-8 and the legacy programs not using UTF-8 codepage
can't interpret the value.

We can detect whether the UTF-8 code page is used, and in that case
only provide data as CF_UNICODETEXT. Windows will then synthesize the
CF_TEXT format when the clipboard data is consumed, using the right code
page for the target application.

https://learn.microsoft.com/en-us/windows/apps/design/globalizing/use-utf8-code-page

Pick-to: 6.5 6.4 6.2
Change-Id: Ie024a618556d9bb5b5c7ac70507d279b959ff6db
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-03-01 16:05:13 +00:00
Christian Ehrlicher b528e44f5a QWindowsXPStyle: use QVarLengthArray instead new for memory allocation
Avoid the creation of a temporary buffer by using QVarLengthArray
instead. Normally GetRegionData() only returns one rect (~48bytes) so it
will fit into the QVLA without a memory allocation

Change-Id: I279693e17e2f9f2c1c75504c3e5c1de3d45084ec
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-02-28 19:14:19 +00:00
Christian Ehrlicher 9b643bc6c9 SQL: small optimization for SQLDriver::escapeIdentifier()
Avoid a memmove (and replace it with a memcpy) by not using
QString::prepend() but create a completely new string object instead.

Change-Id: Ibdb4a9c6b15b96f1743d47e158ff0fb9b2048221
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2023-02-28 20:14:19 +01:00
Christian Ehrlicher 79b22bb1f3 SQL/OCI: use QDateTime::toString("ttt")
Use QDateTime::toString("ttt") which is available since Qt6.5 instead
own implementation

Pick-to: 6.5
Fixes: QTBUG-111275
Change-Id: I41676d3a327c5aaabdeb4f54b9d169e228c482e1
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2023-02-28 20:14:18 +01:00
Santhosh Kumar 170fadadd6 Add API in QWindowsPrivate to provide window palette
The window uses default palette (QPalette()) to determine frame
color (either light or dark). This doesn't work for quickcontrols
as they depend quicktheme palettes and they don't overwrite default
palettes.

This patch add API in QWindowPrivate to provide palette for window
and this can be overridden by quickcontrol windows to provide
their corresponding palette.

Fixes: QTBUG-111491
Pick-to: 6.5
Change-Id: I39eea20ee7c61ecf0279143c9784da35be15edd3
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-02-28 19:03:53 +01:00
Volker Hilsheimer f5105ea89a QStyleSheet: never treat styled scrollbars as transient
If a style sheet is applied to a scrollbar, then we cannot treat it as
transient, as the QStyleSheetStyle doesn't implement any fade-in/out
animation logic. And we also need to set the overlap to 0 (in both
the style sheet and the macOS style) if the scrollbars are not
transient; otherwise the opaque scrollbar will be placed on top of the
content.

Since a style sheet might only apply to a scrollbar based on its
orientation, we also have to pass the style option through to all calls
of the styleHint function.

And since that function is also called from other QStyle implementations
in the macOS style, we have to make sure that we call styleHint() on the
widget's style to get the correct value based on the style sheet.

Fixes: QTBUG-63381
Pick-to: 6.5 6.4 6.2
Change-Id: Ic67ce3a7cb5089f885dabfd5a1951e3029915446
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
2023-02-27 19:26:05 +01:00
Oliver Wolff c912bde52a Windows drag&drop: Use correct window for drag target processing
GetFocus will return the window that currently has keyboard focus. This
is not what we want for drag and drop handling though. Use the window
under mouse and process events for that window when doing the touch/pen
input workaround. If no window is found we fall back to the focus
window. Followup to 31e7790102

Fixes: QTBUG-111149
Pick-to: 6.5 6.4 6.2
Change-Id: Ib8233debc267df0cc19b21c1dc5c6881d018d84a
Reviewed-by: Timothée Keller <timothee.keller@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2023-02-27 08:26:49 +00:00
Christian Ehrlicher 6b9977c4ad SQL/OCI: Correctly calculate utc offset string when icu is not available
When ICU is not available, QTimeZone::displayName() does not return a
valid timezone offset string so the OCI driver will get a wrong utc
offset string and inserting a QDateTime will go wrong.
Fix it by creating the utc offset string by ourself (toOffsetString()
inside qdatetime.cpp is static and therefore not accessible for us).

Pick-to: 6.5 6.4 6.2 5.15
Fixes: QTBUG-111275
Change-Id: Ib724d760688614e162246e1e028ee5e004cc9477
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-02-27 06:23:58 +01:00
Assam Boudjelthia 738c48244b Android: use FileProvider with QDesktopServices::openUrl()
Allow openUrl() to use FileProvider for opening files that are located
under app scoped paths and that use a file scheme for Android sdk 24 or
above.

[ChangeLog][Core][Android] Add FileProvider support for
QDesktopServices::openUrl().
[ChangeLog][Core][Android] Add AndroidX dependency to Gradle builds
by default since it's required by FileProvider.

Fixes: QTBUG-85238
Change-Id: Ia7403f74f2a8fd4886f74dba72e42b318ef5d079
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Nicholas Bennett <nicholas.bennett@qt.io>
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
2023-02-24 17:45:10 +02:00
Piotr Wierciński cd28603360 wasm: Fix checking window flags in QWasmWindow
Querying bit flags by direct comparison yields incorrect results.
As an effect the minimum size for QWasmWindow is not always properly set.
Use testFlags() function instead.

Change-Id: Ie4cf528ed3c6f664abd17615a6898e8fc49d84b5
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2023-02-23 14:16:06 +01:00
Joni Poikelin 8dfca2ee71 Fix crash with removed menus
Pick-to: 6.5 6.4 6.2
Fixes: QTBUG-111388
Change-Id: I9c9f0ad5cc02293197d7e77eeeec3ffa9d72a4af
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2023-02-23 12:49:58 +00:00
Christian Ehrlicher 78f7a8c418 SQL/OCI: Fix QSQLDriver::record() when tablename is a synonym
Fix the statement when the tablename is a synonym by not appending the
where clause for the table name to the initial statement used for
tables and synonyms later on.

Pick-to: 6.5 6.4 6.2 5.15
Fixes: QTBUG-111339
Change-Id: Ie18a858427d124e80462048b1a9c5e2afa327546
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-02-22 20:24:13 +01:00
Mikolaj Boc a596ea0fe2 Support always on top/bottom window flags on WASM
The window stack will now upkeep three groups of windows, always
on bottom (1), regular (2), always on top (3). Windows belonging to
(3) will always appear on top of (2) and (1), and windows from (2) will
always appear on top of (1).

The first window created in the application gets the (1) status, which
is in line with the root window mechanism used before.

Activation has now been decoupled from the top position on the window
stack as a window in (1) or (2) may be active, in spite of the top
window belonging to a higher group.

Fixes: QTBUG-110098
Change-Id: I51f4d2d47163fab26ce5ef28f7a4f23a522c7f91
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
2023-02-22 18:07:35 +01:00
Volker Hilsheimer b4b4c81401 Revert "Rename {from,to}DOMRect() → {from,to}DomRect()"
This reverts commit 81ce878f55.

Reason for revert: The native type is DOMRect, and in Qt, converters
to/from native types stick to the native capitalisation (e.g. fromCGRect
or fromNSString).

Change-Id: Ic44ec79849fc6accdce1153471dd1ad9117e57ce
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2023-02-22 14:27:35 +00:00
Marc Mutz 7db28fb4bd Rename QBA::{to,from}Uint8Array() → {to,from}EcmaUint8Array()
Found in API review: from/toUintArray() is too generic a name, make
sure its name gives enough context.

Pick-to: 6.5
Change-Id: Ie10ff06ae11a5e168c4c91b60a9698a41d0429fc
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-02-21 21:34:07 +01:00
Marc Mutz 81ce878f55 Rename {from,to}DOMRect() → {from,to}DomRect()
Because it's QDomNode, not QDOMNode, either (abbreviations aren't
supposed to be all-caps in Qt).

Found in API review.

Pick-to: 6.5
Change-Id: I37bcd8c38d396709d11c4eab035cdfd2145eb245
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2023-02-21 21:34:07 +01:00
Friedemann Kleint 71c2c03477 Windows QPA plugin: Remove some duplicated declarations
Pick-to: 6.5
Task-number: QTBUG-109394
Change-Id: Ic132495da4bfc12ecf303d018fb4d9ba1c8a1128
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2023-02-21 16:59:02 +01:00
Friedemann Kleint 269f44aebc Direct2d QPA plugin: Add exclusions for Unity builds
Similar to the Windows QPA plugin.

Pick-to: 6.5
Task-number: QTBUG-109394
Change-Id: I8e094e4ec49574441d3fd73e7ac2cc6fe3b5fd5f
Reviewed-by: Amir Masoud Abdol <amir.abdol@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2023-02-21 16:59:02 +01:00
Lorn Potter f3951eb5d0 wasm: fix error in 'cut' synthesized key
Pick-to: 6.5
Change-Id: Idca32c8cedb60563f8f1054d6634ab0411c07d9b
Reviewed-by: Piotr Wierciński <piotr.wiercinski@qt.io>
Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
2023-02-21 14:41:47 +10:00
Tasuku Suzuki 34a0f2251a Fix build with -no-feature-formlayout
Pick-to: 6.5
Change-Id: I9f552942c206f16ef5e8b96cbf7255a54ff83470
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-02-21 03:55:53 +09:00
Friedemann Kleint 9ac0742d36 Windows QPA plugin: Move palette helper function to qwindowstheme.h
This avoids the duplication of helper functions.
Amends a2518b4140.

Pick-to: 6.5
Task-number: QTBUG-109394
Change-Id: If969a6497aed3b3662621cf723772c87eb66fd23
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-02-20 17:06:32 +00:00
Fredrik Ålund 0efd8854c4 A QtSql driver for Mimer SQL
The QtSql for Mimer SQL sqldriver makes it possible to work with the
Mimer SQL database on different plattforms. There are drivers for
several other databases in QtSql and a driver for Mimer SQL will
benefit many users.
To build the Mimer SQL driver, download Mimer SQL from
https://developer.mimer.com

[ChangeLog][QtSql]
Added a QtSql plugin to work with the Mimer SQL database

Fixes: QTBUG-111219
Change-Id: Id6ba5de4de01189d0516ffbfa89efcb0d013115f
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-02-20 14:18:18 +00:00
Tor Arne Vestbø c26c91b208 macOS: Pick up QWizard background from keyboard assistant via NSBundle
As of macOS 10.14 the keyboard assistant background is shipped as part
of the compiled asset catalog of the app, so looking it up via a URL
will fail.

Instead we look it up via NSBundle's dedicated image lookup function,
which handles both cases.

The logic has also been moved to qwizard.cpp, since the additional
plumbing via QPlatformNativeInterface was unnecessary.

The keyboard assistant itself no longer shows the background image
as of macOS 12, so we might consider doing the same, but the design
of the assistant has also changed significantly, so as long as our
QWizard layout looks like the old keyboard assistant we keep the
background as well.

Pick-to: 6.5 6.2
Change-Id: I7d42dd79b285f3518837458864bca6bc353b3b6d
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2023-02-17 18:02:25 +01:00
Mårten Nordheim 61bfe87a64 TLS[openssl]: Use optional<> for CA cert we are fetching
The QSslCertificate ctor is somewhat expensive, especially when we are
shutting down. By using optional<> we simply reset() it and no longer
need to create a new, valid, certificate.

Pick-to: 6.5 6.4 6.2
Task-number: QTBUG-102474
Change-Id: I514433b0d380dd3ceabbed3a6164f7e3efc490c7
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Konrad Kujawa <konrad.kujawa@qt.io>
2023-02-17 12:00:03 +01:00
Friedemann Kleint 64dc6fe87d Add some exclusions for CMake Unity (Jumbo) builds
Add exclusions for issues that are likely not fixable
(3rd party code, X11 define clashes, etc) in 3rd party,
tools and plugins.

Pick-to: 6.5
Task-number: QTBUG-109394
Done-with: Amir Masoud Abdol <amir.abdol@qt.io>
Change-Id: I698c004201a76a48389271c130e44fba20f5adf7
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2023-02-16 16:03:06 +01:00
Tor Arne Vestbø 19fc78e967 Remove QCocoaWindow::setContentBorderThickness
Its only client was QMainWindow, but that use was removed in
3b8b47db6a and replaced with a
call to setContentBorderEnabled.

This effectively reverts 0caaf9966a.

Pick-to: 6.5
Change-Id: Iaba4d5fd9256632b4a3b935e3fb30d7f5c39851e
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2023-02-15 17:14:54 +01:00
Tor Arne Vestbø 5d13e05651 macOS: Remove machinery for attaching NSToolBar to QWindow
It was only used by QMacToolBar in QtMacExtras, which no longer exists
in Qt 6. Attaching a toolbar can be done manually via the NSWindow of
the NSView retrieved from winId(). There are no public uses of the native
interface in GitHub outside of Qt.

Improvements we want to make to toolbars in QtWidgets and QtQuick in the
future, possibly backed by native toolbars, would be done behind the
scenes and would not need this API.

This effectively reverts e8fd6b9604bac334404dc52daa63b9e6d9cd71d8.

Pick-to: 6.5
Change-Id: I33b090fa19f9f3af029ae8c269efcf739a4b1b22
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2023-02-15 13:12:34 +01:00
Mårten Nordheim 2294e68559 Schannel: Enable users to let schannel pick a certificate
Schannel is by default able to pick out and transmit a certificate
it can find in the user's certificate store. The reason why we
disabled it by default is because some applications create and store
certificates in the store that is searched, so it may grab unexpected
certificates. However, in some environments this is not an issue, so
let these users re-enable this feature.

Fixes: QTBUG-89556
Change-Id: Iffa8550ee64c70bb0955041072ed5a49f600f6a1
Reviewed-by: Joni Poikelin <joni.poikelin@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2023-02-15 13:08:31 +02:00
Timur Pocheptsov 402a526b2a QIosFileDialog - properly handle QUrl for assets-library
For QT_PLATFORM_UIKIT 'PicturesLocation' manually appended by "assets-library://".
When converted to QUrl, such a path becomes a valid url, having empty path
and scheme "assets-library". Later in QIOSFileDialog we convert this
path (options()->initialDirectory()) calling QUrl::toLocalPath, which
gives us an empty string and thus we erroneusly select document picker
dialog, not an image picker. So let's also check a scheme, not path
only.

Pick-to: 6.5 6.4 6.2
Fixes: QTBUG-107844
Change-Id: If4dd453549b37933cba07b5d7af6e45f2504dd29
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2023-02-15 08:36:50 +01:00
Mikolaj Boc 3dc6fdc6d8 Fix the handling of dead keys and test the mechanism
An effort has been made to support more keyboard layouts that provide
dead keys (US international, Mac-specific dead keys).

The dead key is translated now at the event conversion phase, not
when it is actually used for modifying keys, which simplifies the logic.

Unittests have been created to check the translation mechanism.

Fixes: QTBUG-86272
Change-Id: I07f7d63f5a37f8469c693b034b400da99379f519
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
2023-02-14 23:18:42 +01:00
Mikolaj Boc da5dc20625 Transfer touch event handling to QWasmWindow
Fixes: QTBUG-103498
Change-Id: Iec8b5cfba75131e7ddf855e6b729291950888fd3
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
Reviewed-by: Aleksandr Reviakin <aleksandr.reviakin@qt.io>
2023-02-14 19:01:17 +01:00
Mikolaj Boc 39589b057f Use mouseEventTypeFromEventType instead of duplicating it
QWasmWindow::onNonClientEvent uses the same logic as
mouseEventTypeFromEventType, thereby duplicating its logic.
Use mouseEventTypeFromEventType instead.

Change-Id: I8c70e053aa950eee02be57671678a15cab3445ee
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
Reviewed-by: Aleksandr Reviakin <aleksandr.reviakin@qt.io>
2023-02-14 13:23:20 +01:00
Mikolaj Boc d6eea89bc6 Use floating point coords for mouse/wheel events on wasm
Fractional mouse movements may be reported on hi-dpi. Floating point
event fields help us perform correct calculations in line with the
web platform.

Change-Id: Ic0c457db408c2bf28179ffcfdb032cde64ca8bbd
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
Reviewed-by: Aleksandr Reviakin <aleksandr.reviakin@qt.io>
2023-02-14 07:34:25 +01:00
Tor Arne Vestbø 32749c913b Rename Qt::Appearance to Qt::ColorScheme
Based on discussions in the 6.5 API review, where we concluded that
'appearance' is too general. Instead, we follow the CSS standard
and use the term 'color scheme'.

Pick-to: 6.5
Change-Id: I8ceaf4138ecadff5ccd962480e8e5beb39b556ec
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
Reviewed-by: Jonas Kvinge <jonas@jkvinge.net>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2023-02-13 17:19:23 +01:00
Morten Sørvig b7046ec2ac wasm: don't set window states for child windows
Child windows can't be e.g. fullscreen independently
of their parent window. They should probably be allowed
to take the WindowActive state though, so let that
one trough.

Pick-to: 6.5
Change-Id: I857029f680d2fb274ba38705f6b687be45f46761
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2023-02-13 14:51:59 +00:00
Christian Ehrlicher 5bc61ec5d0 ODBC/MySQL: fix compilation with MySQL < 5.7.9
MYSQL_TYPE_JSON was introduced in MySQL 5.7.9 but our documentation
states that we still support 5.6 so we have to define this value by
ourself for the older versions.

Pick-to: 5.15 6.2 6.4 6.5
Fixes: QTBUG-109832
Change-Id: I935edb14495d162ed58109610946b2805d37bbc4
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-02-12 20:15:17 +01:00
Christian Ehrlicher b73574c4a6 SQL/MySQL: add options to explicitly specify the protocol type
[ChangeLog][QtSql] Added the ability to specify the MySQL/MariaDB
connection type using the "MYSQL_OPT_PROTOCOL" connection string
option. In case the connection type is "MEMORY" for shared memory,
applications can specify the shared memory segment name using the
"MYSQL_SHARED_MEMORY_BASE_NAME" option.

Fixes: QTBUG-2551
Change-Id: I91e0981994c045fb74478d0e765e2ec24eefeece
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-02-12 08:40:52 +00:00
Tasuku Suzuki e7e1515ead Fix build with -no-feature-action
/home/tasuku/io/qt/code/qt/qt5/qtlite/qt5/qtbase/src/plugins/platformthemes/gtk3/qgtk3interface.cpp:640:59: error: return type ‘class QIcon’ is incomplete
  640 | QIcon QGtk3Interface::fileIcon(const QFileInfo &fileInfo) const

Pick-to: 6.5
Change-Id: I2936a3d7ae4cca200f946103b97659819775a8da
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-02-12 07:23:47 +09:00
Tasuku Suzuki 9b30774ad3 Fix build with -no-feature-library
qtbase/src/dbus/qdbus_symbols.cpp:18:17: error: ‘Qt’ has not been declared
   18 | using namespace Qt::StringLiterals;
      |                 ^~

Change-Id: Iaa5f1947bb832706b69e954103761193509644d5
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-02-11 15:25:36 +09:00
Friedemann Kleint 08c2010708 src: Remove remains of qmake conversion from CMakeLists.txt files
Pick-to: 6.5
Change-Id: Id644d322a602038403bb7f46c532744575fbf6d3
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
2023-02-10 23:36:51 +01:00
Christian Ehrlicher c67cc6d570 SQL/MySQL: Fix retrieving a datetime for libmysql >= 8.0.27
Somewhere between libmysql 8.0.18 and 8.0.27, the MYSQL_TIME structure
gained an additional member which increased the struct size by 4 bytes.
This makes an internal check for the correct size of the structi go fail.
Since it can now happen that the plugin is linked against a new libmysql
and used with an old and the other way round, duplicate the old
MYSQL_TIME struct to use this in our code

Pick-to: 6.4 6.5
Fixes: QTBUG-110967
Change-Id: I5bc631179a0a1be47a5966954e757f27a72f1592
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-02-10 19:27:08 +01:00
Christian Ehrlicher 7ebac20812 SQL/ODBC: add handling for SQL_SS_TIME2
MSSql Server sometimes returns SQL_SS_TIME2 instead SQL_TIME. Since this
value is non-standard, we have to define it by ourself.

Pick-to: 5.15 6.2 6.4 6.5
Fixes: QTBUG-109206
Change-Id: I40a4b32590d877ebfdc4b2f1d9080d8cdb2ae7a5
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-02-10 18:27:08 +00:00
Tasuku Suzuki 79b8bf983d Fix build with -no-feature-gestures
Disable xcb touchpad gesture when gestures is not available

Pick-to: 6.5
Change-Id: Idd2fec38646fad4cbda20ab1e560949c8e8844ff
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-02-11 00:34:08 +09:00
Lorn Potter 56068f3a36 wasm: fix multitouch processing
Not all touch points are changed as per emscripten event, so we
do not need to remove or add them to the touch event

Fixes: QTBUG-110941
Pick-to: 6.5
Change-Id: I4799ef0c05750a36361836698eb83e5bf844ece8
Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
2023-02-09 14:45:35 +10:00
Christian Ehrlicher e30ed4d431 SQL/DB2: apply misc changes
Similar to the ODBC changes from 901c86032c

Change-Id: I552b2e43d380080bfac62d61b0e27ba42d13024d
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2023-02-08 23:20:42 +01:00
Friedemann Kleint 65cda1f06a QtGui: Add a header declaring the Windows image conversion functions
The declarations with default parameters cause
conflicts in CMake Unity (Jumbo) builds.

Pick-to: 6.5
Task-number: QTBUG-109394
Change-Id: Icf48193498d70dfacadf1b2499cb3359169f72c0
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2023-02-08 21:13:08 +01:00
Mikolaj Boc a1867208a6 wasm: Don't grab menu bar item shortcuts on Mac
On Mac there's no concept of menu bar alt+key shortcuts. Therefore we
cannot expect users on Mac, even when in a web application, to be
familiar with those. Additionally, alt+key combinations yield special
characters on Mac so that is the behavior we should support in WASM apps
on Mac.

To disable the menu bar item shortcuts, a new platform style hint
UnderlineShortcut was created. Shortcut grabbing was disabled exactly
the same as on regular Mac builds, i.e. through
qt_set_sequence_auto_mnemonic.

Task-number: QTBUG-76587
Change-Id: Ice6ed123c01e46b58d6d2c3e639813161b5a9a40
Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2023-02-08 20:07:40 +01:00
Volker Hilsheimer 1dc5e20c16 Clean up QUtiMimeConverter API
Based on header review comments, make the internal constructor private
and declare classes that need it as friends.

QFlag-ify the HandlerScope enum, as it is a list of flags, and adjust
code accordingly.

Pick-to: 6.5
Change-Id: I1d8843265e49e696d463e9eea8306f4dbae75c78
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2023-02-08 14:53:43 +01:00
Yuhang Zhao c3455ded49 Windows QPA: Rework how we activate the window
The new implementation has the following advantages compared to
the old one:

0. Qt's default activation behavior is not changed, this patch only
   improves how we forcely activate the window.
1. Account for the special case that the foreground window maybe hangs.
2. Truly bring the window to front if the window is hidden or minimized.
3. Use early return to save many indentation.

Change-Id: If51ad943fbc9771ebdddfa0e49732b12566ca2b6
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2023-02-08 13:09:03 +08:00
Christian Ehrlicher efce30bb43 ODBC/SQL: Fix usage of SQLGetData
SQLGetData was called with a nullptr for the output buffer to determine
the buffer length which is not allowed. Fix it by passing a valid buffer
with a buffer size of 0.

Fixes: QTBUG-70362
Fixes: QTBUG-110803
Change-Id: I4d547383100714901a4e2ca3b4777326cfab12fe
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-02-07 22:27:37 +01:00
Christian Ehrlicher a53fe60a92 SQL/ODBC: optimize QVarLengthArray usage
Optimize the QVarLengthArray usage by passing the prealloc size and
directly initializing the allocated memory instead using a memset
where needed.

Change-Id: I61c6f9387fae63ae0c62ee1e87d3b3a7430369b7
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-02-07 22:27:37 +01:00
Christian Ehrlicher 6b58a40d32 SQL/ODBC: misc cleanup for fromSQLTCHAR()
Change fromSQLTCHAR() to honor the fact that we know the size of
SQLTCHAR during compile time.

Change-Id: I1cebf2550be7228980083703e143c7577e8ad377
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-02-07 22:27:37 +01:00
Ahmad Samir 498f345228 QtMiscUtils: add some more character helpers
isHexDigit, isOctalDigit, isAsciiDigit, isAsciiLower, isAsciiUpper,
isAsciiLetterOrNumber.

This de-duplicates some code through out.

Rename two local lambdas that were called "isAsciiLetterOrNumber" to not
conflict with the method in QtMiscUtils.

Change-Id: I5b631f95b9f109136d19515f7e20b8e2fbca3d43
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-02-07 20:04:11 +02:00
Tor Arne Vestbø 364c462d80 macOS: Reduce verboseness of NSUserNotification deprecations
Task-number: QTBUG-110998
Pick-to: 6.5
Change-Id: I8fe252a9f6798e38f77c96b715f334427ffd062e
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2023-02-07 19:04:10 +01:00
Yuhang Zhao 07c234ae0b Windows QPA: make one function static
It doesn't use any non-static functions or variables, so it can be
static, and a function that sets a process's DPI awareness mode
doesn't need to be non-static anyway.

Change-Id: I4cc6e0f423b6cd4cf43d8afed86f26b5d04e3605
Reviewed-by: Timothée Keller <timothee.keller@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2023-02-08 01:59:59 +08:00
Yuhang Zhao c53c292c1b Windows QPA: fix debug message
Before applying this patch, the debug message will contain new lines
which will look rather weired, this patch fixes that.

Amends commit 5e0d9a077d

Change-Id: I2420c04dd7e18a6556664a05ac4ef35c9b652f0c
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2023-02-08 01:59:59 +08:00
Yuhang Zhao ad7227ada1 Use qt_winrtbase_p.h workaround in more places
This patch addresses the following issues:
(1) some places are still using the original workaround, replace
them with the new qt_winrtbase_p.h workaround.
(2) add more comment to let people know how to workaround other
cppwinrt issues (it was a common issue for many years and may be
fixed upstream recently, but let's at least document it in case
the user is still using old version cppwinrt).

Amends commit b2c1237b45

Pick-to: 6.5 6.4
Change-Id: Ife676f41739bbe69d9fb23bf5758be4b1fab4855
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2023-02-07 17:59:59 +00:00
Mikolaj Boc d141d68949 Transfer the key handling logic to QWasmWindow
Also, use the embind approach as the rest of the events do, and
introduce a KeyEvent class which simplifies and streamlines event
support.

The event translator has been given a more specific function of
just handling the dead keys. Rest of the translation functionality
is coded directly in KeyEvent for more encapsulation.

Change-Id: I11b0262fc42fe920206ecc6de0d434b9d9ab9998
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2023-02-07 18:59:59 +01:00
Giuseppe D'Angelo 62be4ab5be XCB: simplify atom registration code
There's no need of calculating offsets into the \0-separated string
of atom names; since we're going to iterate that string exactly once,
do that, and register the corresponding atom name as we iterate.

(This means that solutions that calculate the offsets at compile-time,
like qOffsetStringArray, are also overkill for the use case).

Change-Id: I71ed512dee4f2a8bfb99ca2392efbd8a07f2a7c1
Reviewed-by: JiDe Zhang <zhangjide@uniontech.com>
Reviewed-by: Liang Qi <liang.qi@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2023-02-07 18:59:59 +01:00
Giuseppe D'Angelo 3d72e8829f XCB: do not use reserved identifiers
Any identifier starting with underscore followed by a capital letter is
reserved for the implementation in C++, so don't use them. Rename the
entries in the Atom enumeration by adding an "Atom" prefix to them.

Pick-to: 6.2 6.4 6.5
Change-Id: I059e2093149f39cc9324cd1159c0d9e076eda93a
Reviewed-by: JiDe Zhang <zhangjide@uniontech.com>
Reviewed-by: Liang Qi <liang.qi@qt.io>
2023-02-07 18:59:58 +01:00
Mikolaj Boc 40ddc38a7b Support WindowTitleHint and FramelessWindowHint in QWasmWindow
WindowTitleHint now correctly enables/disables the window title, and
FramelessWindowHint correctly enables/disables the window frame.

Change-Id: I6f98f0a53af828606748308c6b5bd5d492cef9d2
Reviewed-by: Aleksandr Reviakin <aleksandr.reviakin@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2023-02-07 13:33:01 +01:00
Mikolaj Boc f9bf0be854 Support Qt::WindowCloseButtonHint in QWasmWindow
Change-Id: I1cd74e5c9e73c2585d3da3fa0ee4aafd24130019
Reviewed-by: Aleksandr Reviakin <aleksandr.reviakin@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2023-02-05 22:32:36 +01:00
Mikolaj Boc ae51eeb0bb Support Qt::WindowMaximizeButtonHint in QWasmWindow
Change-Id: I1089ab4706c4342fa5976b1aff18d67d47769687
Reviewed-by: Aleksandr Reviakin <aleksandr.reviakin@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2023-02-04 21:38:33 +01:00
Christian Ehrlicher 9ea00c70fb SQL/ODBC: Pass correct length to SQLColAttribute()
This ensures the tst_QSqlQuery::record() test passes when checking the
tablename.

Pick-to: 6.5 6.4 6.2 5.15
Change-Id: I146f9f627ea366c6813af61ce48b930ca1041b15
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-02-04 18:47:05 +01:00
Christian Ehrlicher c5a2257e0b SQL/ODBC: misc cleanup
Cleanup the codebase a little bit:
  - move loop variable into for scope
  - use utils functions instead homebrew
  - avoid use of const_cast<>
  - simplify splitTableQualifier()

Change-Id: I6962f01c94a6b4e0e38ad1b229cdf6e8b3308c78
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-02-04 18:47:04 +01:00
Christian Ehrlicher 694a92ab24 SQL/ODBC: optimize toSQLTCHAR() - avoid an unneeded copy
Avoid an unneeded copy in toSQLTCHAR() when sizeof(SQLTCHAR) == 1 or 4
by directly writing the encoded data into the QVarLengthArray.

Change-Id: Ic4180343764fa1ca175a9cdd444c5359d664c754
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-02-04 18:47:02 +01:00
Axel Spoerl 4804dc9fc7 Remove redundant include statement from qgtk3theme.cpp
QSettings was included but not needed.
This patch removes the include.

Pick-to: 6.5
Change-Id: I9da146312f26f87eb863d6409b90988603cf46d3
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2023-02-04 01:03:33 +01:00
Mikolaj Boc ec535796fa Support Qt::WindowTransparentForInput in QWasmWindow
Change-Id: I31c72bcfff62efb28672d7740bf1096878c88cae
Reviewed-by: Aleksandr Reviakin <aleksandr.reviakin@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2023-02-03 22:03:52 +01:00
Mikolaj Boc c4a350db34 Support Qt::NoDropShadowWindowHint in QWasmWindow
Change-Id: I37b8b4c4d6b717d5fcd32b0793c2209850747085
Reviewed-by: Aleksandr Reviakin <aleksandr.reviakin@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2023-02-03 21:48:19 +01:00
Roland Pallai 03ac8c7397 QXcbConnection::getTimestamp: do not return stale timestamp
The problem is `PropertyNotify` event generated by
`xcb_delete_property()` at return could be reported as an actual
timestamp at next call due to a missing `state` filter.

Because `PropertyNotify` is generated even if an unchanged property
value is set we can get rid of this delete event easily.

This issue causes observable problems in kwin_x11 (KDE project)
too.

Fixes: QTBUG-56595
Pick-to: 5.15 6.2 6.4 6.5
Change-Id: Ice6cfa934e3769d86e9f7264e369dc5918c8542a
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Liang Qi <liang.qi@qt.io>
Reviewed-by: JiDe Zhang <zhangjide@uniontech.com>
2023-02-03 19:03:56 +01:00
Morten Sørvig bf5dbc61b3 wasm: convert a11y coordinates to window coordinates
The html accessibility elements are positioned relative
to the window a11y container. Convert the global (screen)
coordinates we get from QAccessibleIntreface::rect() to
window coordinates.

Pick-to: 6.5
Change-Id: Ifd4eb671def296b1eb418789b7ca85afa365e546
Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
2023-02-03 18:42:21 +01:00
Morten Sørvig 34c3682157 wasm: fix accessibility crash on null parent
The code was a assuming that an a11y interface always
has a parent, which is not the case for the root interface.
Also factor out to a getWindow() function, to prepare
for re-use later on.

Pick-to: 6.5
Change-Id: I52a841bf94c712deb9603e8b9c2c878820c5f117
Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
2023-02-03 18:42:21 +01:00
Morten Sørvig 2443f2be07 wasm: set contenteditable on canvas
We don't want to make the top-level screen contenteditable,
since that interferes with accessibility. Instead, make
the canvas contenteditable and install clipboard event
handlers there.

Also move follow-up settings which counters some of the
effects contenteditable (outline: none and inputmode: none),
and move aria-hidden.

Pick-to: 6.5
Change-Id: Ibe73d8d097acd948ba8920c781a2003db0a14f3d
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2023-02-03 18:42:21 +01:00
Mikolaj Boc 43a77d4b64 Remove unused code in qwasmcssstyle
Since 32666691c2, icons have been set
manually on img elements. The css code assigning the icons to elements
is now unused - remove it.

Change-Id: I394f08371c80f0e374a5cc7e39d17bb6091d18dc
Reviewed-by: Aleksandr Reviakin <aleksandr.reviakin@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2023-02-03 18:42:21 +01:00
Mikolaj Boc 7c33f4be02 Support window masks on WASM
QWasmWindow is now implementing the setMask method, which translates
the received QRegion to a css clip path

Fixes: QTBUG-73260
Change-Id: Ie934c1e6ab650426bfc32154bf9e49a4a2aeb45b
Reviewed-by: Aleksandr Reviakin <aleksandr.reviakin@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2023-02-03 09:46:05 +01:00
Alexey Edelev 871f7a05db Revert "Revert "Add support for MultiABI with custom install dir of the android-build""
This reverts commit d7e8d5bb1b.

Reason for revert: Found a working solution for the issue.

Change-Id: Ia720cc63ece9dfb1a24067cdd9c3d79d4edbe3be
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2023-02-02 19:03:36 +01:00
Santhosh Kumar 9a1b7c7fa5 Reset dark palettes for widgets to light in windows style
Windows theme in dark mode set dark palettes for checkbox,
radiobutton, menu, menubar explicitly. The fix added as part of
a2518b4140 (to use light palette for
windows style) overrides only system palette and widget specific
palettes are still with dark palettes.

In this patch, the windows style overwrite dark with light palette
for widgets that are explicitly set with dark palette in windows
theme.

Fixes: QTBUG-110432
Pick-to: 6.5
Change-Id: I2af0e517d62981f062244eeab8f1b5e5442cc451
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-02-02 14:57:18 +01:00
Friedemann Kleint 441c152d85 QtNetwork: Split out QNativeSocketEnginePrivate
The aim is to have fewer files including <windows.h>.

Pick-to: 6.5
Task-number: QTBUG-109394
Change-Id: Id9cc08f54b5daf6d7e317fad27036dc2efaacbb8
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Amir Masoud Abdol <amir.abdol@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2023-02-02 13:19:06 +01:00
Marc Mutz 46af1fe49f SQL/ODBC: fix some users of toSQLTCHAR() to not assume identical UTF-8/16/32 string lengths
We already fixed the implementation of toSQLTCHAR() in
66767eea46 to not assume that a UTF-8 or
UTF-32-encoded string has the same number of code points as the
equivalent UTF-16 string, but it turns out that users of the function,
as well as other code, also failed to account for this.

This patch fixes callers of toSQLTCHAR() to use

    const auto encoded = toSQLTCHAR(s);
    ~~~ use encoded.data(), encoded.size() ~~~

(except we can't make `encoded` const, because the SQL API isn't
const-correct and takes void* instead of const void*) instead of the
anti-pattern

   ~~~ use toSQLTCHAR(s).data(), s.size() ~~~

As a drive-by:
- Extract Method qt_string_SQLSetConnectAttr()
  - skipping an unneeded .utf16() call (a NUL-terminated string is not
    required for calling toSQLTCHAR())
- de-duplicate some code in exec()
  - and make a comment there slightly more informative
- replace
  - NULL with nullptr
  - size() == 0 with isEmpty()
  - C-style with constructor-style casts

Pick-to: 6.5 6.4 6.2 5.15
Change-Id: I3696381d0a93af8861ce2b7915f212d9e5e9a243
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-02-02 06:33:48 +01:00
Tor Arne Vestbø ae92c571a3 iOS: Fix build with -no-opengl
Pick-to: 6.5
Change-Id: I014fa1772f629ef4224ac98bfc30eb5a86f38fde
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-02-01 19:12:36 +01:00
Alexandru Croitor d7e8d5bb1b Revert "Add support for MultiABI with custom install dir of the android-build"
This reverts commit 979a21dc4e.

Reason for revert: Caused QTBUG-110836

Task-number: QTBUG-110836
Change-Id: I4f31018954e6bb0f4e7b6db0df76d04c0a56d9b1
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2023-02-01 16:18:55 +00:00
Marc Mutz 4c445ef0ba ODBC SQL driver: fix conversion of QByteArray to QVLA<SQLTCHAR>
The QByteArray is assumed to contain an SQLTCHAR string (so, either
UTF-8, UTF-16 or UTF-32-encoded). Only in the UTF-8 case would the
size of the byte array be the same as the size of the SQLTCHAR string
in codepoints, yet the size in bytes is what the code passed to the
QVLA<SQLTCHAR> append() call, causing it to read past the QByteArray
buffer in the UTF-16 and UTF-32 cases.

Fix by properly calculating the string size from the size-in-bytes and
then memcpy()ing into the QVLA. We use memcpy() and not
QVLA::append(T*, n) because the QByteArray buffer need not be aligned
on an alignof(SQLTCHAR) boundary (certainly not since it gained the
prepend "optimization").

Pick-to: 6.5 6.4 6.2 5.15
Change-Id: If3838c3dee89e6aca65541242642315b8e1fa6b4
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-02-01 12:21:23 +00:00
Timur Pocheptsov 0ca8c50d95 DTLS cookie: use CRYPTO_memcmp instead of std::memcmp
memcmp and openssl callbacks are somewhat of a red flag, so use
CRYPTO_memcmp for the sake of looks.

Done-with: Maximilian Blochberger
Change-Id: I38d038ed96830cfd54c6f5cd684f80bee8d42899
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2023-02-01 06:00:13 +00:00
Ahmad Samir 6ff4c3d787 Remove redundant qsharedpointer.h #includes
In some cases added #include <QtCore/qshareddata.h>.

Change-Id: Idc84c4ad6b0bd58e1a67af335dfcff67fdf80b2a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-01-31 20:15:58 +02:00
Ilya Fedin fe90f8aa45 jpeg handler: log error message on fatal error
Original libjpeg's handler has output_message call.

As Qt doesn't have it, it logs non-fatal error, but skips the fatal ones
which are likely more important to be logged than the non-fatal ones.

Pick-to: 6.5
Change-Id: Iebb94db4d56705322e7569445d240ca4a7ed8f4a
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2023-01-31 22:15:58 +04:00
Mikolaj Boc 1737dfa34a Remove dead code from QWasmCompositor
Some of the fields and functions are not used now. Remove those.

Change-Id: I9313eee37374d82de2a1982a54843a70c58af426
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2023-01-31 17:35:13 +01:00
Mårten Nordheim 4cd0716c39 Replace cargo-cult winrt snippet with unified header-include
Pick-to: 6.5
Change-Id: Ide9ec7e4d6c31220fa445d8acb63f7eeca60ab7c
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2023-01-31 12:56:53 +01:00
Mikolaj Boc 38b726830c Remove the unused QWasmWindow::m_pointerMoveCallback
Change-Id: Ife43bb8d10b0d89f8364b5e2b4dd5349a7ad1110
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2023-01-31 10:46:48 +01:00
Inho Lee da898fca02 Free the GLX framebuffer configurations
Adds missing XFree for a glXChooseFBConfig

Pick-to: 6.5 6.4 6.2 5.15
Change-Id: I4c30341f90666170dac5d90b0c65d1deff4e0818
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2023-01-31 09:20:03 +01:00
Mikolaj Boc 0eea2238f3 Quasi-support for offscreen surface on WASM
Since context sharing is not currently supported with WebGL, offscreen
contexts have a limited usability on Qt for WASM.

If a context is shared, use the same underlaying WebGL context so that
the two can actually share resources. This is not full-blown context
sharing by any means but it makes e.g. the Open GL widget work as the
readback texture for it is 'shared' between the virtual Qt contexts.

If no sharing is desired, we use an OffscreenCanvas and actually create
a separate WebGL context.

Fixes: QTBUG-107558
Pick-to: 6.5
Change-Id: If57e44739ddb57c167d5f8881a74d8dee52531f6
Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
2023-01-30 20:10:25 +01:00
Oliver Wolff ade96ff644 Revert "Windows: use MSG timestamps for input events"
This reverts commit baa5888807.

The change caused breakages in qtdeclarative's auto tests. Current
assumption is that we need the system timestamps for other events as
well. Reverting now to unblock CI.

Fixes: QTBUG-110596
Change-Id: I9583627bc058ff0d6cadfa622eed119fb41ca4a1
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2023-01-30 16:39:19 +01:00
Fab Stz 979a21dc4e Add support for MultiABI with custom install dir of the android-build
Right now, "multi abi builds" of android projects works only if the
android-build installation doesn't use custom install dirs
(INSTALL_PREFIX, INSTALL_BINDIR...)

At the same time, it fixes QTBUG-106533. The patches are the same as the
ones in that bugreport.

Add new items to android-*-deployment-settings.json:

    qtDataDirectory
    qtLibsDirectory
    qtLibExecsDirectory
    qtPluginsDirectory
    qtQmlDirectory

Update androiddeployqt to be able to get files from their install location

BTW (fixes QTBUG-106533):
    Install src/android/templates into INSTALL_DATADIR
    Install src/3rdparty/gradle into INSTALL_DATADIR
    Install src/android/java files into INSTALL_DATADIR
    Install all jars into INSTALL_DATADIR

Add missing path to target_qt.conf
    Update target_qt.conf to have all path. Otherwise qmake wouldn't have
    the path when installing the android-build with custom install dirs
    like INSTALL_LIBDIR & friends

Add support for a new cmake variable that can be set at build time of the
android projects: QT_ANDROID_PATH_CMAKE_DIR_${abi} (Name chosen as
brother of QT_HOST_PATH_CMAKE_DIR)

Pick-to: 6.5
Fixes: QTBUG-106533
Fixes: QTBUG-107207
Change-Id: Ia3751362ab1b5f877ecafbe02f263feac167119c
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2023-01-30 14:08:14 +01:00
Vladimir Belyavsky de704b633d Windows: fix warning on opening FileDialog after changing filters
Destroy native file dialog on Windows as soon as it closes.
Currently the instance of native file dialog on Windows may stay live
even when a FileDialog control was closed and won't be opened anymore
in the app session. At the same time, when the FileDialog is opened
again, the instance of native file dialog is recreated so we don't
need to keep previous instance, because this may lead to situation
when QQuickFileDialog configures old instance of the native dialog,
which is causing problems.

Fixes: QTBUG-61042
Fixes: QTBUG-77211
Pick-to: 6.4 6.5
Change-Id: Ia537264e8494b83dec7d5139744838242b281f1f
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2023-01-26 15:07:47 +00:00
Peter Varga a61d537f05 xcb: Fix QXcbCursor for secondary screen
QXcbCursor is created for each screen in a multiscreen setup. Make sure
xcb cursor context is created for all QXcbCursor instances otherwise
xcb can't load cursor for non-primary screens.

Amends commit 012132c60d

Pick-to: 6.5
Fixes: QTBUG-110434
Change-Id: I85da73a1069b681437b29c3e272d85f5d2dde130
Reviewed-by: Liang Qi <liang.qi@qt.io>
2023-01-26 10:48:21 +01:00
Marc Mutz 66767eea46 ODBC SQL driver: deal with different sizes of SQLTCHAR correctly
Neither the UTF-32, nor the UTF-8 recoding of a UTF-16 string is
necessarily of the same length as the input. The UTF-32 version may
be shorter, if surrogate pairs were encountered. The UTF-8 version
will be longer whenever the string contains non-US-ASCII characters.

Split toSQLTCHAR() into three functions, templated on sizeof(SQLTCHAR),
and use QVLA's range-append instead of manual memcpy()s.

This patch specifically doesn't use constexpr-if, as that's not
available until C++17, which Qt 5 doesn't require.

Pick-to: 6.5 6.4 6.2 5.15
Change-Id: I0bfcb66eb321598908ef00ac34c888fdbccf9316
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-01-25 06:37:22 +00:00
Mikolaj Boc 783b63ce51 Set the cursor in QWasmWindow
Also, trim QWasmCursor as some of it was dead code.

Change-Id: If6fee3390e4c2a2c66ceaef5917d7387f8dbd46c
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2023-01-24 20:30:43 +01:00
Oliver Wolff b2c1237b45 Introduce qt_winrtbase_p.h
Due to a bug in earlier Windows SDKs developers have copy paste
a workaround whenever they are including winrt/base.h. In addition to
that our usage winrt API also forces them to include
qfactorycacheregistration_p.h whenever they include that file. To make
things easier all that magic can now be done with one single include of
qt_winrtbase_p.h.

Pick-to: 6.4
Change-Id: Ic6a80d6d3723af381cf0ecc0f0ab43c2e6839a7d
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2023-01-23 18:53:34 +01:00
Yuhang Zhao 17ab11ce49 Windows QPA: also consider window flags when judging frameless or not
It's possible that the window has the WS_THICKFRAME flag but the
Qt::FramelessWindowHint is enabled at the same time. That usually
indicates the user is customizing the window, but it will also
confuse QPA's current logic. We can make the logic more roboust
by reading the Qt window flags as well.

Pick-to: 6.5 6.4
Change-Id: I9894e312a92ef7f5fc0aa93974f216b67fe2cf29
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2023-01-23 23:39:16 +08:00
Yuhang Zhao 5e0d9a077d Windows QPA: rework how we set dpi awareness
Qt6's minimum supported platform is Win10 1809, so it should be quite
safe to use DPI_AWARENESS_CONTEXT APIs because they were introduced
in Win10 1607.

This patch removes the use of the PROCESS_DPI_AWARENESS APIs because
they are old (introduced in Win8.1) and most importantly, they can't
handle the new PMv2 and GdiScaled awareness mode.

This refactor also fixed a bug: previously Qt is using GetProcessDpiAwareness()
to get the dpi awareness mode of the current process, however, that API can't
return PMv2, which means even if we are in PMv2 mode, it will still return PMv1
(I've confirmed that locally), and thus Qt is mishandling such cases.
Eg: when judging whether to enable non-client area dpi scaling or not.

Change-Id: I8a8946ba63c863f8c19c27998af2bac97db37ec7
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2023-01-23 23:39:16 +08:00
Giuseppe D'Angelo baa5888807 Windows: use MSG timestamps for input events
Input events have a timestamp. When dispatching an event through QPA, a
platform plugin can either provide it, or QPA will use an internal
QElapsedTimer to provide a timestamp.

Windows input messages do come with a timestamp already, so we can use
that instead of the QPA.

The two methods are not equivalent.

For instance: for various reasons, Qt does not honor Windows' "double
clicked" message, but uses the delta between two mouse events to
establish if the second click is actually a double click.

Now suppose that the user double clicks on a widget. On the first click,
the application does something that freezes it for a bit (e.g. some
heavy repainting or whatever). Does the second click register as a
double click or not?

* If we're using Qt's own timer, the answer is NO; the event is pulled
  from the WM queue after the freeze, given a timestamp far away from
  the last click, and so it will be deemed another single click
* If we use the OS' timestamps, then the second click will be seen as
  "close" to the first click, and correctly registered as second click.

This reasoning can be extended to many other QPA events, but looks like
the APIs for some are missing (e.g. enter events), so I'm not tackling
them here.

Task-number: QTBUG-109833
Change-Id: I149361a844feac86cafa885c109a1903b1e49545
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Yuhang Zhao <yuhangzhao@deepin.org>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2023-01-23 15:51:55 +01:00
Giuseppe D'Angelo 3d8e02152a Windows QPA: use make_unique instead of QSP+raw new+memset
A minimal change here would've been just to use value initialization
instead of default initialization. But just go for the kill -- stop
using QScopedPointer.

Change-Id: Ie427a44d13987c2b4a2c881c350df04e935df9d8
Reviewed-by: Yuhang Zhao <yuhangzhao@deepin.org>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2023-01-23 15:51:55 +01:00
Mikolaj Boc c54416a06c Handle the wheel event in the wasm window
Align the wheel event handling with other events - move the handler to
wasm window and create a C++ wrapper class for the js wheel event.

Fixes: QTBUG-109622
Change-Id: I915e502de7c0784ec9a6745a90ddcda062e91b2b
Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2023-01-22 23:24:01 +01:00
Mikolaj Boc b6224ec8fa Remove the qwasmstylepixmaps_p.h dead code
The code is now unused as svg graphics have been introduced for
window decorations.

Change-Id: Iefe4543af2483fd9ff3eb6ce15b9905620927a9b
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
2023-01-21 13:45:23 +01:00
Mikolaj Boc 9b64bf0874 Handle the drop event in the wasm window element
Drop events are now handled in the wasm window element, which allows
the browser to select the drop target automatically. This also fixes
the case where drop data transfer finishes reading when a window
has already been closed and destroyed - the cancellation flag is now
owned by window so it gets invalidated as soon as window is gone.

The code has also been structured with a new DragEvent passthrough.

Fixes: QTBUG-109581
Change-Id: Ie3eb7446e2181fd540517f39397e8b35f111d009
Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
2023-01-20 18:00:26 +01:00
Christian Ehrlicher e04af5b9ea SQL: use qsizetype and range-based for loops where possible
Some public functions are still using int instead qsizetype which
can't be changed until Qt7.

Change-Id: Ib6f210c344acce9f3836e8a5493a741eb8b2b385
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
2023-01-20 13:16:35 +00:00
Assam Boudjelthia ba3db0cacd Android: use signature-less jni syntax for AndroidContentFileEngine
Task-number: QTBUG-98974
Pick-to: 6.5 6.4
Change-Id: I1e8e102282af2877bbbe6e8018b7649fac66804e
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
2023-01-18 15:47:12 +02:00
Mikolaj Boc 16bf899557 Streamline reading of js DataTransfer object
qwasmclipboard.cpp and qwasmdrag.cpp had the same logic that read
the js DataTransfer object implemented twice with small differences.
Use a single implementation in both.

This also introduces a clearer memory ownership model in the reader
code, and fixes a potential race condition by introducing a cancellation
flag.

Removed the useless QWasmDrag type which was in essence a SimpleDrag
and made the m_drag in QWasmIntegration a smart pointer.

Fixes: QTBUG-109626
Pick-to: 6.5
Change-Id: I5b76dd3b70ab2e5a8364d9a136c970ee8d4fae9c
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2023-01-18 02:55:12 +01:00
Assam Boudjelthia 609e14724e Android: pass EXTRA_INITIAL_URI to native FileDialog
Allow setting the initial directory where the file dialog
will be opened.

Pick-to: 6.5 6.4 6.2 5.15
Change-Id: I1395b367c74d28fb2890ac53a90456c3ac4c1b05
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2023-01-18 02:44:41 +02:00
Tasuku Suzuki ce1506355f Fix build with -no-feature-cssparser
Pick-to: 6.5
Change-Id: I146ac61f92acdcd22c46ca27a1fca48c47817e3c
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-01-17 03:18:28 +09:00
Mikolaj Boc 2e97ccc8d0 Add QString<->emscripten::val conversion functions
Following the QRect, add functions converting the QString to native
emscripten::val and back: fromJsString, toJsString

Change-Id: I2d0625ede3bbf7249e2e91b8de298b5b91df8ba2
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2023-01-13 21:07:14 +01:00
Thomas Senyk 17a59f6613 Add QEGLContext::invalidateContext
QEGLContext::invalidateContext will mark that egl context is invalide
and trigger SceneGraph to destroy it, create a new one and re-create
and re-upload all resources (e.g. textures) associated with the current
state of the SceneGraph

In addition this change also improves
QEglFSWindow::invalidateSurface() and
QEglFSContext::eglSurfaceForPlatformSurface(..)

Where QEglFSWindow::invalidateSurface() will now destroy the
corresponding EGLSurface via eglDestroySurface, including "unbinding"
it from the current thread via eglMakeCurrent and
un-setting the screen's EGLSurface in case it's the same resource.

QEglFSContext::eglSurfaceForPlatformSurface(..) will now call
QEglFSWindow::resetSurface() in case of getting a EGL_NO_SURFACE
from the QEglFSWindow (which happens if above invalidateSurface()
was called before) - therefor re-creating the resource if
it was destoyed via QEglFSWindow::invalidateSurface()

Pick-to: 6.5
Change-Id: I37badd1fc11e993c395fb1502e9bd27ebe18b821
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2023-01-12 19:03:15 +01:00
Friedemann Kleint aa29b3ef52 Add missing header guards
Task-number: QTBUG-109394
Pick-to: 6.5 6.4 6.2
Change-Id: Idc5b0057d41186c8dfd7e752fe819ebebc6f8859
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2023-01-12 18:14:11 +01:00
Liang Qi ec787ce143 qxcbwindow.cpp: Fix sign-compare and another warnings
qsizetype(int32 on 32bit, int64 on 64bit) vs uint32.

qxcbwindow.cpp: In member function 'virtual void QXcbWindow::setWindowIcon(const QIcon&)':
qxcbwindow.cpp:1300:30: warning: comparison of integer expressions of different signedness: 'qsizetype' {aka 'int'} and 'uint32_t' {aka 'unsigned int'} [-Wsign-compare]
 1300 |         if (icon_data.size() > xcb_get_maximum_request_length(xcb_connection())) {
      |             ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
qxcbwindow.cpp:1301:53: warning: format '%llu' expects argument of type 'long long unsigned int', but argument 3 has type 'qsizetype' {aka 'int'} [-Wformat=]
 1301 |             qWarning("Ignoring window icon: Size %llu exceeds maximum xcb request length %u.",
      |                                                  ~~~^
      |                                                     |
      |                                                     long long unsigned int
      |                                                  %u
 1302 |                      icon_data.size(), xcb_get_maximum_request_length(xcb_connection()));
      |                      ~~~~~~~~~~~~~~~~
      |                                    |
      |                                    qsizetype {aka int}

This amends ebdaf8ef9c.

Fixes: QTBUG-109610
Pick-to: 6.5 6.4 6.2 5.15
Change-Id: I2c9b5ad27881658463dd0870639c42d3ea8e7aba
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
2023-01-11 16:26:50 +01:00
Tor Arne Vestbø adb91d6afb Enable shared library build of Qt for iOS
As of f68e2c92cc, and its follow up
changes, we can now link individual plugins statically, even if the
Qt build is generally a shared build.

This allows us to build Qt for iOS as shared libraries, while still
keeping the platform plugin as a static library, since this is
harder to port over to a shared library.

This gives the benefit of faster turnaround during development, as
well as binary compatibility promises for the main Qt libraries,
without having to go fully shared for all of Qt.

Static builds are still the default, due to the downsides of larger
application bundles and slower load times for shared builds.

For now the user has to manually tick the "Embed & Sign" check
box in Xcode for each Qt library, which is only available with
Xcode projects generated by the qmake Xcode generator.

Task-number: QTBUG-85974
Change-Id: Id2b7bd2823c8e7c79068dda95295b574ada8d7f2
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
2023-01-10 13:16:04 +01:00
Morten Sørvig d55d93629b wasm: move Q_AUTOTEST_EXPORT to correct location
Should be placed between "class" and the class name.

Change-Id: I418cdc2b200bf7b5147d4b4278f3d0b77786710d
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2023-01-09 21:22:26 +00:00
Tor Arne Vestbø 349fda471e Fix QErrorMessage test when using native dialogs
When the test is showing the error message over and over, it's not
waiting for the native dialog to actually become visible, and as
a result, hiding it has no effect and won't result in a call
to processResponse, where we got rid of the native dialog.

To fix this we explicitly release the native dialog when
encountering this corner case.

Add logic to QErrorMessage to test both native and non
native dialogs.

Pick-to: 6.5
Change-Id: I19ac3f463997aed1e66f646fdfcbb4d2459116d1
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-01-09 14:14:49 +01:00
Morten Sørvig 8611b9d8be wasm: make qtloader print stack trace on exception
We were displaying the exception type by on the error
page, however the exception contains a stack trace as
well which we can print to the console.

Pick-to: 6.4 6.5
Change-Id: Ia6c95c3f179eb68e57f9d6d2d8ad960591d0b365
Reviewed-by: Aleksandr Reviakin <aleksandr.reviakin@qt.io>
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
2023-01-09 09:41:26 +00:00
Volker Hilsheimer eac9e74d92 Dark windows: use background/foreground colors for tooltips
That follows what File Explorer on Windows 11, or the system UI does for
tooltips in modern UI elements (the tooltip for the "minimize" button in
a titlebar still shows the yellow-colored tooltip). Using the accent
color makes the tooltip pop a lot more, but doesn't look native.

Also make the toolTipPalette helper function do something useful in dark
mode.

Pick-to: 6.5
Change-Id: I2b07abd72eee50508f19f46aaec3408183c27100
Reviewed-by: Santhosh Kumar <santhosh.kumar.selvaraj@qt.io>
Reviewed-by: David Schulz <david.schulz@qt.io>
2023-01-07 04:57:32 +01:00
Morten Sørvig 1d3d7bfbbc wasm: sync pointer button state on pointer down
We may get PointerDown events with "no buttons" as the button
state in some cases such as for tap events on Apple trackpads.

Make sure the mouse button which caused the pointer down
event is in the mouse buttons set for the event.

Fixes: QTBUG-108639
Pick-to: 6.4 6.5
Change-Id: I0a49abc398308bbfed657b99fc74f60c16e05a59
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2023-01-06 17:57:17 +01:00
Morten Sørvig daba0b8c19 wasm: Fix secondary thread event processing
Fix test failure in WasmEventDispatcherTest::postEventSecondaryThread()

Revert to using qGlobalPostedEventsCount() for determining
pending events state, but move the final check to after
sending posted events. Also remove a superfluous check.

This partially reverts/amends cc60d706.

Task-number: QTBUG-109066
Pick-to: 6.5
Change-Id: If4f437ce9379282c3d60b0272845a975794883de
Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
2023-01-06 16:42:45 +00:00
Jannis Xiong 80f44954f6 Fix cache maybe invalid while the signal is actived from queue
with default QObject::connect signal may active from next message loop. invalide cache will hit while accessibility interface is called from windows. Invalide cache will lead to a crash

Fixes: QTBUG-106653
Pick-to: 5.15 6.2 6.3 6.4
Change-Id: I5359672bcd60ed6cfb2edf238645225164cb1b88
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2023-01-06 14:24:13 +02:00
Axel Spoerl 812666fe7c Document QGtk3Storage
Add internal documentation to header and implementation of
QGtk3Storage.

Pick-to: 6.5
Change-Id: I8e12dad57c2458dea4446cddc8df1ceef59c070c
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2023-01-05 19:09:20 +00:00
Timur Pocheptsov 6128a92e07 TLS backend SecureTransport: properly clear SSLContextRef
Simply calling SSLClose on context is not enough. Properly clear
the context by calling 'reset' member-function.

Pick-to: 6.5 6.4 6.2 5.15
Change-Id: Ic6a32f6e4193bb19809d1cce184651b78d6273a7
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2023-01-05 15:13:54 +01:00
Julian Greilich b832a5ac72 Android A11Y: Only access the main thread when it is not blocked
When the qtMainLoopThread calls QSGThreadedRenderLoop::polishAndSync(),
it waits for the QSGRenderThread.

In the QSGRenderThread, QAndroidPlatformOpenGLWindow::eglSurface()
calls QtAndroid::createSurface() and waits for the "android main
thread" to return a valid surface.
When the "android main thread" now calls "runInObjectContext" (e.g. by
calling QtAndroidAccessibility::childIdListForAccessibleObject()) it
waits for the qtMainLoopThread and the program is stuck in a deadlock.

To prevent this, we protect all BlockedQueuedConnection from the
"android main thread" to the qtMainLoopThread by acquiring the
AndroidDeadlockProtector.
When QAndroidPlatformOpenGLWindow::eglSurface() already acquired the
AndroidDeadlockProtector we abort the current A11y call with an emtpy
or default value.

Note: b8a9527544 already tried to fix
this by checking "getSurfaceCount() != 0", but there are situations,
where a new surface is being created while an old surface is still
present.

Task-number: QTBUG-105958
Pick-to: 6.5 6.4 6.3 6.2 5.15
Change-Id: Ie40e8654c99aace9e69b0b8412952fa22c89f071
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2023-01-05 15:09:50 +01:00
Axel Spoerl d18f142062 Document QGtk3Interface
Add internal documentation to header and implementation of
QGtk3Interface.

Pick-to: 6.5
Change-Id: I3e6e970afa0c2ab26e0ce9efe6285cad1edfdb94
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2023-01-05 13:33:07 +01:00
YAMAMOTO Atsushi d05e75ade4 Tweak comment about QCocoaWindow
Remove duplicate 'for', and unify the article of NSWindow to "an".

Change-Id: Iccf762ac54e90816f61634404fb88c9fdd1a43e1
Reviewed-by: Kai Köhne <kai.koehne@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2023-01-05 11:52:20 +00:00
Tor Arne Vestbø 7e7bae35f7 macOS: Include text in key events triggered by insertion key-bindings
In 705665957b we started relying on the
input method to decide whether a key event should include the resulting
text or not, based on the assumption that text insertion would happen
via the insertText:replacementRange: selector.

But the NSStandardKeyBindingResponding protocol includes several other
commands for inserting content, including insertTab:, insertBacktab:,
and insertNewline:.

  https://developer.apple.com/documentation/appkit/nsstandardkeybindingresponding

We explicitly handle the latter, but for any command we didn't handle,
we concluded that the input method didn't want us to insert text, and
sent the key event without text, which broke tab character insertion
in text edits.

As long as we're not handling these commands explicitly, we adjust
the logic to treat any command starting with "insert" as an unhandled
request to insert text, and forward it as a key event with the text
included, as before 705665957b.

Fixes: QTBUG-109754
Task-number: QTBUG-106393
Pick-to: 6.4 6.5
Change-Id: I4a164bc809c3606b43f267514a66ff017efeb4af
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-01-04 17:05:19 +01:00