| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
| |
Add a summary that also shows up in the overview pages. Add details
on how to make the command available. Prefer the qt_ version.
Put Synopsys before the Description, as we do in the other command
pages.
Pick-to: 6.5 6.8 6.10 6.11
Change-Id: I39234f9f3e131ca46df8aa18eaa4211f13898110
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
| |
Change-Id: I9183ffb2c2a10d0b427f4e10594dd2eaae3b1eda
Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
(cherry picked from commit fc55b1b5d0e23a2cfd784018845f9fcb694776ad)
|
| |
|
|
|
|
|
|
|
|
|
| |
Create class documentation for private classes and mark them internal
Class documentation creates a fuller documentation set, even for
internal documentation.
Task-number: QTBUG-141665
Pick-to: 6.11
Change-Id: I1b992061c45f130e3d5d37f34ee893570886f679
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Including example directories as `sourcedirs` caused QDoc to parse
example sources for API documentation, potentially causing
documentation warnings.
Examples are covered with `exampledirs`, drop the unnecessary
definitions.
Task-number: QTBUG-140629
Change-Id: I98f05bd9158e6e02af1ff14c0d450822d8bb0c94
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
|
| |
|
|
|
|
|
|
| |
It seems that the next one is checking exactly the same.
Pick-to: 6.10
Change-Id: I27b639c01a658f84420d0a7d987f82b4df48dba6
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
| |
The usage of QQmlFile was pointless there because we only accept local
files anyway.
Change-Id: I8e09723c086898f99574fb62ac86db1aee852ad1
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The \generatelist command takes an optional argument
that affect how the members are listed, for example,
`classesbymodule` which creates an annotated list of
the classes in a named C++ module.
`groupsbymodule` is not recognized or documented. QDoc
falls back to generating a list of all members of a
group in this case. While the end result is correct,
this relies on an undocumented feature that is likely
to change and break.
Replace these instances with an explicit \annotatedlist
command that produces the same output.
Pick-to: 6.10
Task-number: QTBUG-138901
Change-Id: Ieace5ba1b4ac0c755510e6925d9b1407d627b6bc
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
|
| |
|
|
|
|
|
| |
Fixes: QTBUG-135396
Pick-to: 6.10 6.9 6.8
Change-Id: Ib564ff364e6b850425211fe933c6a184a1027bd1
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The current implementation seems to specifically avoid looking for
finalize calls on receiving a "done.invoke." event.
Nonetheless, one possible reading of the specification doesn't necessary
seem to imply that this event should not be run through a "<finalize>"
element of the invoking state.
Some external tools that were tried seems to agree with running finalize
on a "done.invoke" state.
Hence, align the code this reading of the spec, and the external tools
that were tried, by removing the exception for "done.invoke." events and
the processing of a "<finalize>" element.
When the above is done, a test fails in our compliance test suite, test
233.
In the test, a "<finalize>" handler tries to manipulate some data that is
supposed to be in the manipulated event.
With the change, it will do so on a produced "done.invoke." state that
has doesn't have that data, thus producing an error and consequently
failing the test.
While this is a direct effect of the performed change, it is not a fault
of the new behavior that the test is failing.
Instead, the failure was hidden by the previous behavior.
Normally, the test produces an event from the invoked service to the
parent state machine.
This event contains the data that the "<finalize>" handler expects.
When it will be processed, right before any transition is performed due
to the processing, the "<finalize>" handler will be run, enabling a
condition that will allow for a transition to a final state that
indicates that the test passed.
The invoked service should produce a "done.invoke." event, as part of
exiting the interpreter while being in a final top-level state.
But since the event will be processed after the parent state machine has
transitioned to the final state, it will never pass by the "<finalized>"
handler, which is not part of the active state anymore.
Nonetheless, the current implementation runs "<finalize>" handlers as
soon as the event is posted and not right before processing.
This goes against the spec which, in the specification of the
children, which are executable content, of a <finalize> element, states
that:
```
The Processor MUST execute them right before the event is pulled off the
external event queue for processing. The Processor MUST NOT execute them
at any other time or in response to any other events.
```
Following the form presented in appendix D of the specification and
considering the above, the code that processes "<finalize>"
handlers (and autoforwards which is linked to the same timing
restrictions) was transplanted from it's original position under
`postEvent` to a relevant position under `processEvents`.
The code was generally transplanted as-is, with the sole exception of
the removal of a `setEvent`/`resetEvent` pair in the moved code, under
the understanding that it was necessary in its original context, due to
the finalize handler expecting the processed event to be part of the
running state of the processor, but is subsumed in the new context due
to the processor already being put in the relevant state during the
processing of the event.
Hence, aligning with the required timing restrictions and ensuring that
the now failing test passes correctly.
An additional test case was added to "tst_statemachine" to ensure that
"<finalize>" handlers now run on "done.invoke." events.
Fixes: QTBUG-135906
Change-Id: I8ff4af2c2909418d4e23ad1dcdb0d2cc0c6269f1
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
|
| |
The "array" attribute of the <foreach> element is not merely a property
in the data model, but rather a value expression.
Fixes: QTBUG-135827
Change-Id: Ie484f37a3b9d49345c950c9f7bc2a26852438ba9
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Since 6.10, QDoc is capable of generating links to the declaration in
the source code for each documented C++ API entity in their `Detailed
description`.
Add the required configuration to enable this feature for modules in
qtscxml.
Change-Id: If8a86b83394a8a30340fff05d4b54c9104fe61bc
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
It's headers should not leak into the Scxml and StateMachine public
headers.
Amends commit d59b74c12cbd76f129db5b12246749206bcd3b29
Pick-to: 6.9 6.9.0
Fixes: QTBUG-134901
Change-Id: Ib176d1611be0a2d803e4b69b0ee3848cdae6f0e6
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Lars Schmertmann <SmallLars@t-online.de>
|
| |
|
|
|
|
|
|
|
|
|
| |
- it seems isInFinalState(state) always returns false if state has a
StateMachine type and is not being initial.
But such state can be in 'Final' stage, even if it's not initial state.
Task-number: QTBUG-126419
Change-Id: Iff5b8977af1c92e99616ef2693f01d75303a4cc0
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* qtscxml contains two independent implementations. With Qt 6 the
statemachine was moved into qtscxml to avoid an additional module
that provides similar functions. During this process the features
were broken.
* With this change the features are fixed and additional features are
added to enable fine-grained configuration for an efficient build.
* The schema was taken from qttools.
Fixes: QTBUG-132565
Pick-to: 6.9
Change-Id: I638a8d08f94425dba3d80a68af389654458ae8dc
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
|
|
| |
We cannot expose executable compilation units in verifyBindings()
because verifyBindings() is called from the type loader thread. However,
we actually only need the base compilation units anyway.
Pick-to: 6.8
Change-Id: I990a6e00caeba3f3e6cb76921225bc1d0aa66a4b
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
|
| |
|
|
|
|
|
|
| |
While at it, also make it a link.
Pick-to: 6.8
Change-Id: I61128611e18bb7c927009d24dae18504bcd54648
Reviewed-by: Juha Vuolle <juha.vuolle@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
moc/AUTOMOC will detect Q_OBJECT macros in code, regardless of whether
it is in a comment or not. This is why originally a qdoc macro Q_OBJECT
was introduced.
Anyhow, due to the underscore, qdoc never did treat \Q_OBJECT as a macro
invocation of this, resulting in \Q_OBJECT being verbally printed in the
generated documentation.
Fix this by moving the snippet into it's own file. This also allows
compile-testing it as a bonus point.
Task-number: QTBUG-130799
Pick-to: 6.8
Change-Id: I7b737ec06dc9eb58d5cacb218f039dcc8b871ef8
Reviewed-by: Alexei Cazacov <alexei.cazacov@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
| |
As requested in qtbase/5d174877234477a59eb29818d3cfb99fedc3e704.
Change-Id: I5f6568921a25918a5ae3fffdff7c136d3eb455a9
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
|
|
| |
Using \keyword instead of \target means that IDE's can
properly look up these commands in the qch index.
Pick-to: 6.7 6.8
Task-number: QTBUG-128368
Change-Id: I0f2dfc9cea63e0e9bd58583051727a0581eb78cc
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
The QDoc command `\tableofcontents` was rendered useless by a change
more than a decade ago. Remove the use of `\tableofcontents` as it
serves no purpose, and ensure that the surrounding context still makes
sense for the reader, by removing preceding text that refers to a
non-existing table of contents, such as `Contents:`.
Task-number: QTBUG-128173
Pick-to: 6.8
Change-Id: I4d96b7558dfee37448bbedc3dcfbe41a8c67f65f
Reviewed-by: Safiyyah Moosa <safiyyah.moosa@qt.io>
Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This array of an integer is what that template expression was going to
produce anyway, because QScxmlEvent is has a Q_DECLARE_METATYPE in
qscxmlevent.h.
Looks like this portion of the signal-slot & metatype connection
mechanism wasn't updated for 6.x semantics. Something for the future in
QtCore.
Change-Id: I62857837dffb1662e7f4fffdd0c5e93d23253c64
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
| |
Since the implementation of the `\nativetype`-command in QDoc,
the `\instantiates`-command is deprecated. Replace the use of the
deprecated command in favor of its replacement.
Pick-to: 6.8
Task-number: QTBUG-128216
Change-Id: I91bd8861aa2f32c982aaf3209a912dea56fcf4d3
Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
|
| |
|
|
|
|
|
|
|
|
| |
This commit organizes the articles, so they:
- have a reasonable tree structure
- can be navigated through the topic tree in the Qt Creator help viewer
Task-number: QTBUG-127351
Change-Id: Ib3d0a2f264096ef40238776fd96b664d3193ad56
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The documentation for Qt SCXML doesn't mention anywhere that it is
part of the Qt State Machines installer package. Mention this on the
main landing page for Qt SCXML.
Fixes: QTBUG-124822
Pick-to: 6.8
Change-Id: Iff95ea853e6f084fa2fa6117255e2b9155693971
Reviewed-by: Safiyyah Moosa <safiyyah.moosa@qt.io>
Reviewed-by: Andreas Eliasson <andreas.eliasson@qt.io>
|
| |
|
|
|
|
|
|
| |
The behavior that argument was enabling is the default one now.
Task-number: QTBUG-90492
Change-Id: I347db24e2a35771cbd3dc504c5f3aa7b17481376
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
|
|
| |
As suggested by Ulf, in addition to correcting the documentation
runtime warning will be helpful. This commit adds the warning
and a test for that
Change-Id: I6dbd727e493431d7d71efbc5b527df8d67d50dcd
Fixes: QTBUG-109371
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
As part of QTBUG-109371 it was discovered that calling start() after
stop() doesn't result in a "clean" initial step which is contorary
to the existing documentation.
It was agreed that ATM changing documentation to better reflect the
current state is more suitable, than doing a proper "clean".
This commit addresses the documentation issue
Fixes: QTBUG-109371
Change-Id: Iaec8f31b39873a1cdc2809e5773fcaa1e6f5d37c
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
| |
Fixes: QTBUG-120578
Pick-to: 6.6 6.7
Change-Id: I03a68eba493f50bbff0b3b24b2eb7efbafbd1852
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
|
| |
|
|
|
|
|
|
| |
Looks like these examples no longer exist, or at least not in this
module.
Change-Id: Iab05007169933773a21909a23ca2a8beb9b61a0c
Reviewed-by: Juha Vuolle <juha.vuolle@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
QDoc automatically generates an admonition (note) with the same
content. Drop the sentence to avoid duplicate content.
Fix a typo in the preceding line.
Fixes: QTBUG-120576
Pick-to: 6.7 6.6
Change-Id: I3e5e1133d9d252e0bcac8d2397c718251818aef2
Reviewed-by: Andreas Eliasson <andreas.eliasson@qt.io>
Reviewed-by: Safiyyah Moosa <safiyyah.moosa@qt.io>
|
| |
|
|
|
|
| |
Task-number: QTBUG-117983
Change-Id: Ie45d595a84344fbf4f5998a7de693738600c04c0
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
| |
Task-number: QTBUG-117983
Change-Id: I89853fbdaebc4c28bc7843c0fe2243b64a0c7dd8
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
| |
Task-number: QTBUG-117983
Change-Id: I3451795e311854ad9c5c94a0d367a9e111c444f4
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
| |
Task-number: QTBUG-117983
Change-Id: I0df1b5412c87d1b6772bbde4eb9014c9c404fa72
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
|
| |
The qmake include snippet id was wrongly copied from the cmake section.
Fixes: QTBUG-119562
Pick-to: 6.6 6.5
Change-Id: Ibe4553e42434f40abc168a614d1d7de2a60140a3
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
|
| |
|
|
|
|
|
|
|
| |
Amends commit fc213f255b1a82
Pick-to: 6.5 6.6
Task-number: QTBUG-117220
Change-Id: Ifd3a309b90a7810c4da1ff7530c80dc654f04c35
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Standard says https://www.w3.org/TR/scxml/#script that there should
be either src or some content in the script tag. Compiling should fail
with non-conformant .scxml files.
Adjust the number of the errors in a few test because of newly added
error.
Pick-to: 5.15 6.5 6.6
Fixes: QTBUG-118050
Change-Id: Ib72f7cca53e427a5a83a6aaa3a8a197818e8693f
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
| |
Pick-to: 6.5 6.6
Task-number: QTBUG-117220
Change-Id: I7d9a6e47c7115a39ab19e7acb3d9a8940fb9b948
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
All these TUs relied on transitive includes of qpointer.h, maybe to a
large extent via qevent.h, though, given that qevent.h is more or less
the only public QtBase header that includes qpointer.h, something else
seems to be at play here.
Said qevent.h actually needs QPointer in-name-only, so a forward
declaration would suffice. Prepare for qevent.h dropping the include.
The algorithm I used was:
If the TU mentions 'passiveGrabbers', the name of the QEvent function
that returns QPointers, and the TU doesn't have qpointer.h included
explicitly, include it. That may produce False Positives, but better
safe than sorry. Otherwise, in src/, add an include to all source and
header files which mention QPointer. Exception: if foo.h of a foo.cpp
already includes it, don't include again.
Task-number: QTBUG-117670
Change-Id: I8bdf99ae10f7a4430cb23c7a0a52ef646bae750a
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Adjust to the changes in QTestPrivate that allow to catch binding loops
when testing bindable properties.
Fix the binding loops identified by the updated tests.
After fixing all obvious binding loops, it was discovered that the
call to QObject::objectName() in the tableData property setter creates
a binding loop on its own.
Fix it by accessing QObjectPrivate's internals instead of calling
a public getter.
Also add a test to verify that the logic of updating the objectName
did not change.
Task-number: QTBUG-116542
Pick-to: 6.6 6.5
Change-Id: Idc849dd9841dc70df2d36524cb5bb0a331255f39
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
All bindable properties were not breaking the binding if the new value
was the same as the old one. This is incorrect, so fix the logic.
Also, use (set)ValueBypassingBindings() to access the properties.
Update some helper functions in QStateMachinePrivate to also use these
methods instead of directly accessing the properties.
Some of the QState's properties cannot really be tested for the binding
loops with the current approach, because they require that the new
state belongs to the same object. Explicitly pass a lambda that returns
a nullptr as a helperConstrucor parameter for such cases, meaning that
binding loop checks will be skipped. In practice these property setters
are trivial, so they will not cause binding loops.
Pick-to: 6.6 6.5
Task-number: QTBUG-116542
Change-Id: If02c35df2b9c651c7f21f6f85752912e56688c71
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This one is a bit special, because the setter assumes that there is a
QML engine handling the object.
As a result, creating a helper object for testing binding loops is a
bit tricky. Do it by having a helper QQmlComponent based on a qml file
with a SignalTransition object as a root element.
Fix the binding loop in the setter in a usual way.
Task-number: QTBUG-116542
Pick-to: 6.6 6.5
Change-Id: Ibd22dee0619a69b52901e9fe2145fcfbd9dcf98c
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The QScxmlStateMachineLoader::source setter assumes that the loader is
managed by a QML engine, so use a helper QML file and a QQmlComponent
to create a helper object and run the test for binding loops.
The binding loop here is a bit tricky, as the source setter modifies
two properties: source and stateMachine.
The fix for the source property is trivial.
The stateMachine property is read-only, so modify the
setStateMachine() internal setter in such way that it does not create
bindings. After that, manually call notify() if the state machine
has changed.
Use simpler state machines in the test, because the original ones
were generating the ASAN memleak warnings from scxml compiler.
Task-number: QTBUG-116542
Pick-to: 6.6 6.5
Change-Id: Ia8427ed07c1e63e5740b2f0817fe6b2cb48726b8
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
| |
By using (set)ValueBypassingBindings() in property setters.
Also convert the helper function doConnect() to use
valueBypassingBindings(), as it's only called from the setters.
Task-number: QTBUG-116542
Pick-to: 6.6 6.5
Change-Id: I6ab241c26d377b62e99b46b3295cfa48ef5f2a7b
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
|
| |
By using (set)ValueBypassingBindings() in the property setter.
Task-number: QTBUG-116542
Pick-to: 6.6 6.5
Change-Id: I21cf04b43e1c1e912117ad5e4cbec9e9f1a68f43
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
| |
By using (set)ValueBypassingBindings() in the property setters.
Remove the dependency of initialValues and dataModel setter from
the m_stateMachine property.
Task-number: QTBUG-116542
Pick-to: 6.6 6.5
Change-Id: Ic16e7fde2b319d4c3b3471356e69be8e61d9806f
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
| |
Add the missing closing parenthesis.
Pick-to: 6.2 6.5 6.6
Change-Id: I490b8e3480b2e1cfa23829c12fee14606c88e56f
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
|
| |
|
|
|
|
|
|
|
|
| |
By adding it to the default build flags via .cmake.conf.
This amends commit 7f218afc89150e40d4f2f5f796d43a6e74e40532.
Task-number: QTBUG-116296
Change-Id: I1bf7c798a882fbf6bc324f4a1caec7df15628056
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
| |
Pick-to: 6.5 6.6
Change-Id: I8c8d7e3e6b8221f8d85d9873f8c91dc870e4ecef
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The autogenerated list of overviews was adding the \group command which
included all the groups instead of overviews.
The idea here is to categorize the overviews later on once we have
the list of all overviews.
Task-number: QTBUG-114762
Pick-to: 6.5 6.6
Change-Id: Iab8b6c00f38f0741e200756a178b901f1d195c4f
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
|