Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Calls order of q_invokable method #10

Open
wants to merge 10,000 commits into
base: 6.2
Choose a base branch
from
Open

Calls order of q_invokable method #10

wants to merge 10,000 commits into from

Conversation

rjcamatos
Copy link

If there are 2 or more methods with the same name but reciving diferent arguments the QJSEngine Pickup the First One declared.

Example:
methodxyz(string)
methodxyz(objptr*)

It picks up the first one passing as argument a string and not the one that i was expecting an object as it was send.

qtprojectorg pushed a commit that referenced this pull request Dec 8, 2023
Using std::binary_search has the requirement that the passed
range fulfils ordering requirements, which was not the case
for the cppKeywords array here.

As the QString doc says [1]:

> QStrings can be compared using overloaded operators such as operator<(),
> operator<=(), operator==(), operator>=(), and so on. Note that
> the comparison is based exclusively on the numeric Unicode
> values of the characters. It is very fast, but is not what a
> human would expect; (...)

Therefore, sort the array accordingly and add an assert to
ensure it will remain sorted.

Fixes an crash/assert when building qtdeclarative with
CXXFLAGS='-D_GLIBCXX_DEBUG':

    /usr/include/c++/13/bits/stl_algo.h:2243:
    In function:
        bool std::binary_search(_FIter, _FIter, const _Tp&) [with _FIter = const
        QString*; _Tp = QStringView]

    Error: elements in iterator range [first, last) are not partitioned by the
    value __val.

    Objects involved in the operation:
        iterator "first" @ 0x7ffc4a2c4f18 {
          type = QString const* (constant iterator);
        }
        iterator "last" @ 0x7ffc4a2c4f10 {
          type = QString const* (constant iterator);
        }
    Aborted (core dumped)
    ninja: build stopped: subcommand failed.

GDB backtrace:

    Program terminated with signal SIGABRT, Aborted.
    #0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
    44      ./nptl/pthread_kill.c: No such file or directory.
    (gdb) bt
    #0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
    #1  0x00007f307e0a815f in __pthread_kill_internal (signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:78
    #2  0x00007f307e05a472 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
    #3  0x00007f307e0444b2 in __GI_abort () at ./stdlib/abort.c:79
    #4  0x00007f307e2a300d in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6
    #5  0x00005639ff90471d in std::binary_search<QString const*, QStringView> (__first=0x5639ffa1a9c0 <QmltcVisitor::checkForNamingCollisionsWithCpp(QDeferredSharedPointer<QQmlJSScope const> const&)::cppKeywords>,
        __last=0x5639ffa1b2c0 <guard variable for QmltcVisitor::checkForNamingCollisionsWithCpp(QDeferredSharedPointer<QQmlJSScope const> const&)::cppKeywords>, __val=...) at /usr/include/c++/13/bits/stl_algo.h:2243
    #6  0x00005639ff8fb837 in operator() (__closure=0x7ffc4a2c52bf, word=...) at /home/michi/development/git/qt5/qtdeclarative/tools/qmltc/qmltcvisitor.cpp:764
    #7  0x00005639ff8fb89e in operator() (__closure=0x7ffc4a2c52a0, name=..., errorPrefix=...) at /home/michi/development/git/qt5/qtdeclarative/tools/qmltc/qmltcvisitor.cpp:768
    #8  0x00005639ff8fc99b in QmltcVisitor::checkForNamingCollisionsWithCpp (this=0x7ffc4a2c6070, type=...) at /home/michi/development/git/qt5/qtdeclarative/tools/qmltc/qmltcvisitor.cpp:787
    #9  0x00005639ff8f9dea in QmltcVisitor::endVisit (this=0x7ffc4a2c6070, program=0x563a002e0628) at /home/michi/development/git/qt5/qtdeclarative/tools/qmltc/qmltcvisitor.cpp:341
    #10 0x00007f307f6636fa in QQmlJS::AST::UiProgram::accept0 (this=0x563a002e0628, visitor=0x7ffc4a2c6070) at /home/michi/development/git/qt5/qtdeclarative/src/qml/parser/qqmljsast.cpp:1193
    #11 0x00007f3080159b8f in QQmlJS::AST::Node::accept (this=0x563a002e0628, visitor=0x7ffc4a2c6070)
        at /home/michi/development/git/qt5/qtbase/include/QtQml/6.7.0/QtQml/private/../../../../../../qtdeclarative/src/qml/parser/qqmljsast_p.h:272
    #12 0x00007f3080212f4b in QQmlJSTypeResolver::init (this=0x7ffc4a2c5b50, visitor=0x7ffc4a2c6070, program=0x563a002e0628) at /home/michi/development/git/qt5/qtdeclarative/src/qmlcompiler/qqmljstyperesolver.cpp:173
    #13 0x00005639ff8f0bd3 in QmltcTypeResolver::init (this=0x7ffc4a2c5b50, visitor=0x7ffc4a2c6070, program=0x563a002e0628) at /home/michi/development/git/qt5/qtdeclarative/tools/qmltc/qmltctyperesolver.cpp:19
    #14 0x00005639ff8c02d4 in main (argc=23, argv=0x7ffc4a2c7a68) at /home/michi/development/git/qt5/qtdeclarative/tools/qmltc/main.cpp:269

[1] https://doc.qt.io/qt-6/qstring.html#comparing-strings

Change-Id: I82ebbcdca4ab90155b935f9af24b3a3821134563
Reviewed-by: Sami Shalayel <[email protected]>
Reviewed-by: Ulf Hermann <[email protected]>
Copy link

cla-assistant bot commented Nov 15, 2024

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.
1 out of 13 committers have signed the CLA.

✅ EvenOAndersen
❌ mitchcurtis
❌ alcroito
❌ Inkane
❌ vohi
❌ samishalayel
❌ ec1oud
❌ toreinio
❌ Olivier De Cannière
❌ dorisverria1
❌ kbroulik
❌ timblechmann
❌ a12e


Olivier De Cannière seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.
You have signed the CLA already but the status is still pending? Let us recheck it.

Morteza-Jamshidi and others added 28 commits February 3, 2025 10:53
By limiting the page stacking there is no need for handling
multi-page navigation.

Fixes: QTBUG-132715
Change-Id: Ibbd99834d2740653340fd785f94c19215eab2e7d
Reviewed-by: Mitch Curtis <[email protected]>
Integrity seems to be unhappy about the qmllint plugins, so disable them
for cross builds.

Task-number: QTBUG-129308
Change-Id: I7601ec8db2aac287caa96a1fd81ab8426fcdd5d7
Reviewed-by: Alexandru Croitor <[email protected]>
Implement the WarnImperativeCodeNotEditableInVisualDesigner warning in
the qdslintplugin that warns whenever a certain list of properties get
assigned imperatively. Change the wording of the warning to be more
explicit in what it actually does, as the current warning does not seem
to be documented anywhere.

Task-number: QTBUG-129308
Change-Id: Ie2d8d526e778a6d986dcfe6a65fb393232d954a6
Reviewed-by: Thomas Hartmann <[email protected]>
Reviewed-by: Fabian Kosmale <[email protected]>
Implement ErrUnsupportedTypeInQmlUi that warns about unsupported types
in .ui.qml files. Also reuse the same warning message.

Task-number: QTBUG-129308
Change-Id: I2a9387852ee467920d2907af13217e147587d2fa
Reviewed-by: Fabian Kosmale <[email protected]>
Reviewed-by: Marco Bubke <[email protected]>
Otherwise, the following sequence would end up in an inconsistent state:

    proxy1.target = rect1
    proxy1.target = rect2

The expected end result of this is that proxy1 will only control rect2.
However, without this patch QQuickLayoutItemProxyAttachedData would
remain attached to rect1 (and rect2)

Pick-to: 6.8 6.9
Change-Id: Id97e24a2e82bbe19263868415bab4cf2033815b3
Reviewed-by: Matthias Rauter <[email protected]>
Pick-to: 6.9
Change-Id: Icfb8f83b7308ace7052e66e041175833c22d3a9c
Reviewed-by: Ulf Hermann <[email protected]>
For some reason the test used the contentItem's boundaries, but the
size of the menu (including the background) can be bigger than that.

Fixes: QTBUG-133380
Pick-to: 6.5 6.8 6.9
Change-Id: I6adc0cf103322040795b566915db6b0bd423f57c
Reviewed-by: Doris Verria <[email protected]>
The line-by-line formatter would in certain cases considier that a
property definition was completed after having seen only the `property`
token. Fix the state transition to also handle T_RESERVED_WORD tokens.

Picking this back to previous versions is not trivial as this particular
situation seems to break in different ways first.

Fixes: QTBUG-133398
Pick-to: 6.9
Change-Id: I1123fe41e55d2d31c5d245dafe6c8684bca93e39
Reviewed-by: Fabian Kosmale <[email protected]>
Reviewed-by: Ulf Hermann <[email protected]>
From is defined as an identifier with a special meaning in the context
of imports. This means it should generally be accepted as an identifier
in other contexts.

This fixes weird line indentation issues with the IndentingLineWriter.

Fixes: QTBUG-132065
Pick-to: 6.9 6.8
Change-Id: Iea5bf3af5d43af9a97f0f8e7867d12337e4041ca
Reviewed-by: Fabian Kosmale <[email protected]>
Task-number: QTBUG-130156
Pick-to: 6.9 6.8
Change-Id: If6d365b6b0819cc018a01427f468cfa2b2a3eeea
Reviewed-by: Mitch Curtis <[email protected]>
Fixes: QTBUG-133301
Pick-to: 6.9 6.8
Change-Id: I3032d790ecf850dce93ad719a3ab63d0773d53c3
Reviewed-by: Santhosh Kumar <[email protected]>
We need to assign them right away when creating the module. If we do it
later on, there are a lot of different code paths to cover and in fact
we were missing some.

Pick-to: 6.9 6.8
Task-number: QTBUG-133053
Change-Id: I57e381c787f504eb9bcd8c2041e41b4f1d1f8b53
Reviewed-by: Fabian Kosmale <[email protected]>
For objects assigned to proeprties we use a QQmlObjectCreator with the
same shared state as the top level QQmlObjectCreator. However, that
one's top level required properties are obviously not the ones of the
outer object creator.

This exposes a different bug: If objects assigned to properties of
delegates cannot be created due to unset required properties, we should
delete the delegate right away before adding it. Currently the relevant
code warns about the unset required properties but still leaves the
object intact.

Pick-to: 6.9 6.8
Fixes: QTBUG-133052
Task-number: QTBUG-133129
Change-Id: I208fcbffa17443ad62c4aaa81aaec291c8cdcc82
Reviewed-by: Fabian Kosmale <[email protected]>
Alias property signals were only connected when their corresponding
signal handlers were explicitly defined in QML. This approach missed
cases where signal handlers are created and connected in C++ code,
causing alias property changes to fail to emit their signals.

Fixes: QTBUG-120951
Change-Id: Ia84b078795e9c89668f916de92c1be41f07b6694
Reviewed-by: Fabian Kosmale <[email protected]>
Reviewed-by: Ulf Hermann <[email protected]>
This commit adds an example that demonstrates how to specify a set of
transforms for Item.

The property's return type is `QQmlListProperty`. From Item's
perspective, the `transform` property is read-only. However, the property provides access to the QQmlListProperty instance. The content
of the QQmlListProperty instance itself is editable.

Fixes: QTBUG-131903
Pick-to: 6.9 6.8
Change-Id: I80e82c7ee0c1c4d91c3760ab8820446dfcccdfe1
Reviewed-by: Ulf Hermann <[email protected]>
Certain objects in V4 are `ReferenceObject`s, keeping tracks of the data
they originate from and performing read/write-backs from/to it to keep
the data in sync between the reference object and the original data.

For example, some C++ types are converted to reference objects, so that
mutations on the QML side and the C++ side are represented on both
sides.

`DateObject`, which implementes the Javascript `Date` object, is a
`ReferenceObject` and is used, for example, to track `QTime`, `QDate`
and `QDateTime` objects coming from the C++ side.

While it has implemented the required infrastructure for read-backs for
quite a while, it has not really made use of it in its methods, so that
they would generally never consider the original data even whey they are
supposed to.

Thus, ensure that a `DateObject` performs a read-back in its various
"getter"/"conversion" methods, when appropriate, to remain in sync with
its origin.

Add a series of test cases to ensure that the affected methods will now
read-back as required.

Change-Id: I48e841ff0f176f3ab6ab08ede999352f71297fca
Reviewed-by: Fabian Kosmale <[email protected]>
When certain types are passed over from C++ to QML, QML converts them to
a QML usable representation that keeps track of the original data.
To do so, the QML representation of the object performs read/write-backs
when required to ensure that the representation is kept in sync with the
original data, by reading the latest data from the source or writing
back changes that are performed on the QML side.

Generally, the representation on the QML side cannot know when the
original data was modified, so that it has to read the data again each
time it accesses the representation to ensure that the latest data is
available.

The reads can be very expensive. For example, the following snippet:

```
JSON.stringify(foo)
```

Where `foo` is, for example, a `QStringList`, might need to read the data
multiple times for each element in the list.

For representations that provene from a QObject's property that has a
NOTIFY signal, it is possible to cut down on the number of reads by
reading only when the data was effectively changed since the last read,
that is, the NOTIFY signal of the property was emitted.
Similarly, if the property is a BINDABLE, we can subscribe to the
BINDABLE itself to track whether a change was performed or not.

Thus, to reduce the number of reads when possible, `ReferenceObject`,
the base representation for objects that perform read/write-backs, was
modified to take into account the NOTIFY signal or BINDABLE status of a
property when referencing data that originally provenes from a
`QObject`'s property on the C++ side.

`QObjectWrapper`, `QQmlTypeWrapper`, `ReferenceObject` and
`QMLValueTYpeWrapper` were modified with the usual `Q_MANAGED_TYPE`
macro, to allow identifying instances of those objects, which is used to
enable the new implementation.

The intializer for `ReferenceObject` was modified to behave differently
when the referenced data comes from a `QObjectWrapper`, which wraps a
`QObject` provening from C++, or a `QQmlTypeWrapper`, which can wrap a
`QObject` that is a singleton or an attached property. When it is so,
and the part of the wrapped `QObject` that is referenced is a property
that has a NOTIFY signal or is a BINDABLE, the `ReferenceObject`
instance will now connect to the signal or subscribe to the BINDABLE.

A newly added flag, `isDirty`, will be set when the signal is emitted
and is used to track whether the data has changed since our last read.

`QV4::ReferenceObject::readReference`, the base implementation for
read-backs, was modified to take into account the new "isDirty" flag.
When the flag is not set, we expect to already have the latest data, and
thus do not actually perform the read anymore.

Furthermore, the same implementation was modified to take care of
setting the `isDirty` flag to a correct state after a read is performed.

The connection to the NOTIFY signal is performed through the existing
`QQmlNotifier/Endpoint` infrastructure, which allows, between others, to
connect to signal emitted by a `QObject`, and should be more performant
than a naked connection.
Similarly, a BINDABLE is subscribed to by using its usual interface.

A new callback was added to be used by `ReferenceObject` to allow
setting the `isDirty` flag on the signal emission.

`ReferenceObject` will now store a `QQmlNotifierEndpoint` or a
`QPropertyNotifier`, that will take care of listening to upstream
changes and set the dirty flag as required.

A few bug-provening test cases where added to `tst_qqmllanguage` to test
that the number of unnecessary reads was indeed reduced.
Additional test cases were added to inspect certain aspects of the new
implementation to ensure that it works in certain common or edge cases.

The internal documentation for `ReferenceObject` was modified to mention
this new behavior.

Fixes: QTBUG-118847
Fixes: QTBUG-127322
Change-Id: Id62979ae4e03910e1165c293837e5d884727dddc
Reviewed-by: Ulf Hermann <[email protected]>
- Wait for popup transitions to finish
- Fix popupWindow size check to include windowInsets

Pick-to: 6.8 6.9
Task-number: QTBUG-133530
Change-Id: Ic5cb8bcab1b8d690181dcae84ef7b115c77113fc
Reviewed-by: Jan Arve Sæther <[email protected]>
This reverts commit 4f2b6cb.

Reason for revert: The debugger tests still tend to hang on
macOS/x86_64

Pick-to: 6.9
Change-Id: I1b9470ab6fe73f936ce010d7d7b43f6493207981
Reviewed-by: Fabian Kosmale <[email protected]>
When importing a JavaScript module again from the same QML engine, the
resulting executable compilation unit should be the same as before. This
only works if we use the same base compilation unit. However, so far
QQmlScriptBlob did not store the compilation unit in the central type
registry. Therefore, it could not be found when importing the module
again.

This broke when we transitioned away from storing JavaScript modules in
a separate data structure and instead started treating them like any
other compilation units.

In order to fix this, generate synthetic QQmlType and QMetaType
instances also for JavaScript compilation units and store them in the
relevant data structures. This makes it possible to locate them when we
need them.

Pick-to: 6.9 6.8
Fixes: QTBUG-133053
Change-Id: I0425cd70a3745e793fec03105f58b708726ede06
Reviewed-by: Fabian Kosmale <[email protected]>
We can store them in urlToType like all other types.

Change-Id: Ia870ada1346e21aa2f87895dcac2c1871811dad2
Reviewed-by: Fabian Kosmale <[email protected]>
There used to be a broken version of qmlRegisterType() that effectively
registered anonymous types without URI. That method has been deprecated
in Qt 5.14 and removed in 6.0. Since then there is no supported way to
register types without URIs anymore.

Amends commit dc722a1

Change-Id: I9a795d97eb0f843925080e0f00abc406adfc2f3b
Reviewed-by: Fabian Kosmale <[email protected]>
We want the different paths to resolve the same way in order to produce
a consistent result. canonicalFilePath() resolves symlinks and thereby
interferes with user-visible path structure. Use absoluteFilePath() and
QDir::cleanPath() instead.

Pick-to: 6.9 6.8
Fixes: QTBUG-133526
Change-Id: Ieaa55ccf909594944f5873dc8c61f73b1daa975a
Reviewed-by: Fabian Kosmale <[email protected]>
Reviewed-by: Sami Shalayel <[email protected]>
I suspect this is related to why MSVC appears to require a QESDP
destructor symbol, but it's idiomatic Qt, so do it independent of
the ~QESDP problem.

Task-number: QTBUG-133494
Task-number: QTBUG-102948
Pick-to: 6.9
Change-Id: Idedd6d2b552d44f41d48fffdc3d61968a939b530
Reviewed-by: Marc Mutz <[email protected]>
- The order of events is tricky to check for reliably
for Menus that have transitions, and it's not really that
important.
- Fix Imagine style binding loop and native style customization
  warnings.
- Wait for isOpened.

Fixes: QTBUG-133475
Pick-to: 6.9
Change-Id: I1a8c0363802c1dda9f63fc48d14783a0a677a80b
Reviewed-by: Doris Verria <[email protected]>
Disable or wait for menu enter transitions when appropriate.

Task-number: QTBUG-133530
Pick-to: 6.8 6.9
Change-Id: I5b256cfc74852775b24cf26ef3432c1dec7ee703
Reviewed-by: Doris Verria <[email protected]>
The Material style uses enter and exit transitions, which causes the
menu to not popup instantly.

The test didn't take this into consideration, since it was designed with
only the Basic style in mind.

It should now pass with the Material style.

Pick-to: 6.9 6.8
Change-Id: I1a55564438ef4d65d597123d12de1e838e55b3b5
Reviewed-by: Jan Arve Sæther <[email protected]>
This test is very flaky when running it locally with the Material style.

Part of this has to do with the popup's x position sometimes being half
a pixel away from the intended location. Fix this by tolerating this
0.5 pixel difference. The reason behind this difference is currently
unknown.

Another issue is that we don't wait for the menu to close before
attempting to open it again.

Pick-to: 6.9 6.8
Fixes: QTBUG-133566
Change-Id: I08e68a87d477e6b3a9ea0b5b3350e5c8dc57919b
Reviewed-by: Mitch Curtis <[email protected]>
MohammadHossein Qanbari and others added 30 commits March 6, 2025 03:08
Implement QQuickHeaderViewDelegate as the base class for header view
delegates, introducing 'headerView' and 'orientation' properties.
Separate previous delegate settings into HorizontalHeaderViewDelegate
and VerticalHeaderViewDelegate components for Basic, Fusion, and Imagine
styles.

This change improves the modularity and reusability of header view
delegates across different styles. It also allows for more consistent
behavior and easier customization of header views.

A test suite has been added to verify default property settings and
ensure the new components work without warnings.

[ChangeLog][QtQuickControls][HeaderView] Add dedicated delegate
components for vertical and horizontal header views.

Task-number: QTBUG-70326
Change-Id: I8831e77f6909bdae13c3a7262145ab156f63a59a
Reviewed-by: Mitch Curtis <[email protected]>
This patch adds documentation for the delegates of both horizontal and
vertical header views, improving understanding and customization of
header behaviors in the application.

Change-Id: If6a59e0e0aad67bb26765c76f265d21de84a2498
Reviewed-by: Richard Moe Gustavsen <[email protected]>
The menubar item has special handling of key presses,
which is not called under accessibility/screen reader.

Add an accessiblePressAction function, make sure it is
called and emit triggered()
like the keyRelease would do.

Task-number: QTBUG-115926
Change-Id: Iee7b4524e0527bada518c9cb4e5300a4174dbf58
Reviewed-by: Jan Arve Sæther <[email protected]>
Task-number: QTBUG-134442
Change-Id: I39dea0af854e41fd828943b2c10b2c51e66c979b
Reviewed-by: Fabian Kosmale <[email protected]>
If a compilation unit for the given URL already exists in the type
registry, we can safely use it since anything in the type registry is
shareable. An exception to this are requests with explicit inline source
code. Those cannot be cached at all.

Conversely, if we were to re-compile, that's not only wasteful but we
may end up with diverging type hierarchies and mismatched types.

Revert commit d0e16e3 since it has
become counter-productive now. We really want to have exactly one base
compilation unit for each type, and that should be universally
accessible. When d0e16e3 was written we
had separate base CUs for each engine, and we didn't want those to
accidentally find each other.

Realize that composite types have to be indexed by url(), not
finalUrl(), since url() includes any file selectors while finalUrl()
does not.

Fixes: QTBUG-134398
Pick-to: 6.9.0 6.9 6.8 6.8.3
Change-Id: I130cdc27ebd8a2814e194478a27eef5bb7f79eb7
Reviewed-by: Fabian Kosmale <[email protected]>
Change-Id: I94a9220b27fb9160e2251342ac6f44f7eccf5feb
Reviewed-by: Richard Moe Gustavsen <[email protected]>
Also add a manual test

Change-Id: I28955a454eeaa8ab52431c85cd99649ccbb667d0
Reviewed-by: Richard Moe Gustavsen <[email protected]>
Dating back at least to 507efe5
the initial plan was that an ungrab calls setActive(false), and that
ought to be enough, because every pointer handler can react to
deactivation in its own way. But QQuickTapHandler did not override
onActiveChanged(); and it would still not work very well to do that,
because setPressed() takes various arguments that are not available
in onActiveChanged(). So an odd state of dubious utility was possible:
it could be inactive and pressed at the same time. That's now prevented,
as long as TapHandler relies on an exclusive grab.

If a TapHandler's window is deactivated while it has an exclusive grab,
onGrabChanged() is called with a null event, because the deactivation
event is not a pointer event. Don't crash, and don't get stuck in
pressed state either.

Currently in this scenario, the grab transition is UngrabExclusive, not
CancelGrabExclusive. If we are sure that a TapHandler should no longer
be pressed if its window is no longer active, and one symptom is that
it's ungrabbed, probably it makes sense to be consistent that when it
loses any kind of grab that it has taken, it should no longer be
pressed. But then we would run into the issue with the null event as
described above. So these changes are best done together.

If a TapHandler's window is deactivated while it has a passive grab,
the TapHandler cannot be deactivated or un-pressed, because it is not in
active state in the first place. (As documented, `active` means it has
an exclusive grab.)

Fixes: QTBUG-118454
Fixes: QTBUG-124777
Change-Id: I855a0e0ddcb13866af5501f6164b6b18b41dda2a
Reviewed-by: Richard Moe Gustavsen <[email protected]>
This would have caught the fact that we were neglecting to link against
QmlPrivate.

Task-number: QTBUG-134274
Change-Id: I18b3243ad866501ceac6bf7e3a0fe3b80f5223e5
Reviewed-by: Olivier De Cannière <[email protected]>
Note that any actual language support for final will be added in later
commits.

Task-number: QTBUG-98320
Change-Id: I8b8f9fbc998219ed4cd504c10f54bc3483e65f06
Reviewed-by: Sami Shalayel <[email protected]>
The bit is taken from nameIndex. It should have more than enough
capacity with 31 bits. The reserved bit will be used as a flag in
subsequent commits.

A more typed and centrally enforced aproach to the indexes will be
necessary in the future.

Change-Id: Ia7c686affba6d5320e674dd3f32b7c59b6321e22
Reviewed-by: Ulf Hermann <[email protected]>
This works the same as the FINAL attribute to Q_PROPERTY.

Task-number: QTBUG-98320
Change-Id: Icc2cf1afb5354fd711770f7147ded853b74cd1da
Reviewed-by: Ulf Hermann <[email protected]>
Reviewed-by: Sami Shalayel <[email protected]>
Change-Id: I0ffa565fcefb2f44b180395d58120f52463aa950
Reviewed-by: Semih Yavuz <[email protected]>
Reviewed-by: Sami Shalayel <[email protected]>
Also, only suggest completions for property attributes that respect the
default, final, readonly, required order.

Change-Id: I1ea9e4cc60625bfbad9cfdea3bb0391e2030b6c6
Reviewed-by: Sami Shalayel <[email protected]>
Implement ErrUnsupportedTypeInQmlUi that warns about unsupported root
types in .ui.qml files. Also reuse the same warning message.

Task-number: QTBUG-129308
Change-Id: I83a2cb39367ea3fe6ac65ab1e0b16c04cf467d73
Reviewed-by: Ulf Hermann <[email protected]>
Constexpr already implies static on namespace level, so remove the extra
static keywords.

Change-Id: I105d0f327612248d2859124627a1fdd9e43e0f80
Reviewed-by: Marco Bubke <[email protected]>
18c4bf8 made all non-native dialogs
in QtQuick.Dialogs use `Window` as their popupType, in order to make
the dialogs appear as top-level windows. However, there are some users
that wish to use these non-native dialogs without them being top-level
windows, like they were before 6.8. This was unfortunately not possible,
since there weren't any API to customize the popupType for
QtQuick.Dialogs.

We were reluctant at first, to provide properties that only customize
the non-native dialogs, without having any effect when native dialogs
are used. However, there needs to exist some way for the popupType to be
reverted back to `Item`, and thus, it makes sense to have a property for
it.

Fixes: QTBUG-134037
Change-Id: Idcfe4d3960c7002566f344ae32422c9cb7ce7631
Reviewed-by: Jan Arve Sæther <[email protected]>
Fix the typo in the warning.

Pick-to: 6.5 6.8 6.9
Task-number: QTBUG-133497
Change-Id: I72adf931b05a0fe608469885b0f41018e818efe4
Reviewed-by: Olivier De Cannière <[email protected]>
* add dummy CMakeLists.txt files
* add qtabstractlistmodel examples to the examples CMakeLists.txt

Change-Id: I9af5bcb79a5cc71e7a4a50a5a674b97ba70538b0
Reviewed-by: Soheil Armin <[email protected]>
Reviewed-by: Konsta Alajärvi <[email protected]>
Reviewed-by: Assam Boudjelthia <[email protected]>
Unblacklist the following auto tests that are no longer flaky on
Opensuse: movingAndFlicking, ignoreNonLeftMouseButtons and
nestedSliderUsingTouch.

Fixes: QTBUG-118060
Fixes: QTBUG-132559
Change-Id: If021573866dce7e98c7956b4e9ff2c2753aa3616
Reviewed-by: Shawn Rutledge <[email protected]>
Unblacklist
tst_qquickListView2::isCurrentItem_NoRegressionWithDelegateModelGroups
as it is no longer flaky on Opensuse.

Fixes: QTBUG-132631
Change-Id: Iaeb47fd3409d600ea9f27115f1bd32b63a9e8121
Reviewed-by: Shawn Rutledge <[email protected]>
Unblacklist tst_qquickshortcuts::multiple and shortcuts on Opensuse as
they are no longer flaky.

Fixes: QTBUG-74050
Change-Id: I66dd7d4b76aeb1ceaba3d2d28e075271e6d3ca26
Reviewed-by: Shawn Rutledge <[email protected]>
It was accidentally left after the changes done in
ba3cc0a which replaced its usage with
a different mechanism.

Pick-to: 6.8 6.9
Task-number: QTBUG-110243
Change-Id: I485dbc3f7aa68d2f9c520a5eb29eb01ab11484cd
Reviewed-by: Alexey Edelev <[email protected]>
Reviewed-by: Fabian Kosmale <[email protected]>
Move QQmlSA::LoggerWarningId function documentation out of the
QQmlJS namespace, as that causes match failures with QDoc.

Qualify QQmlSA::Method and Element \fn signatures with the correct
scope to help QDoc match them.

Task-number: QTBUG-134250
Pick-to: 6.9 6.8
Change-Id: I89407afe251158d99a93f44c25bb6db1a83a6024
Reviewed-by: Paul Wicking <[email protected]>
Reviewed-by: Olivier De Cannière <[email protected]>
The original content of QML files seem of no use when qmlcachegen is
enabled.

DISCARD_QML_CONTENTS relies on the new qt_add_resources
DISCARD_FILE_CONTENTS option.

[ChangeLog][CMake] Added a DISCARD_QML_CONTENTS option to
qt_add_qml_module(), that removes original QML and JS file contents from
the target's resource system.

Change-Id: I490c0fcbb198fcb66cc033c71ea1287891e21369
Reviewed-by: Ulf Hermann <[email protected]>
Reviewed-by: Fabian Kosmale <[email protected]>
Unblacklist tst_qquickMultiTouchPointArea::nonOverlapping() and
mouseGestureStarted() as they are no longer flaky on Opensuse.

Fixes: QTBUG-132647
Fixes: QTBUG-118065
Change-Id: Iece486a3d3b3fcf27776a41cbd51c3f5e8161959
Reviewed-by: Axel Spoerl <[email protected]>
Add back some tests that were previously flaky and have been
blacklisted from tst_qquickTextEdit. They were flaky on Opensuse and
have been fixed.

Unblacklist mouseSelectionMode, inFlickableMouse, cursorDelegate

Fixes: QTBUG-78846
Fixes: QTBUG-118067
Fixes: QTBUG-132632
Change-Id: Idebd339926b45447e0f41398f6d70b4499f982f4
Reviewed-by: Shawn Rutledge <[email protected]>
Remove tst_qquickMouseArea::pressOneAndTapAnother from blacklisted
tats, as it is not flaky anymore on Opensuse.

Fixes: QTBUG-82282
Change-Id: I8aec44d42fd6b3a98b7af982d8c793c6b99f0110
Reviewed-by: Shawn Rutledge <[email protected]>
As it stood, we would only commit changes in the edit delegate when
the user pressed Enter, Return, or Tab/BackTab. The result was that
the changes would be not be committed (and hence lost) if the user
clicked somewhere else in the UI to transfer focus.

This behavior is basically wrong. Instead, it should be the
opposite, meaning that we should _always_ commit the changes unless
the user explicitly cancelled editing by pressed Escape.
This behavior is also verified by testing macOS "Numbers", and
Google "Sheets" (both spreadsheet apps).

This patch will therefore change the faulty behavior, so that
we commit the changes whenever the edit item loses focus, unless
it happened because the user hit Escape.

[ChangeLog][Quick][TableView] The edit delegate will now emit the
onCommit signal when it loses focus, unless it was closed from
Qt::Key_Escape.

Fixes: QTBUG-134247
Pick-to: 6.9 6.8
Change-Id: I1afab7bce9ba159330203d5a8d2b1af57ce9875b
Reviewed-by: Shawn Rutledge <[email protected]>
- Don't explicitly set background positioning as this is automatically
handled by the control to account for control insets.
- Adjust radius of handle transform to be the same as the radius of
the path angle arc
- Protect in case of null handle or background
- Simplify and refactor code

Fixes: QTBUG-134001
Fixes: QTBUG-129424
Pick-to: 6.8 6.9 6.5
Change-Id: Ie54d2fd76e85e8c59e96110f4bc8b9e45623cea2
Reviewed-by: Mitch Curtis <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.