The patch includes the following replacements:
* QMetaType::type("name") -> QMetaType::fromType<Type>().id()
* QMetaProperty::type() -> QMetaProperty::typeId()
* QVariant::Type -> QMetaType::Type
* qRegisterMetaType<T>("name") -> qResigeterMetaType<T>()
* The static QMetaType::{load,save} methods are replaced with
non-static versions
* Replace QCOMPARE(property.type(), QVariant::UserType) with
QCOMPARE_GT(property.typeId(), QMetaType::User), because the
deprecated type() method was treating each custom type
(id >= QVariant::UserType) as QVariant::UserType, while the
typeId() method simply returns the actual id.
As a drive-by: remove unneeded QMetaType registration tests
as we have tst_QMetaType to check it.
Task-number: QTBUG-104858
Change-Id: Ia08e002efdf07ff83366a5193164dba96a956f9a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The most common changes are:
* Replace QMetaType::type("name") with QMetaType::fromName("name").id()
or QMetaType::fromType<Type>().id()
* QMetaType::typeName(int) -> QMetaType(int).name()
* QMetaType::typeFlags(int) -> QMetaType(int).flags()
* QMetaType::metaObjectForType(int) -> QMetaType(int).metaObject()
* The static QMetaType::{load,save} methods are replaced with
non-static versions
* The static QMetaType::{create,destroy,construct, destruct} methods
are guarded by QT_DEPRECATED_SINCE calls. The tests are also
extended with non-static calls where they were missing. Fixed
potential memory-leaks in these tests.
Add separate unit-tests for deprecated APIs and guard them with
QT_DEPRECATED_SINCE
As a drive-by: use nullptr instead of 0 in some places
Task-number: QTBUG-104858
Change-Id: I4b0cdd29bc197c186b835002372240aae3098c33
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
when restoring state
With X11BypassWindowManagerHint, the floating tool bar was created
without control from window manager, which causes it stays on top
at all virtual desktops.
Pick-to: 6.4 6.3 6.2 5.15
Fixes: QTBUG-105591
Change-Id: I1868f4e75e1b84f9e81c05d2e927a183a0c635ee
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Use consistent defines across both tests in the directory
Change-Id: Idd84603135c8c164d09ae41d5faa7ca3a5fc7c3c
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
QWindowSystemInterface::handleGeometryChange already does that
Pick-to: 6.4
Change-Id: I983bf6bbee2e1099e6a15fe77a7647b3d05eb52e
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
window::isActive() is very lenient - it can determine that several
windows are active at the same time, based on the active status of
their parents, including transient parents. Use a stricter approach
and only paint the window that has input focus as active.
Fixes: QTBUG-105620
Pick-to: 6.4
Change-Id: I50ba45f633f693da2050c44415d8b6b154fc3099
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Somehow, when mixing types in a bitfield, MSVC will use a lot
more space than expected. So ShortData ended up being 16 bytes
causing various static_asserts to trigger.
Pick-to: 6.2 6.3 6.4
Change-Id: Ia0032e71621772db27e2917d9c71598046730107
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Since Qt 6.0, QMetaType stores the name obtained from the C++ compiler,
which means we know a type like Qt::Alignment by its proper, full name
of QFlags<Qt::AlignmentFlag>. However, the meta object records only the
bare name of the enumeration, not the full flags.
Pick-to: 6.2 6.3 6.4
Fixes: QTBUG-105932
Fixes: QTBUG-96185
Change-Id: Ic6547f8247454b47baa8fffd170eab977e306377
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
In case they get erroneously extracted. For example, in Core5Compat,
QTextCodec appears in the _p.h as a full class if !QT_CONFIG(textcodec)
(I don't know what that is for, but it's there).
Pick-to: 6.4
Change-Id: Ic6547f8247454b47baa8fffd170eb1d0f7e6d0f9
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
It's not needed for any of our supported compilers and isn't used in
Qt codbase anymore. It was only required for IBM xlC compiler, which
doesn't seem to support C++17 at the moment (when it does, hopefully
they will also fix the issue).
[ChangeLog][QtGlobal] Removed the Q_DUMMY_COMPARISON_OPERATOR macro,
which was needed to workaround outdated template instantiation rules
on some outdated compilers.
Fixes: QTBUG-105098
Change-Id: I2b992dd8c0f389d874d2a8521fc1a1aad3f80699
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
When the KDE theme gets changed programatically or by the user in KDE
settings, Qt applications were not notified during run time.
The KDE theme was read during startup only, when the QApplication's
palette was constructed.
This patch implements a DBus connection to the SettingChanged signal.
QKdeTheme is notified about KDE theme changes, which trigger an
application palette reconstruction and all subsequent QEvents.
The implementation reacts to changes the in KDE settings "widgetStyle"
and "ColorTheme". The application palette is updated only if the
underlying settings change results in a palette modification.
Fixes: QTBUG-103093
Pick-to: 6.4 6.3 6.2
Change-Id: If0ec0f0ba515ef3dcf9924283d3a818ac7d24a7b
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Initially, stream receive window's size was quite significant.
At some point when dealing with a server that did not want
our windows' sizes and was closing the connection (they only
accept 64K) we reduced this size, which ended in a regression
with download speed significantly throttled. We return the old
values (or even more, presuming we have 10 multiplexed streams
and not 100). And also making QNAM consistent with its documentation
(it was not updated).
[ChangeLog][QtNetwork] Stream receive window that HTTP/2 protocol in QNAM is using
increased to 214748364 octets (from the previous 64K) not to throttle download
speed. Clients, working with servers, not accepting such parameters,
must set HTTP/2 configuration on their requests accordingly.
Fixes: QTBUG-105043
Pick-to: 6.4 6.3 6.2
Change-Id: I252b6b5eefe92a7304dad15c67928d5a57d9597f
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Added link to Adding Open SSL support to Android Applications
Users are having difficulty finding this information, so adding a link
to the networking module's SSL Classes page.
Clarified the section title for adding SSL when building Qt from source.
Pick-to: 6.3 6.4
Change-Id: I88fbf696583d75c76d3b9778dbacd058eb00b50d
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Add support for accessing local fonts via local-fonts API.
Local fonts API is available in Chrome 103 and above.
Fixes: QTBUG-81736
Change-Id: Iac47b3a30c7a22933cbdbfc97ce0791edb63b5bd
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
This implements the build system bits required to build Qt
as as separate wasm modules a.k.a Emscripten side modules.
Enable by configuring with the "-shared" flag.
This is the first step towards shared library support and gets
us as far as being able to load QtCore and instantiate a
QCoreApplication.
Task-number: QTBUG-63925
Change-Id: Ib8f07f80fb5b13c8dbba65c7db735dc557b70d0e
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
This fixes some threading bugs
Pick-to: 6.4
Change-Id: I1a96dcc54d8338de09b551d52a166d073e85d752
Reviewed-by: Aleksandr Reviakin <aleksandr.reviakin@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Two qdoc files included a .cmake file that contained qdoc markup. After
.cmake files got license headers, the license header showed up in the
flow content of the documentation.
Rename the .cmake file to .qdocinc and adjust the license header to be
in line with the rest of the documentation.
This amends commit 87bcb9ca6ec883afb86165a282557014c9f06e41.
Change-Id: Ie9b02c75b67791c60cc8e054b52a15ffa9cf3e32
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Type registration isn't necessary any more, unless you're trying to look
up a name back to ID or QMetaType object. It hasn't been since 6.0.
Drive-by update the example not to use deprecated API.
Drive-by remove the paragraph about requirements that aren't accurate
any more.
Pick-to: 6.4
Task-number: QTBUG-104858
Change-Id: Ic6547f8247454b47baa8fffd170eecb66719fa65
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Extend the support of pointing at the right test from batch from WASM
to all supported platforms.
Change-Id: I9b6342ed0954f0fdc2f08c76f6b3f24f44f0388a
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
This follows-up on commit 4d24fcd3e1 -
when ShortData is bigger than a pointer (on 32-bit systems, when using
64-bit ShortData), copying d isn't sufficient; data must be copied.
Likewise, comparing d to check for equality is insufficient when
isShort(), as the other may also be short and differ in the more
significant bytes.
Change-Id: I49c0cf33727b8b43436cf0e3f57f602e83226885
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Unifies our approach to calling CoInitializeEx and CoUninitialize,
removing a lot of boilerplate in the process, and also fixes a few
bugs where we would incorrectly balance our calls to CoInitializeEx
and CoUninitialize.
The optimistic approach of qfilesystemengine_win.cpp of calling
CoCreateInstance without initializing the COM library explicitly
has been removed, as calling CoInitializeEx should be a noop in
the situation where it's already been loaded.
Change-Id: I9e2ec101678c2ebb9946504b5e8034e58f1bb56a
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
The resource compiler may not use the same parameters as we passed
to CL, and if so, there won't be any definition for WIN32, this will
cause some header files think we are not building for Windows. To
eliminate this uncertainty, we just pass "/DWIN32" to the resource
compiler to let it have this definition unconditionally. It won't
hurt in any case anyway. And this parameter is also hard-coded in
vcpkg's Windows toolchain by default, so it should be safe.
Change-Id: I45c42c40de8f4ab75fee219832f84d22b653af31
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Now that there's QLibraryInfo::isDebugBuild(), it's better to also
have QLibraryInfo::isSharedBuild() at the same time. It's also a
very useful information about the current Qt build.
I think debug/release and static/shared are the most important
properties of a library, so it's better to have them both.
Deprecate the global function qSharedBuild() in favor of the newly
introduced QLibraryInfo::isSharedBuild().
As a drive-by, add the nodiscard attribute to both functions.
[ChangeLog][QtCore] Added QLibraryInfo::isSharedBuild() and deprecated
qSharedBuild().
Change-Id: I48fa0dc5eeca97e709d5267733fa70aae244174f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Add CollectionInfo to scrollable nodes.
Every scrollable node will get a CollectionInfo attached to signal
the number of (possibly invisible) children.
This is necessary as TalkBack on Android doesn't scroll to items not
visible on screen if the number of further child nodes is not
communicated to TalkBack.
* Return success of scroll to TalkBack.
TalkBack needs the result of the scroll to decide if it should leave
the current element or stay after a scroll was successful.
Success of a scroll action is measured as the successful movement
of the children of the scrolled element. This is a workaround for
the Qt Accessibility API not returning the success of failure of a
performed action.
Task-number: QTBUG-103499
Pick-to: 6.4 6.3 6.2 5.15
Change-Id: Ie2c51d0b77fb5030973a0f93c42e0db3082be45e
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
QtQuick Flickable has an issue that after a scroll the previously
hidden items are not added to the A11Y hierarchy. That happens because
Android has no ways to detect that something has changed.
This patch uses the ScrollingEnd event to notify Android A11Y backend
that the Flickable was scrolled, so that it could update the A11Y
hierarchy and add the previously hidden nodes.
The ScrollingEnd event generation is added to QQuickFlickable in a
separate commit.
Task-number: QTBUG-103513
Pick-to: 6.4 6.3 6.2 5.15
Change-Id: Ie6cd688d56343bcfe7ce9580c0b9244dd6d6c068
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
Reviewed-by: Samuel Mira <samuel.mira@qt.io>
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
[ChangeLog][Potentially Source-Incompatible Changes] qSharedBuild() is
moved from qglobal.h to qlibraryinfo.h, '#include <QtCore/QLibraryInfo>'
needs to be added where it's used.
Task-number: QTBUG-99313
Change-Id: Ic64561a8eb129ba2934e2770ca02119de208a2a5
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Yuhang Zhao <2546789017@qq.com>
We first detached in operator[] itself, then in the data()
call.
Change-Id: I18b8b282b3b879125db350e0127953f83f773619
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
It does a check to ensure you aren't comparing outside the container.
Fixes: QTBUG-106001
Pick-to: 6.2 6.3 6.4
Change-Id: Ic6547f8247454b47baa8fffd170eef346b7f4f24
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
isMinimized in QWasmWindow::getTitleBarControlRect is unused. Remove it.
Change-Id: Iee0a351d4d20d5436fe45a18543d0811b8443459
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
The function is used the internal window activation machinery and
should not be called by user code.
Many tests still use this function, and should be ported over to
QWidget::activateWindow(). For now they are using the private
helper in QApplicationPrivate, so that we can progress with the
public API deprecation.
Change-Id: I29f1575acf9efdcbae4c005ee9b2eb1bb0c8e5b5
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
With styles that want the selected combobox item to flash, QComboBox
runs a modal event loop in hidePopup. This might result in reentrancy if
a mouseReleaseEvent is processed during the 60 ms of flashing.
Since mouseReleaseEvent calls hidePopup again, we end up reentrancy and
possibly undefined behavior which has caused crashes with Qt Creator on
macOS.
Prevent the reentrancy of hidePopup using a boolean flag. Since
QBoolBlocker (or QScopedValueRollback) cannot be used with a bit flag,
use a QScopeGuard to reset the flag reliably.
Fixes: QTBUG-105951
Change-Id: Iaa5df47b93217fc8dff621764ac4005bbc3459b7
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
(cherry picked from commit 2af64c4577e42fecfeab9611c15fa8526bb09988)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Add "/c65001" to explicitly set the code page to UTF-8 for
the resource compiler, otherwise the resource compiler may
pick up the local code page instead.
Already tested locally, most Qt repos build without any problem,
only very little repos are untested due to my local environment
can't build them.
Change-Id: I7e20f936d6af1fbb90b5c20980190b727c9021de
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
9a369a25dd added a
QAccessibleEvent ctor that takes a QAccessibleInterface*
instead of a QObject*.
Retrieving the QAccessibleInterface* later is done using the
interface's unique ID stored in the m_uniqueId member.
However, the fact that m_uniqueId is a member
of the union alongside with m_child means that setting
a child via QAccessibleEvent::setChild also overwrites
the stored unique ID, which breaks retrieving the accessible
interface later.
Fix this for the case where the QAccessibleInterface has
an associated QObject by assigning m_object in the ctor as well.
This means that a QAccessibleEvent created using either of the two
constructors (the one taking the QObject* and the one taking
the QAccessibleInterface* associated with the object) now behaves
the same.
Fixing the case where there is no associated QObject would require
further changes (e.g. adding a member for the QAccessibleInterface*
or making the m_uniqueId member a separate member instead of having
it in a union with m_child). However, I see no way to do so without
breaking the ABI, so that is left unchanged.
This also adds a corresponding test case.
Fixes: QTBUG-105988
Pick-to: 6.4
Change-Id: I71a548af0277a5034e9e207f066fa3e25c5393f3
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
When using QAccessibleEvents of types QAccessible::Selection,
QAccessible::SelectionAdd and QAccessible::SelectionRemove,
Qt (internally) also always uses QAccessbibleEvent::setChild to
set the child that has been (un)selected.
As a consequence, the interface retrieved using
QAccessibleEvent::accessibleInterface here is not the
a11y object in which the selection has changed, but
the child, so notifying about a change to its selected
state (as happens here in the AT-SPI adapter) is in line
with that.
For AT-SPI, assistive technology (like the Orca screen reader)
often reacts to the SelectionChanged event on the object
managing the selection, so send a corresponding event
for the parent of the (un)selected child as well.
(Besides the lack of support for the AT-SPI Selection
interface - s. QTBUG-105909 - the fact that this event
wasn't sent previously e.g. turned out to be one reason
for the Orca screen reader not announcing selected cells in
the Qt 6 based UI variant of LibreOffice Calc.)
Change-Id: Icc8b9a7ecc77bc5394fd1ab4f8163caed951ba86
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
QAccessible::SelectionWithin is meant to be used
when several changes to a selection have occurred
(instead of using multiple QAccessible::SelectionAdd
and QAccessible::SelectionRemoved events).
So far, that event was simply ignored by the AT-SPI
adapter.
Forward that as a SelectionChanged event to AT-SPI.
Change-Id: Ia8187f82b9b96b7ca5b52bf0a0923bbf4c777ad1
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
This helps get ready for wasm64
Change-Id: I6db5b93c7ca851cab7fc95701b27a20263c8c0bd
Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>