| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
| |
propagateSizeHints is only called in QWindow we have platform window and
minimumSizeHint is then sent. We also need to send existing hints when
we create the shell window.
Sending them when we apply configure is too late, we need these hints
available for the compositor to correctly configure the window.
Change-Id: I6cbb294b11db06ecd87535fa4816bb8ad34a29c6
Reviewed-by: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
|
|
|
|
|
|
|
|
|
| |
This was added as an enabler to facilitate use cases where the driver
can provide protected buffers. Since it will always return false with
the existing backends, we should notify users.
Change-Id: I85da0b44dfb5c827bee784a79d2b7f395d1df574
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
|
|
|
|
|
|
|
| |
Support wl-shell integration
as a module for external build
Change-Id: I6cd5e5c35ff1162943ffdcbe7ff834f30783e5a8
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
|
|
|
|
|
|
|
| |
Support wayland-egl compositor hwintegration
as a module for external build
Change-Id: I794ad4eb38fc2dda31ace1b0eeb2e001020d0956
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
Support wayland-egl client hwintegration
as a module for external build.
Change-Id: I3e82838d0cc89d4bb1435b835dc1e9b592319ddf
Reviewed-by: Elvis Lee <kwangwoong.lee@lge.com>
Reviewed-by: Jaeyoon Jung <jaeyoon.jung@lge.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
The qwaylandegldisplay.h file is not included from anywhere, and
also doesn't compile. This is currently in the way of moving the
code into a library, as it will then be attempted to be compiled
as part of the headersclean check.
Change-Id: Ib382f220977f751186c485cc0d866da2587f937d
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
|
|
|
|
|
|
| |
We now generate metatypes by default and every instance of GENERATE_METATYPES now causes a warning.
Change-Id: I114af393fb216092c09a37730fde481e409b6aa4
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
|
|
|
|
|
|
|
|
| |
Document what the corresponding C++ class for any given QML item is,
like it's done in Qt Declarative.
Pick-to: 5.15
Change-Id: I015565f88cb457f1e73dd7c2c54edff3505db395
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
|
|
|
|
|
|
|
|
| |
Better late than never: Add the previously advertised stuff.
Pick-to: 6.1 6.0
Change-Id: I5e38f792837788d7c42851149ae4b471b5065dff
Reviewed-by: Liang Qi <liang.qi@qt.io>
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
libwayland-server ensures that the requested version is less than or
equal to the global version.
This change removes the global version check to simplify the generated
code and reduce memory usage footprint, however the latter shouldn't be
that noticeable.
Change-Id: Idd76098e588f3f4ca1be960d20a16994726702af
Reviewed-by: David Edmundson <davidedmundson@kde.org>
|
|
|
|
|
|
|
|
|
|
| |
Add a virtual method QWaylandCompositorPrivate::seatFor and move the
body of QWaylandCompositor::seatFor there. It allows a custom seat
selection for a given event by re-implementing seatFor in the private
class.
Change-Id: I23259e8b6532e3e4d624d8aaf8c71faa5018399e
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
|
|
|
|
|
|
|
|
| |
Ammend cca1b94190a094b5d1d7ce492b6533e2d330c5e8 to use m_composeState
only if xcbcommon is available.
Pick-to: 5.15
Change-Id: I48332b15def3282c5bda3e1c7c393ea7e9849cbe
Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If we get a new update while already waiting for a frame callback
and the window is unexposed, we would previously destroy the
callback and issue a new one. But if the window is unexposed, the
compositor may accumulate these and answer all the callbacks when
the window is shown again. This may cause overflows and the client
to be killed by the compositor in some cases where the number of
pending updates is too high.
To avoid this, we skip requesting new callbacks if there is already
one pending and the window is unexposed. When the window is
re-exposed, the existing pending callback will be triggered anyway,
and until then there is no need to repeatedly verify that we
still cannot render.
One risk is that there may be compositors which never issues a response
to the callbacks requested while the window was unexposed. But that
would probably be in conflict with the specification and possibly cause
other issues as well. The patch was tested with Weston and Mutter, and
seems to improve behavior in both of these at least.
[ChangeLog][Client] Fixed a bug where Wayland clients would continuously
request frame callbacks while unexposed, which potentially caused crashes
on some compositors.
Fixes: QTBUG-81504
Change-Id: I16dbe51cc5a9acf1f49b4070af91e7f2c8996122
Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
For some reason, we always print a confusing message that
the wayland-egl backend is not built when configure is run.
The warning is incorrect, and since it is not worth the trouble
to find out why it isn't working, we just remove it.
Fixes: QTBUG-92925
Change-Id: I01e35f21180249c1ae0db73dc3541365fb2eff41
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
We have to apply geometry where we don't include shadows, because we
need them to be ignored in some scenarios. Also, with geometry being
already shrunk by the size of shadow margins, we have to avoid doing
it again, otherwise we can accidentally make our window smaller every
time we update its size or state.
Change-Id: I0e26ee1be8d918913125ee7f7c97de56ccc797cf
Reviewed-by: David Edmundson <davidedmundson@kde.org>
|
|
|
|
|
|
|
|
|
|
|
| |
Use PROJECT_VERSION instead of CMAKE_PROJECT_VERSION, so that the
repo project version is used in a top-level build, rather
than the version of the qt5 project.
Pick-to: 6.1 6.0
Task-number: QTBUG-92861
Change-Id: Ie829f66433d4edd7ce2d68376cecf38d6b1b642d
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add virtual QtWaylandClient::QWaylandWindow::defaultGeometry().
So this method allows a client to set the desired default geometry.
Otherwise, if the geometry of the window is null, the window
with the hard-coded geometry size will be displayed for a while
when starting a client application.
Change-Id: I18c50f8f390c2b8e1a2c3d8e4641b896df4d6c3f
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
|
|
|
|
|
|
|
| |
If flushRequest is connected with aboutToBlock, the flushRequest
may consumes all events so that processEvents might be blocked in forceRoundTrip.
Change-Id: I12b2c506e8442bf0e75f6ab6e418d3e1eea6d68c
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
|
|
|
|
|
|
|
| |
Use a virtual method keysymToQtKey for Qt key code translation, so that
it can be customized by a descendant class if needed.
Change-Id: I3b48346a63e2c6f134230fe15279faa95abe11a0
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
At the moment, we are forcing user to choose to either compose or use
the text-input channel. This patch brings some of the QComposeInputContext
functionality in order to let applications understand dead key
combinations like they are supposed to.
Having it in QWaylandInputContext rather than in QWaylandInputDevice
should solve the problems 3aedd01271dc4f4a13103d632df224971ab2b6df had
with 57c4af2b18c0fb1d266b245a107fa6cb876b9d9e, because we are doing it
in the input context rather than before. This way, if the user is
overriding the input method (e.g. by setting QT_IM_MODULE), all the key
strokes will still be properly forwarded to the module to use.
This in turn allows us to solve https://bugs.kde.org/show_bug.cgi?id=411729
and https://bugs.kde.org/show_bug.cgi?id=405388 since we don't need to
choose anymore between physical and virual keyboards anymore.
Pick-to: 5.15
Change-Id: I8601f5d7ae21edf4b3a1191fa75877286e505588
Reviewed-by: David Edmundson <davidedmundson@kde.org>
|
|
|
|
|
|
|
|
|
|
|
|
| |
The Wayland protocol gives no guarantees about which events are part of
a frame, so handle the case where we receive wl_touch.down and
wl_touch.up within the same frame.
Fixes: QTBUG-89680
Change-Id: Ie0b9d2fb950fb0d9a6af8dd8ad2fa55a5efa71e6
Pick-to: 5.15 6.1 6.0
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
The Q_ENUMS macro is obsolete, and QWaylandOutput has contains
"Q_ENUM(Subpixel)" and "Q_ENUM(Transform)", so should remove the
"Q_ENUMS(Subpixel Transform)".
Change-Id: I2c0c58922fa76e46aeeafc198d3b7a9b6ff5127b
Reviewed-by: Liang Qi <liang.qi@qt.io>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
This type of error is likely to happen upon system logout. qFatal would
trigger sigabrt and leave unnecessary coredump on the system. Using
qWarning here would make it consistent with xcb's io error.
Pick-to: 5.15 6.0 6.1
Change-Id: I571ba007bf2453486b81837cccdbefa5f181b63d
Reviewed-by: David Edmundson <davidedmundson@kde.org>
|
|
|
|
|
|
|
|
| |
Enables leaf classes that want to bind immediately to call it without
waiting for an event loop
Change-Id: I4a885959ef54ba12a2c46f3f1a668e8c0cf1d967
Reviewed-by: David Edmundson <davidedmundson@kde.org>
|
|
|
|
|
|
|
|
|
|
|
| |
The xdgshell protocol allows us to tell the output to fill. This makes
it possible to use fullscreen confidently on systems with multiple
screens knowing that our windows won't be overlapping one another by
calling setScreen accordingly before QWindow::showFullScreen.
Pick-to: 6.1 6.0 5.15
Change-Id: I757854c3698639472f3a25ef298ddcca031e1ed5
Reviewed-by: David Edmundson <davidedmundson@kde.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The 'scale' event from wayland cannot support non-integer scaling
which was originally supported in Qt.
As default, devicePixelRatio follows the 'scale' so that the high DPI
still works as the mechanism in Wayland. But if non-integer scaling
factor such as 150% is needed, it can be supported to override the
devicePixelRatio.
Change-Id: I63a04db27bd521264b6d0904e1ddd05a572dc970
Reviewed-by: Elvis Lee <kwangwoong.lee@lge.com>
Reviewed-by: Jungi Byun <jungi.byun@lge.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Extensions are registered by initialize(), which is called as
a polish event later. Therefore the following race can happen:
1. Application #1 requests a text-input object. The compositor
sees that the seat has no such object and creates a new one.
2. Polish event is posted.
3. Application #2 requests a text-input object. Since the
polish event is not yet processed, it also creates a new one.
4. Second polish event posted.
5. Both polish events processed.
We end up with two competing text-input objects, one per client.
This in turn leads to enter/leave events not being sent correctly,
and the client may therefore end up not updating the keyboard
hints.
The result was arbitrary behavior: Sometimes the keyboard
would not open at all, whereas other times it would open with
the current input method hints, even if these do not match the
hints of the editor.
[ChangeLog][Input] Fixed a problem where a virtual keyboard
would not be updated correctly if two clients were started
at almost the same time.
Fixes: QTBUG-91096
Pick-to: 6.1 6.0 5.15
Change-Id: I262a5c15f87ba13d750425c259583919cd947ea4
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
|
|
|
|
|
|
|
|
| |
There is some useful tips that were only documented in the
README file. Make these part of the ordinary documentation with
some additional explanations.
Change-Id: Id8471aba7a1a960d9ce2befa87db45464862156d
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
|
|
|
|
|
|
|
|
| |
Texture provider and texture node use setFiltering to apply anti-aliasing.
That part was missed when use QSGSimpleTextureNode instead of QWaylandSurfaceNode.
Change-Id: Ice14e3dafca4529d8051585909870bbc987eadf6
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
|
|
|
|
|
|
|
| |
When client attaches empty buffer and commits, it updates source rect
for the new node even though buffer is locked.
Change-Id: Ibbd1ecdd054aa134093874cefcb3f86c630abf75
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
If a buffer has a protected content like DRM decoded video,
the EGL Protected content extension allows GPU to operate on the buffer.
With that, wayland-egl can get EGL image and texture from protected content.
Change-Id: Ia687fc4ebc348cb03450e06713040acaa34b1cab
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The shader for external OES texture cannot go through the normal
pipeline and thus is required to be created manually.
Note: This e.g. fixes wayland-egl backend on NVIDIA, as the
EGLStreams implementation depends on external OES buffer type.
Pick-to: 6.0 6.1
Task-number: QTBUG-89960
Change-Id: I9ab92b72f9db019be94e69a64d3fdf652dd4ed45
Reviewed-by: Jaeyoon Jung <jaeyoon.jung@lge.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
The lambda expression doHandleExpose() is used in handleFrameCallback()
to deal with exposure.
In order to support platform specific implementation for frame callback,
make the method doHandleExpose() into a virtual protected member
doHandleFrameCallback() in QWaylandWindow.
Change-Id: I8b22d4a552c72db1620d606929005917588c680d
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
|
|
|
|
|
|
|
|
| |
Factory functions in QWaylandDisplay::registry_global() can be overridden.
Later, other classes instantiated in the registry_global can support
platform specific implementation with inheritance and some factory function.
Change-Id: I92ce574e049b8c91587687cc7c30611f3dfdbe56
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Check if the new window size is different from the size requested
previously before calling wl_egl_window_resize. It addresses the issue
where repeated setGeometry calls between two sizes might not work as
expected. The problem occurs when wl_egl_window_get_attached_size does
not get the same size that was requested by the previous setGeometry
call. If the returned size happened to match the new size instead,
we would mistakenly skip the resize.
Change-Id: Iafe4a91cc707f854b9099b6109b6be1423d7bd29
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
|
|
|
|
|
|
|
|
| |
Window content geometry should not include invisible portions of the
decorations, like shadows. This is stated in xdg-shell specificification
and in the description for this method.
Change-Id: I444fe9e28f0f175d2051be5c704efa7658bd45fb
Reviewed-by: David Edmundson <davidedmundson@kde.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We can already have shadows to be part of decoration margins, but we
need a way to also get size of shadow margins itself, because they
should be ignored for the purposes of aligning, placing and constraining
windows.
This change breaks API/ABI compatibility of QWaylandAbstractDecoration
plugin, however, as stated in the header file, it is a subject of change
and its API is not meant to be stable. Alternatively we can make this a
separate method.
Change-Id: Ib2c9982e16c4acb13a83757e6371022c0a89b74e
Reviewed-by: David Edmundson <davidedmundson@kde.org>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
Size we use to calculate margins region already contains size including
margins. This resulted into bigger region and not properly damaging
region we need to update.
Pick-to: 5.15 6.0 6.1
Change-Id: Id1b7f4cd2a7b894b82db09c5af2b2d1f1f43fa2a
Reviewed-by: David Edmundson <davidedmundson@kde.org>
|
|
|
|
|
|
|
|
|
| |
Right now if one changes QtWaylandScanner you need to do a clean build
to see the changes.
Change-Id: I3fc9f37a25550880328363b07b1bb5713c8df2e6
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Reviewed-by: David Edmundson <davidedmundson@kde.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When a subsurface is moved, we need the parent window to commit to apply
that move. Ideally we want this in sync with any potential rendering on
the parent window.
Currently the code calls requestUpdate() which acts more like a frame
callback; it will only do something if the main QWindow considers itself
dirty.
We want to force a repaint, which is semantically more similar to an
ExposeEvent.
Fixes: QTBUG-86177
Pick-to: 5.15
Change-Id: I30bdfa357beee860ce2b00a256eaea6d040dd55c
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
Relying on the compositor version only works for the core protocols.
Using the version of our relevant object is more extensible and relies
on less caching.
Pick-to: 6.1
Change-Id: I1044e43a1e24a25359db95988c9956f4f1b5d35f
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
qmldir files to be generated by the cmake build procedure and don't
need to be stored in the source tree.
Task-number: QTBUG-88263
Change-Id: Id32303457ae8983a1a6ec102a459a28bdcac8618
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
|
|
| |
The opaque area doesn't take window decorations into account, which may
result into possible graphical artefacts.
Pick-to: 5.15 6.0 6.1
Change-Id: I1606e8256e7e204dad927931eb1221b576e227fd
Reviewed-by: David Edmundson <davidedmundson@kde.org>
|
|
|
|
|
|
|
|
| |
Allow making derived class from QWaylandQuickSurface and its private class
Change-Id: I223f02d053333c92c2dcf51044094966e8fd4029
Reviewed-by: Hyungchan Kim <hyungchan2.kim@lge.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Identify the sender of set_cursor request to determine
surfaces that the cursor surface is associated with.
New signal cursorSurfaceRequested is added.
And the old signal cursorSurfaceRequest is deprecated.
A quote from the wayland protocol spec -
"The cursor actually changes only if the pointer focus for this device
is one of the requesting client's surfaces or the surface parameter is
the current pointer surface."
Pick-to: 6.1
Change-Id: I1cd1345d6479877925c200859868ae8717afd1fa
Reviewed-by: Elvis Lee <kwangwoong.lee@lge.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
If the buffer format is external OES, use fromNativeExternalOES to set
the correct texture flag.
Task-number: QTBUG-89960
Change-Id: Ia72f2833c9fac580d099959af9dcb28b9c477c55
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Using input method hints to request things like digits-only
etc. did not work with the specialized Qt input method for two
reasons: First of all the full state of the editor needs to be sent
to the keyboard when the focus object is set.
But even fixing this, it turned out that the recipient was not
actually registering the input methods hints, but just overwriting
the function argument with itself.
Fixes: QTBUG-91206
Pick-to: 6.0 6.1
Change-Id: I1b8a3e92cc912bc06b6a2a60f8ea280393cd226e
Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
Reviewed-by: David Edmundson <davidedmundson@kde.org>
|
|
|
|
|
|
|
|
|
| |
QtWaylandClient can be inherited to support platform specific
implementaton.
Change-Id: Ie0f4aa28dbb2dcd6b1245cb14e23f3b45e687400
Reviewed-by: Elvis Lee <kwangwoong.lee@lge.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
|
|
|
|
|
|
|
| |
Fix problem the surface item gets shrunk as a null buffer is attached to
its surface even though its buffer is locked.
Change-Id: I28afccbae4f82d9d2f831d29e808873bb0cbd514
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently in a multi-process drag and drop when the other client accepts
a given mimetype for dropping it calls accept, which is received by the
client, but the drag cursor is never updated.
Instead the drag cursor was updated in the data_device_enter events
which only works if we are operating within one process.
The code existed to handle this existed but both the targetChanged
signal and the dragSourceTargetChanged were unused.
Change-Id: I443f31f1b2ef72d4b5eadaf7115f97544dac883a
Reviewed-by: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|