summaryrefslogtreecommitdiffstats
path: root/src/compositor/extensions/qwaylandxdgshell.cpp
Commit message (Collapse)AuthorAgeFilesLines
* compositor: Implement xdg_dialog_v1Paul Olav Tvete2024-04-121-0/+37
| | | | | | | | | | | Implement xdg_dialog_v1 on the compositor side. This adds a new properties in the QML API: XdgToplevel::modal ShellSurface::modal Task-number: QTBUG-90005 Change-Id: Ie80358bc59c3dabc6e841b65d193c8ca56bacde3 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Doc: Use correct module identifiers in QML documentationTopi Reinio2023-06-081-44/+44
| | | | | | | | | | | | | | | | Multiple \qmlproperty, \qmlmethod, and \qmlsignal topics used an incorrect QML module identifier. With upcoming changes to QDoc these will start to generate documentation warnings. Fix the commands to either use the correct identifier, or remove the identifier as QDoc is capable of resolving the parent QML type without it. In passing, fix a documentation linking issue. Pick-to: 6.6 6.5 Change-Id: I5a562acc5f135d36c036ea1c1cc56218c23833b8 Reviewed-by: Andreas Eliasson <andreas.eliasson@qt.io>
* Port from qAsConst() to std::as_const()Marc Mutz2022-10-101-1/+1
| | | | | | | | | | | | | | We've been requiring C++17 since Qt 6.0, and our qAsConst use finally starts to bother us (QTBUG-99313), so time to port away from it now. Since qAsConst has exactly the same semantics as std::as_const (down to rvalue treatment, constexpr'ness and noexcept'ness), there's really nothing more to it than a global search-and-replace. Task-number: QTBUG-99313 Change-Id: Ia64c6615ee81f7ad5d0658449b0ee347c3db8c29 Reviewed-by: David Edmundson <davidedmundson@kde.org>
* Use SPDX license identifiersLucie Gérard2022-06-101-28/+2
| | | | | | | | | | | Replace the current license disclaimer in files by a SPDX-License-Identifier. License files are organized under LICENSES directory. Pick-to: 6.4 Task-number: QTBUG-67283 Change-Id: I106d3a5d1a7b96250380b6f51a48f3b19d10e4d9 Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* QtWaylandCompositor: includemocsLiang Qi2022-06-011-0/+2
| | | | | | | Pick-to: 6.3 6.2 5.15 Task-number: QTBUG-103295 Change-Id: I2311465d5341fc5902981d80ab0a117dd2df002d Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* Docs: Add "instantiates" keywordsKai Uwe Broulik2021-04-261-0/+4
| | | | | | | | | 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>
* Doc: Remove version numbers for import statementJerome Pasion2020-11-261-1/+1
| | | | | | | | | | -recommend using the import statement without versions for Qt 6.0 -update use of \qml snippet without \QtMinorVersion Task-number: QTBUG-87155 Pick-to: 6.0 6.0.0 Change-Id: Ibbde1698e04368a30eb4013940bbd8d9070625b3 Reviewed-by: Kai Koehne <kai.koehne@qt.io>
* Replace remaining LGPLv3 headers in QtWaylandCompositor with GPLv3Kai Koehne2020-10-271-17/+10
| | | | | | | | | | | | Use same header as for the rest of the module. This was forgotten in commit bb1b46a4862e0a5 Pick-to: 5.15 Change-Id: I7e61b43f0387a9affa9488566cb5aaca51b3bc0b Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Move XdgShell types into their own importEskil Abrahamsen Blomfeldt2020-07-091-5/+5
| | | | | | | | | | | | | We want extensions to be accessible from submodules to QtWayland.Compositor, since this makes it easier to deprecate and remove things as they become outdated. [ChangeLog][XdgShell] Moved XdgShell types from QML import QtWayland.Compositor to QtWayland.Compositor.XdgShell. Task-number: QTBUG-68840 Change-Id: I74bf6e31dad1a05151f547ea5e5ff043128512cd Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Use QList instead of QVectorJarek Kobus2020-06-081-6/+6
| | | | | | Task-number: QTBUG-84469 Change-Id: I4bc7b2eb2913fc828f09f96e21480b76cabf8656 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Fix compiler warningsPaul Olav Tvete2020-01-081-3/+3
| | | | | Change-Id: Ie0bed19704bed89044d3cf25e7aaa1f740a4b39a Reviewed-by: Johan Helsing <johan.helsing@qt.io>
* Merge remote-tracking branch 'origin/5.13' into 5.14Johan Klokkhammer Helsing2019-09-161-2/+2
|\ | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/client/qwaylanddatadevice.cpp src/client/qwaylandinputcontext.cpp src/client/qwaylandinputdevice.cpp src/client/qwaylandwindow.cpp src/compositor/compositor_api/compositor_api.pri src/compositor/compositor_api/qwaylandquickitem.cpp Change-Id: Ice0d8c7d869c9c46113d6ee6ba3adf895a71d58f
| * Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-09-081-2/+2
| |\ | | | | | | | | | Change-Id: I5d587b79b96d2b44f1975419a658c259c63fa30d
| | * Make QT_WAYLAND_COMPOSITOR_QUICK a featureUlf Hermann2019-08-291-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The define was only set when building Qt, not when including public headers in application code. Therefore, the sizes of objects did not match between the client code that calls new and the constructor inside Qt. Unfortunately, adding the additional members breaks binary compatibility. This has already happened between 5.11 and 5.12. It just wasn't apparent from the headers. If we removed the members again now, we would break binary compatibility again. Therefore, the best course of action seems to be acknowledging the break and adding the members also in the headers. [ChangeLog][Compositor][Important Behavior Changes] Between version 5.11 and 5.12 binary compatibility for the wayland compositor module was broken by adding an additional member to various classes. This was not apparent from user code as the member was behind an #ifdef which would only be set while compiling Qt. As several versions of Qt incompatible to 5.11 have already been released now, rolling back the incompatible change would introduce further incompatibility. Therefore, the change is made consistent by unconditionally adding the member to the headers. Fixes: QTBUG-75677 Change-Id: I3c1ee309ad8e0cd0b6389a76fd1d91e6e2be495c Reviewed-by: Johan Helsing <johan.helsing@qt.io> Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* | | Eradicate Q_FOREACH loops [1/2]: trivial casesMarc Mutz2019-05-211-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In this patch, we port Q_FOREACH loops to C++11 ranged-for loops. All cases are trivial in the sense that either the argument is already const or is trivially marked as const, either by qAsConst(), or, in the case of rvalues, by storing to a const auto temporary first. In addition, all loop bodies are clear enough to confirm that the container we iterate over is not changed under iteration. This does not exclude cases where a loop is prematurely exited just after calling a modifier on the container, as that is safe, if not especially elegant. Change-Id: I87a63f07797437d421567d60e52305391a3c4f21 Reviewed-by: Johan Helsing <johan.helsing@qt.io>
* | | Add QWaylandXdgPopup::sendPopupDoneJohan Klokkhammer Helsing2019-05-101-0/+20
|/ / | | | | | | | | | | | | | | | | | | | | | | | | ...and one for QWaylandXdgPopupV6. We already have similar API for xdg-shell v5. [ChangeLog][Compositor] Added QWaylandXdgPopup::sendPopupDone, which will dismiss a popup. Fixes: QTBUG-75652 Change-Id: I9c36ee38ee606016587ab88d5b015f29594019e1 Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
* | Make QtWayland.Compositor available under 1.QT_MINOR_VERSIONJohan Klokkhammer Helsing2019-05-011-3/+4
| | | | | | | | | | | | | | | | | | | | It was already available under 1.13, but this ensures it will stay available for future minor versions of Qt and also use the latest minor version in the examples. Fixes: QTBUG-74042 Change-Id: I4a6a4f762ed0af565af32931971a1df7f33a3ba1 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* | Compositor xdg-shell: Warn when clients supply invalid anchor rectsJohan Klokkhammer Helsing2019-01-181-5/+14
| | | | | | | | | | | | | | | | | | | | | | From the protocol: "When the xdg_positioner object is used to position a child surface, the rectangle may not extend outside the window geometry of the child's parent surface." Adds a warning for both v6 and stable when clients do this. Change-Id: I575a89785f45c080d488be748ec099569b38ea9b Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
* | Add convenience for converting wl_resource * to wrapper typesJohan Klokkhammer Helsing2018-11-211-9/+7
| | | | | | | | | | Change-Id: Ieb2f9706ac707ff878165d3f9001e4a28b8ff1ce Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* | Compositor: Fix coordinate system inconsistenciesJohan Klokkhammer Helsing2018-11-161-2/+2
|/ | | | | | | | | | | | | | | | | | | | | | | Several properties were using pixel coordinates and surface coordinates without converting. [ChangeLog][Compositor] QWaylandSurface::destinationSize has been added which returns the size of the surface that will be displayed on the screen in surface coordinates. [ChangeLog][Compositor] Fixed a bug where QWaylandSurface::inputRegionContains would return true for some points outside surfaces with buffer scale > 1. [ChangeLog][Compositor] Fixed a bug which caused ShellSurfaceItems for surfaces with buffer scale > 1 to move too much when resizing interactively. It also gets rid of all calls to QWaylandSurface::size, which confusingly returns the size of the surface's buffer in pixel coordinates. Most properties now use destionationSize's surface coordinates consistently. Hopefully, QWaylandSurface::size can be renamed or removed in Qt 6. Change-Id: I007256a8df7759cf74fbfd51624fa1f90c083336 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Remove confusing elses after returnsJohan Klokkhammer Helsing2018-09-141-4/+2
| | | | | Change-Id: I0ba39df637f6e5ce93ba57f40f279c81532e9289 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Compositor: Add XdgToplevel::xdgSurfaceJohan Klokkhammer Helsing2018-09-071-0/+17
| | | | | | | Similar to the property we already have for popups, XdgPopup::xdgSurface. Change-Id: I1a0b77b28a35597139fcf381a4b345ccaa93d626 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Compositor xdg-decoration: Fix crash when clients disconnectJohan Klokkhammer Helsing2018-09-051-0/+13
| | | | | | | | | | | | | | | | | If clients were disconnected without shutting down nicely, e.g. if Qt clients were terminated with SIGINT, then QWaylandXdgToplevelDecorationV1 would be deleted before its Wayland resource, causing a crash in the resource destroy handler. This switches to a raw pointer in the toplevel, which is now cleared when the decoration is deleted. Deletion order is also ensured by conditionally destroying the resource in the toplevel destructor. Warnings are also printed when clients destroy objects in the wrong order (protocol errors). Change-Id: I8c24becb82e298e93cd45d70a004d8d23ead382b Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Compositor: Add documentation for xdg-decoration-unstable-v1Johan Klokkhammer Helsing2018-09-051-0/+28
| | | | | | | And QWaylandXdgToplevel::decorationMode Change-Id: I52146b55757b6866061c7b06d2595e233d6af1ff Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Compositor: Fix nullptr dereferences in fromResource functionsJohan Klokkhammer Helsing2018-08-291-2/+6
| | | | | | | | | If there was no resource for the given wl_resource*, don't try to dereference it. Change-Id: I3a27a5805699148bb26029e8b4179042c3c1117a Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
* Compositor xdg-shell: Respect min and max sizeJohan Klokkhammer Helsing2018-08-171-3/+8
| | | | | | | | [ChangeLog][Compositor] xdg-shell minimum and maximum sizes are now respected when resizing. Change-Id: Iaf6a2bd283117e948fda6693530e08f68f755a17 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Compositor API: Add xdg-decoration unstable v1 supportJohan Klokkhammer Helsing2018-08-171-0/+6
| | | | | | | | And add an example with server-side window decorations. Task-number: QTBUG-69934 Change-Id: Ic3984b50cf7574cae5135dea51eb4b1c80bb45a7 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Compositor: Add QWaylandXdgToplevel::fromResourceJohan Klokkhammer Helsing2018-08-171-5/+8
| | | | | Change-Id: I0f388a4c4f6b765c34d115a6583982d86bc82557 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Client: Handle conversion from xdg-shell resize edges correctlyJohan Klokkhammer Helsing2018-08-161-30/+41
| | | | | | | | | There are two different types of edges in xdg-shell. Make it more explicit which ones we are using. Change-Id: I7e18a376b359be8e06f96cae897d7ccbc62e3c3e Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
* Compositor API: Add xdg-shell stableJohan Klokkhammer Helsing2018-08-151-0/+2020
| | | | | | | | | | | | | | | [ChangeLog][Compositor API] Added APIs for xdg-shell stable. Code copied from the V6 implementation with suffixes and prefixes removed. Otherwise a few minor edits, such as renaming xdg_shell to xdg_wm_base, and handling the anchor and gravity edges no longer being bitfields. Examples that used v6 have been updated to use stable instead, or, in some cases, to support both. Task-number: QTBUG-66784 Change-Id: Ia619b478a938fdcd9b47af8a8df2d7fcc4406204 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Rename the QWaylandXdg* classes to QWaylandXdg*V5Giulio Camuffo2016-09-051-1190/+0
| | | | | | | | This frees the QWaylandXdg name for the hopefully coming stable version of xdg-shell. Change-Id: I9beb9b035c6497fb45bee5c9104485b564ca0619 Reviewed-by: Johan Helsing <johan.helsing@qt.io>
* Merge remote-tracking branch 'qt/5.7' into 5.8v5.8.0-alpha1Liang Qi2016-08-281-2/+2
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/compositor/compositor_api/qwaylandseat.cpp src/compositor/compositor_api/qwaylandview.cpp tests/auto/compositor/compositor.pro tests/auto/compositor/compositor/testinputdevice.cpp tests/auto/compositor/compositor/testinputdevice.h tests/auto/compositor/testinputdevice.cpp tests/auto/compositor/testinputdevice.h tests/auto/compositor/testseat.cpp tests/auto/compositor/testseat.h Change-Id: I98e045908dd964e5d4120bd35e71b8839c0d923a
| * Doc: Language editsVenugopal Shivashankar2016-08-171-2/+2
| | | | | | | | | | | | | | Task-number: QTBUG-53147 Change-Id: I353cf18b9661b5eb2371072f8091dc890fc7fcf0 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
* | compositor: Add shell property to xdg-shellPier Luigi Fiorini2016-08-151-0/+36
| | | | | | | | | | | | | | | | | | Add a shell property to QWaylandXdgSurface and QWaylandXdgPopup like QWaylandWlShellSurface. Change-Id: Id321f2ba8a48284c31fe67c4600c86f5c134b68d Reviewed-by: Johan Helsing <johan.helsing@qt.io> Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* | Compositor API: rename QWaylandInputDevice to QWaylandSeatJohan Klokkhammer Helsing2016-08-111-17/+17
| | | | | | | | | | | | | | | | | | | | | | | | The name QWaylandInputDevice could be confusing and misleading: - A QWaylandInputDevice was not one input device, but a collection of many. - Classes that sounded like they should inherit from it did not, i.e: QWaylandKeyboard, QWaylandPointer and QWaylandTouch. - The Wayland protocol already has another term for this, which is seat. Change-Id: I9d9690d5b378075d9dddaeb8cf18395c7f47603e Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
* | Merge remote-tracking branch 'qt/5.7' into devPaul Olav Tvete2016-08-041-2/+2
|\| | | | | | | Change-Id: Ib22055ac52c0bb36081242948c72332db4e5ac64
| * Doc: several minor link issues in QtWaylandNico Vertriest2016-08-021-2/+2
| | | | | | | | | | | | Change-Id: I9e656b02e1b820e2257d95948650c541656192b4 Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io> Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
* | Rename createSurface and similar signalsJohan Klokkhammer Helsing2016-08-031-4/+4
| | | | | | | | | | | | | | | | | | | | | | * createSurface -> surfaceRequested * createXdgSurface -> xdgSurfaceRequested * createXdgPopup -> xdgPopupRequested * createShellSurface -> wlShellSurfaceRequested * shellSurfaceCreated -> wlShellSurfaceCreated Change-Id: I715a927242130d7504955002a6a64a2bac516d46 Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
* | Compile with -no-openglJohan Klokkhammer Helsing2016-07-201-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | QtWayland has not compiled without OpenGL for a while. This patch fixes the compilation issues and removes the old config variable, "QT_WAYLAND_GL_CONFIG" and instead checks for the presence of "opengl" in "QT_CONFIG". A new define is also introduced, QT_WAYLAND_COMPOSITOR_QUICK, because it may eventually be possible to use create a QtQuick compositor without OpenGL. Task-number: QTBUG-54322 Change-Id: Ica7b3b320212d4ae1f8b1053725b73c83739c73c Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
* | Rename sendUnMaximized to sendUnmaximizedJohan Klokkhammer Helsing2016-07-121-1/+1
| | | | | | | | | | Change-Id: I20add5c8b12e1345ce50c009d8bae80fde9806e1 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* | Emit a signal when QWaylandXdgSurface changes window typePier Luigi Fiorini2016-06-231-5/+40
| | | | | | | | | | | | | | | | | | | | | | | | This allows compositors to track when a window changes type and act accordingly (for example do a different show animation). Compositors might also want to keep track of the window type in order to filter out windows when presenting them to the user, think of a spread windows effect that only shows top level windows. Change-Id: I13c0ed3db2bdc6318ff1f4345d065e188b7c2435 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* | Take buffer scale into account when calculating unset window geometryJohan Klokkhammer Helsing2016-06-231-7/+30
| | | | | | | | | | | | | | | | | | This fixes a resize issue where the window would scale to be bufferScale times the size it should have been. Change-Id: I4d3eee52d54a063c0a617a053cbe05b351f18f76 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@hawaiios.org>
* | Add QML popup support for xdg_shellJohan Klokkhammer Helsing2016-06-151-3/+8
| | | | | | | | | | Change-Id: I5b35ff3b1c6c2dc884b52e6f077c0f2bb2db68a2 Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
* | Add position property to QWaylandXdgPopupJohan Klokkhammer Helsing2016-06-071-5/+28
| | | | | | | | | | Change-Id: I29c48ae9c44fc5601200a6bb6f6a7dbd9c8baba3 Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
* | Rename xdg surface request<state> methods send<state>Johan Klokkhammer Helsing2016-05-311-4/+4
|/ | | | | | | | It could be confusing to have methods that cause Wayland events to be named request*. Change-Id: I6567f9e8fd9370e574516e97cd49858e2bf34829 Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
* Revert "Add position property to QWaylandXdgPopup"Johan Klokkhammer Helsing2016-05-271-28/+5
| | | | | | | | | | This commit would have broken source and binary compatibility between 5.7.0 and 5.7.1. This reverts commit 20692ad15b8ac0c24b12d30609f061a740c87f23. Change-Id: Ic4156571889ec08a708e67c55d461d3052ce0ad0 Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
* Add position property to QWaylandXdgPopupJohan Klokkhammer Helsing2016-05-241-5/+28
| | | | | | | | Store the position relative to the parent Change-Id: Iccae120b70e98388d18e4867e21a3a8c36ddd522 Reviewed-by: Erik Larsson <erik@ortogonal.com> Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
* Create a general ShellSurfaceItem to avoid duplicationJohan Klokkhammer Helsing2016-05-201-3/+9
| | | | | | | | | | | | | | | | | | XdgSurfaceItem and WlShellSurfaceItem have been removed in favor of the more general ShellSurfaceItem. An XdgSurface or a WlShellSurface can be assigned to the shellSurface property of a ShellSurfaceItem and leaves open the possibility for additional shells. A shared base class for QWaylandXdgSurface and QWaylandWlShellSurface has been added which has a factory method for creating a QWaylandQuickShellIntegration for that shell implementation. The property "shellSurface" on the ShellSurfaceItem allows QML code to attach to signals regardless of whether it's a WlShell or XdgShell client. The pure-qml example has been updated to take advantage of this. Change-Id: I9d3427586e100d6c44a24f319dd8e1486ff062ee Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
* Remove empty private class QWaylandExtensionTemplatePrivateJohan Klokkhammer Helsing2016-05-191-3/+3
| | | | | | | | Previous subclasses are now inheriting directly from QWaylandExtensionPrivate instead. Change-Id: I33ef88867fcf216a7b1441f69b7025bc2a4367dc Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
* Rename QWaylandExtension to QWaylandCompositorExtensionPaul Olav Tvete2016-05-181-14/+14
| | | | | | | | Since we have QWaylandClientExtension Change-Id: Ie8d60322c8e730bda651e06ed5db0fe1359d946e Reviewed-by: Johan Helsing <johan.helsing@qt.io> Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>