summaryrefslogtreecommitdiffstats
path: root/src/plugins/shellintegration/qt-shell
Commit message (Collapse)AuthorAgeFilesLines
* Client: Use synchronous delivery for geometry eventsDavid Edmundson2024-10-251-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | This simplifies the data flow and reduces the paths for some races with threaded rendering. Making all events synchronous does not work due to application logic having nested event loops. The design is all normal wayland events are flushed at the end of each dispatch so that everything remains ordered. When a configure event is received applying that state is queued. When it is applied, all events emitted from this are flushed. Application driven geometry changes are also synchronous. The old code to manage frame synchronization is removed, this attempted to not apply configure events whilst a frame is in flight. It doesn't work properly as the render thread could start on the next frame whilst the main thread processed the resize. It is problematic in this port as the mutexes will cause deadlocks with sync delivery. Task-number: QTBUG-121731 Fixes: QTBUG-117762 Fixes: QTBUG-119112 Change-Id: I5802b4006d307a45468767d68c3ad40078df5703 Reviewed-by: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
* client: Run waylandscanner with private-codeDavid Redondo2024-10-211-0/+1
| | | | | | | | | | This is the recommended mode, and failing to use private-code makes libraries expose generated symbols like wl_shm_interface, which may conflict with symbols from libwayland leading to unexpected behavior or aborts. Change-Id: Ifcb701a8670b339d24b13f2812c10493a64ee060 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* CMake: Annotate some targets with SBOM informationAlexandru Croitor2024-07-121-0/+1
| | | | | | | Pick-to: 6.8 Task-number: QTBUG-122899 Change-Id: I32c1489bbb3e3a48377f6aef94e4cd639257c9a1 Reviewed-by: Lucie Gerard <lucie.gerard@qt.io>
* Client: Split requests to set window and content geometryVlad Zahorodnii2024-06-262-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, QWaylandShellSurface::setWindowGeometry() serves several purposes. It's used to specify the bounds of the content when using client side decorations (not preferred but the one that's painted) and it's used to tell the compositor the preferred window size. These two use cases are very different in nature. This change introduces QWaylandShellSurface::setContentGeometry() request, which can be used to communicate the bounds of the client side decorated content. The content geometry is specified in the surface-local coordinate system, i.e. 0,0 is the main surface's top left corner. QWaylandShellSurface::setWindowGeometry() takes window geometry in the global coordinate system, excluding the drop shadows. [ChangeLog][QtWaylandClient][Important Behavior Changes] The QWaylandShellSurface::setWindowGeometry() function is no longer suitable for communicating the bounds of client side decorated content. Custom shell implementations should use QWaylandShellSurface::setContentGeometry() instead. Change-Id: I134ce4f0866d3abbe7050ed6769dc586210eac27 Reviewed-by: David Edmundson <davidedmundson@kde.org> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Remove QWindow forward declarations in namespacesFriedemann Kleint2023-02-131-1/+0
| | | | | | | | | They cause clashes in CMake Unity (Jumbo) builds. Pick-to: 6.5 Task-number: QTBUG-109394 Change-Id: Idc0d0baeef4b92f61ed67d9a850b5ad3422f9146 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* client: Implement QNativeInterface::Private::QWaylandWindowDavid Redondo2022-12-081-0/+2
| | | | | | | Task-number: QTBUG-94729 Change-Id: Ib79f3199a4518700aa032c5ca4760a2b53c401e5 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: David Edmundson <davidedmundson@kde.org>
* Change the license of all CMakeLists.txt and *.cmake files to BSDLucie Gérard2022-08-231-1/+1
| | | | | | | Task-number: QTBUG-105718 Change-Id: Icb25ea4e07a38eea81f55ed59c6d3b9d37602626 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* Add license headers to cmake filesLucie Gérard2022-07-081-0/+3
| | | | | | | | | | | | CMakeLists.txt and .cmake files of significant size (more than 2 lines according to our check in tst_license.pl) now have the copyright and license header. Existing copyright statements remain intact Task-number: QTBUG-88621 Change-Id: Ib014757184540728f40df71cd580f01e85fbbb56 Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* CMake: Get rid of a few warningsAlexandru Croitor2022-06-291-1/+1
| | | | | | | | | | | Plugins should not link publicly to libraries. Don't use deprecated TYPE option of qt_add_plugin. Amends d89c8920f3b82dd2098971b5a66c4b9c75da5af0 Pick-to: 6.3 6.4 Change-Id: I0b5ad54e802147778b1a979b16ff1c2c47eb8c5b Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* Keep toplevel windows in the top left corner of the screenDavid Redondo2022-06-221-0/+1
| | | | | | | | | | | | | | | | We can't know the actual position of a window on the screen. This causes an issue when Widgets try to position a popup/menu absolutely and keep it on the screen when the screen geometry doesn't include (0,0). Instead report their positions always as the top left corner of the screen that they are on. This new behavior can be disabled for qt-shell or via an environment variable by users that rely on the old behavior. Fixes: QTBUG-85297 Change-Id: Iacb91cb03a0df87af950115760d2f41124ac06a3 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: David Edmundson <davidedmundson@kde.org> Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
* Use SPDX license identifiersLucie Gérard2022-06-105-190/+10
| | | | | | | | | | | 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>
* QtWaylandClient: use the CMake exports.h supportThiago Macieira2022-04-282-2/+2
| | | | | | | | | | | | The one in qtwaylandglobal.h was wrong. It just happened to work on Linux because the lack of import wasn't an error... until GCC 12 with -mno-direct-extern-access. Pick-to: 6.3 Change-Id: If05aeeb7176e4f13af9afffd16e8535b469f9158 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Use PRIVATE linking for pluginsAlexey Edelev2022-01-131-2/+2
| | | | | | | | Fixes: QTBUG-99760 Pick-to: 6.3 Change-Id: I28e6f7e5dfe605224a654c98b51cc1f686d648b2 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Remove QWaylandShellIntegration::findGlobalPaul Olav Tvete2021-12-092-25/+6
| | | | | | | | | | | | This is no longer necessary now that the recommended way of creating custom shells is to use QWaylandShellIntegrationTemplate. This also restores the old internal API in use by existing shells. Task-number: QTBUG-94330 Change-Id: I0fa0ba0d928baa2edf5d68e879558081026436c8 Reviewed-by: Vlad Zahorodnii <vlad.zahorodnii@kde.org> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> Reviewed-by: David Edmundson <davidedmundson@kde.org>
* Introduce new qt-shell and an API for custom shellsPaul Olav Tvete2021-12-027-0/+621
Adds a new API for writing custom shell extensions. This API is supported, but semi-public. Binary compatibility is not guaranteed. Also adds qt-shell, a new shell that maps directly to the QWindow API, and provides functionality that Qt provides on other window systems, such as absolute window positions and window activation. This shell is not intended for use on the desktop. This is a squashed commit of a development branch consisting of approximately 60 changes. Contributors: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> Paul Olav Tvete <paul.tvete@qt.io> Task-number: QTBUG-94330 Task-number: QTBUG-91542 Change-Id: I419b6bd8179fe03e4da47d328c7ff4b4795b8a91 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> Reviewed-by: David Edmundson <davidedmundson@kde.org> Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>