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.
0 out of 19 committers have signed the CLA.

❌ Santhosh Kumar
❌ kapinter
❌ alcroito
❌ diseraluca-qt
❌ NickBennett1812
❌ dangelog
❌ redstrate
❌ toreinio
❌ ec1oud
❌ Inkane
❌ jobor
❌ mitchcurtis
❌ thiagomacieira
❌ lugerard
❌ timblechmann
❌ alcazaco
❌ QtDheeru
❌ jarkkokoivikko-code-q
❌ Petrivirkkunen


Santhosh Kumar 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.

mitchcurtis and others added 28 commits January 15, 2025 10:01
We need to ensure that it's possible to use ContextMenu on controls
like Pane, which accept mouse events to prevent them from going to
items beneath them.

customContextMenuOnControl.qml was using Label, which is derived from
QQuickText, not QQuickControl, so give Label its own file.

Also, add a test for the actual Control type just for completeness.

Task-number: QTBUG-132073
Pick-to: 6.9
Change-Id: I3521aa98a4aeec4848bf10c6c46f4e6e83bdb697
Reviewed-by: Shawn Rutledge <[email protected]>
FocusFrame.qml was included in the FluentWinUI3 public module imports,
despite not providing any documentation. This component is an
implementation detail and should not be part of public QML API.
Add deprecation warnings in the original file and move it to the
private impl module instead.

[ChangeLog][QtQuick][Controls][FluentWinUI3] FocusFrame.qml is deprecated
in the module's public QML API and moved to the private impl module instead.

Pick-to: 6.9
Change-Id: I74c8c9a03ccc1f7b33d6fb814ca1faeca57b0545
Reviewed-by: Mitch Curtis <[email protected]>
Do not populate a pointer eagerly if it was already populated when its
factory got reset. Instead reset the underlying shared pointer to
delete the stale data. Amends 13761ee
that wanted to avoid having stale data around.

Add a test that reproduces the stack overflow when the pointer get
eagerly populated, and make sure the stack size is big enough even for
asan builds.

Fixes: QTBUG-132134
Pick-to: 6.8 6.9
Change-Id: I8e2a5ce7fc99b1ec33d31535dc6b2675ab623349
Reviewed-by: Ulf Hermann <[email protected]>
Not all combinations are actually supported, so replace
DomCreationOptions with DomCreationOption.

We only need 2 options: a Default one for qmlformat and an extended
one with semantic analysis, script elements and recovery elements.

Task-number: QTBUG-92889
Change-Id: I7a2d52df1dd7b4186eab73d3bd11c9818c25f543
Reviewed-by: Olivier De Cannière <[email protected]>
Its not used anywhere, and only returns a default constructed path.

Change-Id: I0c3cdaf1993e4beb96b070a8b1550114894e7a71
Reviewed-by: Ulf Hermann <[email protected]>
Reviewed-by: Olivier De Cannière <[email protected]>
Group the data into different categories with separate protection
strategies:

1. Actually shared data: This is protected by the type loader thread
   mutex.
2. Data only accessed by the type loader thread. This does not need any
   locking, but we assert on the thread affinity.
3. Configuration data. Only the engine thread can write it and the
   loader thread must be stopped at that point. It can then be read from
   either thread without locking.
4. The network access manager factory. This one has its own mutex
   because it can be accessed not only from the type loader thread but
   also from worker scripts.

Fixes: QTBUG-131721
Change-Id: Id91bcdc019d4d283df7eb294dd852a0093ed2db9
Reviewed-by: Olivier De Cannière <[email protected]>
This change removes a duplicate mavenCentral repository
definition from qtabstractitemmodel_java settings.gradle
file of Qt Quick for Android example.

Fixes: QTBUG-132792
Pick-to: 6.9 6.8
Change-Id: Ib4d719a7c12ff536a7da588387badd097edeeeb6
Reviewed-by: Assam Boudjelthia <[email protected]>
Change-Id: I079783082c934ea89e6feae3215e5e80f201b730
Reviewed-by: Semih Yavuz <[email protected]>
These versions are currently all over the board, and the intention is
to have them in line with the Qt for Android requirements (which is
Gradle 8.10 and AGP 8.6). Also update the Kotlin plugins while at it.

Task-number: QTBUG-132815
Pick-to: 6.9 6.8
Change-Id: I72d8cb15d80b8b69301bbc2bbfeebf779ef137df
Reviewed-by: Assam Boudjelthia <[email protected]>
Follow the approach with FocusFrame and move StyleImage.qml to the
private FluentWinUI3.impl module instead. Add deprecation warnings to
the original file.

[ChangeLog][QtQuick][Controls][FluentWinUI3] StyleImage.qml is
deprecated in the module's public QML API and moved to the private
impl module instead.

Pick-to: 6.9
Change-Id: I2a536591abb2172a1f7d7a052e88f0c2f58cd481
Reviewed-by: Mitch Curtis <[email protected]>
We support QQmlParserStatus for attached objects, but only if the
attached type is registered with the engine (registering only the
attaching type is _not_ enough).

Fixes: QTBUG-131917
Pick-to: 6.9
Change-Id: I0d71c2ba889c727de9e431edbfa9a1b384277bf0
Reviewed-by: Mitch Curtis <[email protected]>
Reviewed-by: Ulf Hermann <[email protected]>
If a transform animation ends while others are still running,
we need to record the state directly after the shorter animation
ends, so that we get a key frame for only the animations that
are still active as a starting point.

Note: This also adds some extra debug output which was helpful
when debugging it.

Pick-to: 6.9
Fixes: QTBUG-132408
Change-Id: Ied1f4e7431d201f7bcef27eb4be271eb0afbd8f2
Reviewed-by: Hatem ElKharashy <[email protected]>
Reviewed-by: Eirik Aavitsland <[email protected]>
Make the benchmark populate the loaded QML file for it to give
comparable results (not all DomCreationOptions create lazy QMl files).

Pick-to: 6.8 6.9
Task-number: QTBUG-92889
Change-Id: I37b6692499e8337ecab496ac7d2a9888d70df57c
Reviewed-by: Olivier De Cannière <[email protected]>
DOM construction time is quite slow for the QDS use case, so add a new
minimal DomCreationOptions that ignores comments (as QDS has no need
for comments) because comments seem to take some time to construct.

Add the Minimal DomCreationOptions to the Benchmark to show that it is
faster then using the Default DomCreationOptions.

Measured on my machine, using a release build:
File                | Default (ms) | Minimal (ms) | Speedup
tiger.qml           | 83           | 38           | 2.18
deeplyNested.qml    | 438          | 12           | 36.5

The 36.5 speedup does look weird at first, but a quick look in the
profiler shows that we spend 95% of the benchmark time for
deeplyNested.qml with Default DomCreationOptions in
* Path::component() and
* DomItem::field()
while trying to iterate on the Qml Document to find the comments.

So its not a bug, its just the linear complexity of Path::component()
and DomItem::field() that proves to be inadequate in our case:
* Path::component(i) returns the i.th path component, and needs to
  iterate through all components to find it
* DomItem::field(f) returns the value of the field f, and uses
  iterateDirectSubpaths() which is linear in the number of total fields,
  and it seems the laziness there might not be working as expected.

Pick-to: 6.8 6.9
Task-number: QTBUG-92889
Change-Id: I51168b68e930ed14d1751cf0f6028b1b2879b774
Reviewed-by: Fabian Kosmale <[email protected]>
Reviewed-by: Olivier De Cannière <[email protected]>
Stop the confusion between Path::field() and Path::Field() and just
rename
* Path::Field() to Path::fromField() and
* Path::field() to Path::withField()

Previously, Path::field() would return a new Path with the Field
appended to to the current path, while Path::Field() would create a new
Path only containing the passed Field, which I think is a bit confusing.

Same for the other methods returning copies with components appended
to it, and their uppercased counterparts:
* Path::empty()
* Path::key()
* Path::index()
* Path::any()
* Path::filter()
* Path::current()
* Path::path()

I won't explain here why I believe how Path::empty(), for example, was
particularly deceitful with its previous name.

Also rename appendComponent to withComponent that actually does not
append anything: it returns a copy with the component appended to it.

Change-Id: I9120c3827e30330f715e699cbbb88780d2fd358d
Reviewed-by: Olivier De Cannière <[email protected]>
If the default property has been overridden, we cannot say anything
about the children anymore.

Pick-to: 6.9 6.8 6.5
Fixes: QTBUG-132805
Change-Id: I4d8990b43801976a86b1416f70ee517cda57bda9
Reviewed-by: Olivier De Cannière <[email protected]>
Reviewed-by: Fabian Kosmale <[email protected]>
The sidebar lacks test coverage. Add a basic test, which verifies that
clicking on the various buttons that represents standard paths, actually
changes the dialog's currentFolder.

Pick-to: 6.9
Change-Id: I48d2672a2d26ae96c8a2069e1bbfb340117a10c3
Reviewed-by: Mitch Curtis <[email protected]>
Pick-to: 6.9
Fixes: QTBUG-132783
Change-Id: I6ff21da55381c20304b57556cd5b75191975a5d4
Reviewed-by: Olivier De Cannière <[email protected]>
The child recursion logic in transformChanged notes that we "Inform the
children in paint order: by the time we visit leaf items, they can see
any consequences in their parents".

This holds true for subclasses of QQuickItemPrivate, that process the
call and then call the base class implementation.

However in the case of updating the layer matrix we were doing it after
recursing children, which breaks the documented logic.

Similarly, we were notifying QQuickItem::ItemTransformHasChanged
after recursion, which meant that observers would get callbacks in
reverse paint order when observing a hierarchy of items.

We now handle both these cases before recursing.

Pick-to: 6.9
Change-Id: I373a2d7af11da65f66494322e44079ae04e95752
Reviewed-by: Oliver Eftevaag <[email protected]>
Task-number: QTBUG-131012
Pick-to: 6.9
Change-Id: If2772b615cab303d018b0353ee7432596bff6c7c
Reviewed-by: Kaj Grönholm <[email protected]>
Fixes: QTBUG-132514
Pick-to: 6.9
Change-Id: Iaec314c6139bae82a6668a13dcaa88206b3a8579
Reviewed-by: Topi Reiniö <[email protected]>
Track the unresolved types in a central place and only warn once for
each of them. Make sure that we still mark them as wrapped in implicit
components even if we don't warn, though.

Realize that custom parser parents potentially obfuscate any types
defined inside their scope, not only the ones we look for when
setting bindings.

Pick-to: 6.9 6.8
Task-number: QTBUG-124913
Change-Id: I30d911dc92d1e4359db66671bf62393f2f852b6c
Reviewed-by: Olivier De Cannière <[email protected]>
Reviewed-by: Sami Shalayel <[email protected]>
If a property cannot be found, we don't need to check its type or even
try to compile a binding for it. We also shouldn't claim a property
doesn't exist if we cannot find it. We may have failed to resolve the
type after all.

Pick-to: 6.9 6.8
Task-number: QTBUG-124913
Change-Id: I93ef12e888762ae03f8fa6b1bef2e8d04ba3d4b2
Reviewed-by: Sami Shalayel <[email protected]>
Change-Id: I78a00808837fac12d553f9a665da704775e7ee32
Reviewed-by: Sami Shalayel <[email protected]>
Amends commit 6891392

Change-Id: I5969a584d576a6ac416c8b0d48d549ce64d28225
Reviewed-by: Sami Shalayel <[email protected]>
Event filtering can be problematic. At least this was a more reasonable
use case for a filter than some others in Controls; still, we already
have a switch case in QQuickItem::event(), and plan to add a virtual
QQuickItem::contextMenuEvent() in Qt 7, so we might as well mock it up
now as QQuickItemPrivate::contextMenuEvent(). Dispatching only the
QContextMenuEvents ought to be cheaper than filtering all events.
On the downside, ExtraData gets a little bigger.

We add QQuickItemPrivate::setContextMenu() because
QQuickItem::ExtraData is not exported; and to enable categorized
logging when one menu is replaced with another, this setter returns
the previously-known menu, if any.

Pick-to: 6.9
Change-Id: I9f2553fb579409becf797046dcc473260320c6a5
Reviewed-by: Mitch Curtis <[email protected]>
They're fixed, after commit 529491f
avoiding starting a thread unless necessary and qtbase commit
2f69a05bd0cd7ce63890f709ff3ed7a4f78acd70 changing the thread destruction
order again.

Pick-to: 6.9
Change-Id: I46d585c0f4299f3c7ed9fffdf4f1b021b4186ed7
Reviewed-by: Ulf Hermann <[email protected]>
This signal allow to open a custom menu, which might not inherit from
QQuickMenu. The usecase is for KDE: we already have a ContextMenu which
opens a bottom drawer on mobile platforms and a traditional menu on
desktop platforms.

See https://invent.kde.org/libraries/kirigami-addons/-/merge_requests/337

Pick-to: 6.9
Change-Id: I5dafbd6314ebdd066ccc6a386b4e2c07caab285e
Reviewed-by: Shawn Rutledge <[email protected]>
toreinio and others added 30 commits February 20, 2025 10:44
Resolves QDoc warnings of type
Macro '\tab' invoked with too few arguments (expected 4, got 3)

Pick-to: 6.9
Change-Id: I1e0dc56daa9eb3a8565e4d691a4504bfa3d0747c
Reviewed-by: Nicholas Bennett <[email protected]>
Added the missing \l

Fixes: QTBUG-133745
Pick-to: 6.8 6.9
Change-Id: I4357e15ea54230a86501c338a26d6ffc7ce403cf
Reviewed-by: Assam Boudjelthia <[email protected]>
Reviewed-by: Rami Potinkara <[email protected]>
QML methods have to also be annotated with the \qmlmethod, which this newly
added one did not.

Pick-to: 6.8 6.9
Change-Id: I01f7241130c4f098bc94978e71c83891da4103a4
Reviewed-by: <[email protected]>
Reviewed-by: Aleix Pol Gonzalez <[email protected]>
Creating library qtbase\lib\Qt6Quick.lib and object qtbase\lib\Qt6Quick.exp
mocs_compilation.cpp.obj : error LNK2001: unresolved external symbol
"public: __cdecl QExplicitlySharedDataPointer<class
QFontVariableAxisPrivate>::~QExplicitlySharedDataPointer<class
QFontVariableAxisPrivate>(void)"
(??1?$QExplicitlySharedDataPointer@VQFontVariableAxisPrivate@@@@qeaa@XZ)
qtbase\bin\Qt6Quick.dll : fatal error LNK1120: 1 unresolved externals

Since qtbase ac5ab8ce32c6bd4122ecc690d30eade5c4f4bf2a
~QESDP<QFontVariableAxisPrivate> is not exported, but it should not need
to be.  This error is believed to be due to an MSVC bug.

Fixes: QTBUG-133494
Pick-to: 6.9
Change-Id: Ia5fdbf7153251c60f23470d38ad19dde778ebf83
Reviewed-by: Shawn Rutledge <[email protected]>
Reviewed-by: Thiago Macieira <[email protected]>
Reviewed-by: Zhao Yuhang <[email protected]>
The sidebar is intended to be an implementation detail, and thus not
intended to be used by users directly. However, it makes sense for it to
have its properties flagged as FINAL for the performance gain. In
addition, a new signal didn't have a revision.

Found in API review.

Pick-to: 6.9
Change-Id: I82b4314a3cf7f8336efe728a6c8da5d22a52a800
Reviewed-by: Ulf Hermann <[email protected]>
Replace the use of -1 to indicate unset corner radii with explicit
bitfield flags to track whether each corner radius is set.
The default value for unset radii remains 0.0.

Fixes: QTBUG-120188
Change-Id: If51a0165386a0c474ecd57ef23310d1c28f0f60b
Reviewed-by: Shawn Rutledge <[email protected]>
Pick-to: 6.9
Change-Id: I39312a020939f4de5b80e9a0bf4b39294e9fa7f5
Reviewed-by: Ulf Hermann <[email protected]>
Reviewed-by: MohammadHossein Qanbari <[email protected]>
While those properties may be of type Component, they don't have to. We
can in fact not resolve anything resembling an ID while inside one of
those objects because we cannot determine the component boundaries.

Amends commit dea8e38

Pick-to: 6.9 6.8
Fixes: QTBUG-133460
Change-Id: Iac7294166d38ce591c45c0d31b139a52eda70fc1
Reviewed-by: Fabian Kosmale <[email protected]>
Reviewed-by: Olivier De Cannière <[email protected]>
It contained quite a few inaccuracies. Also, move the docs for
operator== up, into the same block as the other docs for
QQmlListReference.

Add a link to QQmlListReference to the docs of QQmlListProperty.

Pick-to: 6.9 6.8
Task-number: QTBUG-130705
Change-Id: I4cb2aa1a78215719a4a409c75c0a97aef404ef18
Reviewed-by: Sami Shalayel <[email protected]>
Reviewed-by: Ulf Hermann <[email protected]>
Reviewed-by: Fabian Kosmale <[email protected]>
Reviewed-by: Alexei Cazacov <[email protected]>
If you use QQmlApplicationEngine to auto-load translations you need to
make them visible by placing them inside the relevant QML module.

Pick-to: 6.9 6.8
Fixes: QTBUG-116588
Change-Id: I4b768c6ad6ef763a5d6c43aaa794860f7751398a
Reviewed-by: Sami Shalayel <[email protected]>
Reviewed-by: Olivier De Cannière <[email protected]>
Reviewed-by: Fabian Kosmale <[email protected]>
Change the compiler/platform detection macros to check whether a macro
is defined, before testing its value. See also the discussion at

https://bugs.webkit.org/show_bug.cgi?id=167643
https://codereview.qt-project.org/c/qt/qtbase/+/618094

Task-number: QTBUG-132900
Change-Id: Ic3cc02b23e034cc7622e899b4acc381166a9ec95
Reviewed-by: Ulf Hermann <[email protected]>
[ChangeLog][CMake] The FILENAME_VARIABLE option of
qt6_generate_deploy_qml_app_script, which was deprecated in 6.6.0, has
been removed.

Change-Id: Idb73337c8fab5fe009d500e371855e9fec677c37
Reviewed-by: Alexey Edelev <[email protected]>
QQuickMenuPositioner positions child menus to the right of the menu item
that opened it. In additon, the overlap and rightPadding properties
are used to offset the x position, which styles can use to fine tune how
exactly submenus should be positioned relative to the parent menu item.
The parent menu's padding is used, because the submenu's position is
initially set to be relative to the menu item that opened it. When the
position is offset by the padding, it will position itself to the parent
menu, and not just the parent menu item.

7add186 introduced the flipping
behavior for menus that have their popupType set to Popup.Window.
Causing menus that don't have enough space to open to the right side, to
instead open on the left side.
The aformentioned patch used the overlap, but forgot to also add the
leftPadding, when flipping submenus.

Also fix the test tst_QQuickMenu::subMenuFlipsPositionWhenOutOfBounds,
which was previously broken on all styles that modified the rightPadding
property of Menu. 6e327f2 introduced a
temporary fix, in order to unblock CI, and this patch should fix it
properly.

Pick-to: 6.9 6.8
Change-Id: I62c58617dbcf27c097009859213cb78eb59a8008
Reviewed-by: Richard Moe Gustavsen <[email protected]>
Amends commit 7da85b0.

Pick-to: 6.9 6.8 6.5
Task-number: QTBUG-89432
Change-Id: I67017c6fe26830aad227c97e1e9d65de09215729
Reviewed-by: Alexei Cazacov <[email protected]>
Reviewed-by: Olivier De Cannière <[email protected]>
So that ContextMenu can open when e.g. a Drawer is in the scene.

[ChangeLog][Important Behavior Changes][Controls][Overlay] The pressed
and released signals are no longer emitted for right clicks. This is to
allow ContextMenu to work when controls like Drawer are used.

Fixes: QTBUG-132765
Pick-to: 6.9
Change-Id: If329a2ddaaf76e498e7ae2cd48a899fc23dba6b9
Reviewed-by: Shawn Rutledge <[email protected]>
It was initially failing in CI. There might be a better way though, so
this patch is separate for easy reverting.

Change-Id: I4ec72bb71927ca10871c8e3c5863141b13fe5472
Reviewed-by: Shawn Rutledge <[email protected]>
This includes:
- turning VERIFY_SOURCE_SBOM ON
- adding rules to the licenseRule.json files
- correcting the licensing given via REUSE.toml files
- renaming license files not located in LICENSES folder.
Their name needs to be prefixed with `LICENSE.` to be ignored
by reuse and excluded from the source SBOM. The names are
updated in the corresponding qt_attribution.json

A lot of files are skipped during the license test,
but all are present in the source SBOM.
This is why corrections are needed before turning the
source SBOM check on.

[ChangeLog][Third-Party Code] Renaming the license files with prefix
LICENSE. to have them ignored by reuse tool.

Task-number: QTBUG-131434
Pick-to: 6.9 6.8
Change-Id: I2b3e4750405f13a97b350ee65def30f1330526a3
Reviewed-by: Joerg Bornemann <[email protected]>
Reviewed-by: Ulf Hermann <[email protected]>
Running clazy on the qt multimedia codebase found a few missing emit
statements in qtdeclarative.

Pick-to: 6.8 6.9
Change-Id: If34411774cda45e2142763c910df04f91b5ad1da
Reviewed-by: Sami Shalayel <[email protected]>
Reviewed-by: Ulf Hermann <[email protected]>
Re-declaring metatypes is not supported. It worked for built-in types
(it was actually a no-op), but it's not a good idea.

Pick-to: 6.9
Change-Id: I536f590e06906b394066fffd78e7f8fe6fda49ae
Reviewed-by: Fabian Kosmale <[email protected]>
Adds useful information to diagnose the cause of active focus failures.

The failure message will now look like this:

FAIL!  : tst_QQuickMenu::FluentWinUI3::contextMenuKeyboard(Popup.Window) 'firstItem->hasVisualFocus()' returned FALSE. (control: MenuItem_QMLTYPE_1545(0x5db854767310, name="firstMenuItem", parent=0x5db8549a28d0, geometry=0,0 190x30, z=1) activeFocus: true focusReason: Qt::OtherFocusReason activeFocusItem: "MenuItem_QMLTYPE_1545(0x5db854767310, name=\"firstMenuItem\", parent=0x5db8549a28d0, geometry=0,0 190x30, z=1)")

We add both a function and a macro, as this allows the helper to
be stepped into while debugging.

Task-number: QTBUG-133858
Pick-to: 6.8 6.9
Change-Id: I26014ee93f5f053df1ac19ac6e673876abce1258
Reviewed-by: Doris Verria <[email protected]>
Seems to help with an odd MSVC LTO error:

error C2440: 'static_cast': cannot convert from 'T *' to 'T *'
        with
        [
            T=QObject
        ]
        and
        [
            T=QQuickItem
        ]
qtbase/src/corelib/kernel/qpointer.h(75): note: Types pointed to are
unrelated; conversion requires reinterpret_cast, C-style cast or
parenthesized function-style cast

Task-number: QTBUG-133961
Change-Id: Iee9fd1821aaeec305115b8b860c86ced6df530ab
Reviewed-by: Thiago Macieira <[email protected]>
Due to 76bb559, the QML status change
listener is no longer a functional interface, and cannot be represented
with a lambda. Replace usage of this interface with a fully formed
instance.

Fixes: QTBUG-132461
Pick-to: 6.9
Change-Id: Ib456df209189e9657fb65987e7f5b13f19e7b8f5
Reviewed-by: Assam Boudjelthia <[email protected]>
Some styles are setting `modal: true` in Dialog.qml, which affects the
tab focus order.

This test fixes it, by checking whether the current style uses modal
dialogs or not.

Task-number: QTBUG-133530
Pick-to: 6.9 6.8
Change-Id: I8723e54c25bf487f885a5190c4167e93501453b3
Reviewed-by: Mitch Curtis <[email protected]>
Add code snippet for IntValidator and Doublevalidator in Doc.
Update with suggested improvements.

Fixes: QTBUG-16051
Pick-to: 6.8 6.9
Change-Id: Ia34afb23338ca78a9b853b049f9959f2700b8334
Reviewed-by: Edward Welbourne <[email protected]>
The GrabTransition enum has no "none" value: there's no reason we need
one for public API. But this test records events and transitions, and
needs a way to record that no grab transition happened. It's just an int
anyway, so QCOMPARE_EVENT simply casts it before comparison; and in any
ternary-if expression using NoGrab, we cast both arms to int.

The warning was

warning: enumerated mismatch in conditional expression: ‘<unnamed enum>’ vs
  ‘QPointingDevice::GrabTransition’ [-Wenum-compare]
  549 | QEventPoint::State::Pressed, itemIgnoreMouse ? NoGrab : QPointingDevice::GrabExclusive);
      |                                              ^

Next, there is -Wint-in-bool-context: fixed by surrounding the ternary
if's with parentheses.

Replace C-style with constructor-style casts while we're at it.

Change-Id: I0796abc8e19c1842a6b2f4e343d566ff0cc226e6
Reviewed-by: Matthias Rauter <[email protected]>
When we store the QQmlParserStatus for an attached object, we put it
into a vector to call it later. However, the status also contains a
back-reference to the container, so we need reference stability.
That is not given if we use a vector, and the vector needs to
reallocate to grow.

Avoid the issue by using a std::deque, which ensures reference stability
as long as one does not insert in the middle (which we don't). This is
rather suboptimal with MSVC's standard library, but we want a minimal
fix to unblock other patches. Finding a more suitable container can be
deferred to a later point.

Pick-to: 6.9
Fixes: QTBUG-134035
Change-Id: I7c3689ba73060abb47f32a20bc2301b82cf48fa6
Reviewed-by: Shawn Rutledge <[email protected]>
Pick-to: 6.9
Change-Id: I8c21846fa6d2afaaa7caa30d99d7d8b17b38e71c
Reviewed-by: Kaj Grönholm <[email protected]>
You can now use the QT_QML_GENERATE_AOTSTATS CMake variable to control
whether aotstats get generated in Qt or in users projects.

[ChangeLog][Qml] It is now possible to control whether QML Compiler
statistics (aotstats) get generated by setting the
QT_QML_GENERATE_AOTSTATS CMake variable to ON or OFF. The default value
is ON.

Fixes: QTBUG-131002
Task-number: QTBUG-128323
Pick-to: 6.9 6.8
Change-Id: Ibfd55b22d3d284218053bbf67f654c63a7507bae
Reviewed-by: Ulf Hermann <[email protected]>
Fixes: QTBUG-130370
Pick-to: 6.9 6.8 6.5
Change-Id: Ie2213afd357274548c60c29371729ba32bd7b29b
Reviewed-by: Ulf Hermann <[email protected]>
MockPlatformTheme::m_colorScheme was initialized to Unknown, which
translated to System theme, which was handled as not Dark theme
in the test case. This worked, if the actual system theme was Light.

However, when the system theme is Dark, QGuiApplication::styleHints
colorScheme is initialized to Dark as well. In this case, the test
case failed, because the styleHints did not change and the Material
style did not receive theme change event, resulting in test failure.

Pick-to: 6.9
Change-Id: If9bd4a942344b19dffe2b3ffb96faf0c18b9e2b0
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.