summaryrefslogtreecommitdiffstats
path: root/src/plugins
Commit message (Collapse)AuthorAgeFilesLines
* Track changes to window geometry for xdg-shell and xdg-shell-v6Pier Luigi Fiorini2019-01-154-6/+12
| | | | | | | | | | Send window geometry every time the window is resized. [ChangeLog][QPA plugin] Send window geometry every time the window is resized. Change-Id: I8f3824c31455345be2b582e7d3a55077b47851b6 Reviewed-by: Johan Helsing <johan.helsing@qt.io>
* Set size hints for xdg-shell and xdg-shell-v6Pier Luigi Fiorini2019-01-154-0/+66
| | | | | | | | | | Send minimum and maximum size hints to compositors. [ChangeLog][QPA plugin] Implement minimum and maximum size in the xdg-shell and xdg-shell-v6 shell integrations. Change-Id: I631c3348c8333d7a246b21228a92c436f5adb5dc Reviewed-by: Johan Helsing <johan.helsing@qt.io>
* Client decorations: Show menu on right clickJohan Klokkhammer Helsing2019-01-147-0/+32
| | | | | | | | | [ChangeLog][QPA plugin] A window menu is now shown when the window decorations are right-clicked (if supported by the compositor). Change-Id: I13bf0c8cd91a6e5a3b44e47114dfdc2ff0e97f3a Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
* Merge remote-tracking branch 'origin/5.12' into devLiang Qi2018-12-225-10/+10
|\ | | | | | | | | | | | | | | Conflicts: README src/hardwareintegration/client/xcomposite_share/xcomposite_share.pri Change-Id: I7cbbf39916821f0f1749e3ccab3151f68f4aa1ac
| * use new feature name xkbcommon_evdev -> xkbcommonGatis Paeglis2018-12-055-10/+10
| | | | | | | | | | | | | | | | | | The xkbcommon configure logic was refactored in qtbase/c3a963da1f9e7b1d37e63eedded61da4fbdaaf9a. For more details see the relevant commit. Change-Id: Ic1aa26846ab8266c589f6e92dc8b81aba36df58a Reviewed-by: Johan Helsing <johan.helsing@qt.io>
* | Compositor: Implement linux-dmabuf-unstable-v1Andreas Cord-Landwehr2018-12-134-0/+80
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [ChangeLog][Compositor] Added support for linux-dmabuf-unstable-v1. Implement client side DMABUF buffer sharing support by supporting the linux-dmabuf-unstable-v1 (version 3) protocol. For enabling DMABUF, set the following environment variables for the compositor: QT_QPA_PLATFORM=eglfs QT_WAYLAND_CLIENT_BUFFER_INTEGRATION=linux-dmabuf-unstable-v1 The current implementation supports the following DRM buffer formats: - RGB and RGBA - YUYV This implementation requires Mesa with the following patch applied. Otherwise, textures are not updated. The patch is contained in Mesa 18.1.5. See https://patchwork.freedesktop.org/patch/238080/ Fixes: QTBUG-66288 Fixes: QTBUG-67845 Change-Id: Id4d90337dbe0be956b0f964426ebed3f281c6c30 Reviewed-by: Johan Helsing <johan.helsing@qt.io>
* | Merge remote-tracking branch 'origin/5.12' into devLiang Qi2018-12-054-8/+10
|\| | | | | | | | | | | | | Conflicts: src/compositor/compositor_api/qwaylandquickitem.cpp Change-Id: I5e01a0731e880e3eb8eab349043756a5993e3050
| * Merge remote-tracking branch 'origin/5.12.0' into 5.12Qt Forward Merge Bot2018-12-054-8/+10
| |\ | | | | | | | | | Change-Id: Ica38060e6d624a7534660eabec604f6795970c95
| | * Only print deprecation warning when using deprecated shellsPaul Olav Tvete2018-11-072-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | Avoids printing deprecation warnings for shells that are available by default but not actually used. In particular, avoids warning about wl-shell when using ivi-shell. Change-Id: Id075e97572e6ec876ad24f369808c61a479e9b07 Reviewed-by: Johan Helsing <johan.helsing@qt.io>
| | * Client: Explicitly send expose window on first configureDavid Edmundson2018-10-312-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before 88a0246a46c30e08e9730d16cf8739773447d058 we would always call QWaylandWindow::applyConfigure which in turn sends an expose event. Without that clients do not commit their initial buffer. This adds back the expose event on the first received configure. Fixes: QTBUG-71509 Change-Id: Ica39bb23245957948e1e1f75caf4f16f7b086ef7 Reviewed-by: Johan Helsing <johan.helsing@qt.io>
* | | Merge remote-tracking branch 'origin/5.12' into devQt Forward Merge Bot2018-11-174-34/+48
|\| | | | | | | | | | | Change-Id: I6cc70da737d07a87e2b396e35f64adfeffc565bd
| * | Client: Rename m_topmostPopup to clarify its goalDavid Edmundson2018-11-144-10/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is used when creating new grabbed popups to ensure they are only created on the topmost grabbing popup as per the specification. Non-grabbing popups don't have this restriction. Change-Id: I8e2b8cd0f091688c847f81f2e5d33ce2f0df96a1 Reviewed-by: Johan Helsing <johan.helsing@qt.io>
| * | Client: Don't require an input device for non-grabbing popupsDavid Edmundson2018-11-144-26/+40
| |/ | | | | | | | | | | | | | | | | | | It's valid to create a non-grabbing XDG-popup, such as a tooltip, before an input event. The current guard should only apply for grabbing popups, otherwise tooltips created early are turned into XDG-toplevels resulting in incorrect positioning. Change-Id: I5bb59a68964ef2375c81e8b4e1a73361b9d2cbcc Reviewed-by: Johan Helsing <johan.helsing@qt.io>
* | Client: Add fullscreen shell integrationPier Luigi Fiorini2018-11-058-0/+362
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [ChangeLog][QPA plugin] Added support for fullscreen-shell unstable v1. The fullscreen_shell_unstable_v1 interface displays a single surface per output and it is used for nested compositors, where each output is rendered in a surface that is then displayed by the main compositor. For example weston could be the main compositor and a QML compositor could be launched as a client using this shell integration to display it inside weston. Change-Id: I037679a283ff03cb4bdf4b3fed59945090ec9250 Reviewed-by: Johan Helsing <johan.helsing@qt.io>
* | Merge remote-tracking branch 'origin/5.12' into devQt Forward Merge Bot2018-10-305-9/+35
|\| | | | | | | Change-Id: I1d9281750b06f7584e55759994dc6fcbcc5b2455
| * Merge 5.12 into 5.12.0Oswald Buddenhagen2018-10-304-8/+34
| |\ | | | | | | | | | Change-Id: Ic7b7999f42b1867982b9410efb5224d68e9443f8
| | * Client: Don't attach buffers to unexposed windowsJohan Klokkhammer Helsing2018-10-264-8/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QBackingStore::flush is sometimes called with an unxeposed window, in that case, don't attach the buffer to the wl_surface immediately, as that causes protocol errors with xdg_shell. Flushed buffers are instead stored until we get the first configure event. [ChangeLog][QPA plugin][xdg-shell] Fixed a bug where buffers were sometimes attached and committed before the first configure event, causing protocol errors. Fixes: QTBUG-71345 Change-Id: If9409d97bd25f6b13940c56141920a664c349c8e Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> Reviewed-by: David Edmundson <davidedmundson@kde.org>
| * | Client: Fix fullscreen regression on wl-shellJohan Klokkhammer Helsing2018-10-281-1/+1
| |/ | | | | | | | | | | | | | | | | | | | | The code for isNormal was wrong, so set_toplevel (which clears fullscreen state) would be sent unless the window was both maximized and fullscreen. Fixed it and made it a little bit more readable. Change-Id: Icaa52d3a058df064a0bd1164119af3f511cb4220 Fixes: QTBUG-71350 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> Reviewed-by: David Edmundson <davidedmundson@kde.org>
* | Merge remote-tracking branch 'origin/5.12' into devQt Forward Merge Bot2018-10-092-8/+22
|\| | | | | | | Change-Id: Ib4c65db63c2f3119fc7c157d4353c4e0ecebefb0
| * Client (xdg-shell): Only restore normal size when not maximizedJohan Klokkhammer Helsing2018-10-092-8/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | kwin and perhaps other compositors sometimes send questionable configure events with state set to maximized and size == {0,0}. Previously, we would then restore the m_normalSize, which would give us a maximized window with the size of a windowed (normal) one. A size of zero usually means that it's up to the client to decide, which makes sense for non-maximized windows, but not so much for maximized ones. This is what the protocol spec says about the maximized state: The surface is maximized. The window geometry specified in the configure event must be obeyed by the client. It's fixed in the dev version of kwin, but until then, let's be on the safe side and only resize the window if things make sense. [ChangeLog][QPA plugin] Fixed a bug where maximized windows would resize to their unmaximized size if the compositor sent an invalid configure event. Change-Id: I2371b29c82426ac48cd1c18c14c3dd0fe4f2250e Reviewed-by: David Edmundson <davidedmundson@kde.org> Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* | Don't include system versions of wayland protocolJohan Klokkhammer Helsing2018-10-0310-14/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | wayland-client.h and wayland-server.h includes protocol generated for the version of wayland.xml corresponding to the libwayland version. This becomes a problem when we want to support a version of wayland.xml that's newer than the system libwayland. The solution is to include wayland-client-core.h and wayland-client-server.h instead. These headers don't include any wayland-scanner generated code, so we can safely compile and link code generated against the version of wayland.xml that we ship. [ChangeLog] Code generated by qtwaylandscanner now includes wayland-client-core.h and wayland-server-core.h instead of wayland-client.h and wayland-server.h. This might break source compatibility for code using custom wayland extensions. Fixes: QTBUG-70553 Change-Id: Ice0cdb60ecc4f936acc0e158b96f7978549f62c1 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* | Merge remote-tracking branch 'origin/5.12' into devQt Forward Merge Bot2018-09-259-3/+164
|\| | | | | | | Change-Id: I66c91dfde14a7c252a02777cfcf0396b1d05e854
| * Add server buffer integration using Linux dma-bufPaul Olav Tvete2018-09-219-3/+164
| | | | | | | | | | | | Fixes: QTBUG-70494 Change-Id: Iaa4990fe9d39a1f9fb81f5e5f19039aa2e52dcac Reviewed-by: Johan Helsing <johan.helsing@qt.io>
* | Client: Make features for shell integrationsJohan Klokkhammer Helsing2018-09-211-7/+6
| | | | | | | | | | | | | | | | [ChangeLog][QPA plugin] Shell integrations are now features that can be enabled or disabled at build time. Change-Id: I1c48bb5d444074ac25331cb1ca8a9f49ebcd9805 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* | Decorations: Don't depend on wl_shellJohan Klokkhammer Helsing2018-09-209-46/+64
|/ | | | | | | | | | | [ChangeLog][QPA plugin] The private window decoration API method, QWaylandAbstractDecoration::startResize, now takes Qt::Edges argument instead of a wl_shell_surface_resize enum. This will break window decoration plugins written for older versions of Qt Wayland. Change-Id: I4fc9aab949e91efd48a4943f8e116f51dfc373b8 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
* Don't try to use wl_proxy_get_version with libwayland < 1.10Johan Klokkhammer Helsing2018-09-131-0/+7
| | | | | | | | The pregenerated header for xdg-shell was generated using wayland-scanner 1.13 which uses wl_proxy_get_version which was introduced in 1.10. Change-Id: I19507ff6e543d4b0aa53e0d022d680090c34ab50 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Create feature wayland-shm-emulation-server-bufferJohan Klokkhammer Helsing2018-09-102-6/+6
| | | | | | | | | And make OpenGL a requirement, in order to make builds without OpenGL work again. Fixes: QTBUG-69779 Change-Id: Iff1153b0aaca8e115f47c59c2ceb028e638e3fe9 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Prefix and suffix server buffer integrationsJohan Klokkhammer Helsing2018-09-102-4/+4
| | | | | | | | | [ChangeLog][Compositor] Features for server buffer integrations have been renamed. "drm-egl-server" is now "wayland-drm-egl-server-buffer" and "libhybris-egl-server" is "wayland-libhybris-egl-server-buffer". Change-Id: I06a9d1b1c9219c88045fe966be134ff072cd756e Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Client: Remove unused constructor for xdg-shell v5Johan Klokkhammer Helsing2018-09-062-6/+0
| | | | | Change-Id: Idcb2220237b3dba0a296fbb9a86497a3d0022d5f Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Client: Use customized version of generated files for xdg-shell-v5Johan Klokkhammer Helsing2018-09-0512-22/+1867
| | | | | | | | | | | | | Check in qtwaylandscanner and wayland-scanner generated files with renamed symbols to avoid conflicts with xdg-shell stable. When this was done on the compositor side, we thought we didn't have to do it for the client side because the conflicting symbols are used in separate plugins. Turns out this breaks static builds, though. Task-number: QTBUG-69896 Change-Id: I461df8e136b741063eafe13e858734a3aafdf020 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Client: Deprecate xdg-shell-v5 and wl-shellJohan Klokkhammer Helsing2018-09-052-0/+8
| | | | | | | | | | [ChangeLog][QPA plugin] Deprecated the shell integrations for xdg-shell-unstable-v5 and wl-shell. The stable version of xdg-shell should be used instead. Task-number: QTBUG-68838 Change-Id: Iab89059ec13efc2f72c3317a26439d7683e03e79 Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
* Client: Fix regression; drawing decorations of active windows as inactiveJohan Klokkhammer Helsing2018-08-281-2/+3
| | | | | | | | | | | | We can't trust QWindow::isActive, because it relies on focusWindow, which may be updated too late, and there might also be multiple active toplevel windows at once on Wayland. Even though Qt doesn't support multiple seats, we should still draw the decorations of active windows correctly. This implements QPlatformWindow::isActive and uses it in the decorations. Change-Id: I34d79b354e2d26694533e2319a26f24085212243 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* xdg-shell stable: Make sure popup parent is topmost popup when grabbingJohan Klokkhammer Helsing2018-08-172-3/+32
| | | | | | | | | Avoids protocol errors on Weston, gnome-shell and wlroots-based compositors. This is the same fix as 75c996e7, but for the stable version of xdg shell. Change-Id: Ic998fb920a8b1b131e42833a61e663704c8663e4 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Client: Implement xdg-decoration-unstable-v1 for SSD supportJohan Klokkhammer Helsing2018-08-146-8/+273
| | | | | | | | | | | | | | [ChangeLog][QPA plugin] Added client-side support for the xdg-decoration-unstable-v1 Wayland extension. Qt clients will now let the compositor draw the window decorations if configured through this extension. Note: The env var QT_WAYLAND_DISABLE_WINDOWDECORATION is still supported, but works on a higher level, and for all shell integrations, while xdg-decoration only works with xdg-shell stable. Task-number: QTBUG-69746 Change-Id: I9dd0331bbd8d624c6be54ed23ee3b96446d5820d Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
* Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-08-141-2/+4
|\ | | | | | | Change-Id: Ia9584a185a3d7a68a4333890ade535585ba33fee
* | Client: Log configure states to logging categoryJohan Klokkhammer Helsing2018-08-092-0/+4
| | | | | | | | | | | | | | | | | | States are not visible in WAYLAND_DEBUG output since array values are not printed there. Logging the states to the Wayland QPA logging category gives us a convenient way of seeing what states are configured. Change-Id: If71c6df3180eba3f8efb08135a67b417940c3ffe Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* | Client: Fix memory leak for xdg_popup and xdg_toplevelJohan Klokkhammer Helsing2018-08-081-4/+8
| | | | | | | | | | Change-Id: I561e2af0cdc812ea4f499525b4af0a4ab7ad8182 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* | Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-07-101-0/+2
|\| | | | | | | Change-Id: I4c25009c207ab36219976e75343a9b6398d3a42d
| * Fix static builds with libwayland-eglSamuli Piippo2018-06-291-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | There was a naming conflict between the client buffer integration, wayland-egl, and the system library libwayland-egl.so Rename the plugin binary to qt-plugin-wayland-egl to avoid the issue. This commit appends commit 83db09bd0acaafb256880e3a217ed9df0641a00a which did the same for the client plugin Task-number: QTBUG-65652 Change-Id: I245192a9f844945200209cc2e3a9f419c541d33b Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* | Draw disabled text color for inactive window decorationsJohan Klokkhammer Helsing2018-06-291-2/+4
| | | | | | | | | | | | | | Task-number: QTBUG-68834 Change-Id: Iced478d12b56fc360c0d824cf5876855d887f9a2 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
* | Merge remote-tracking branch 'origin/5.11' into devLiang Qi2018-06-283-5/+37
|\| | | | | | | | | | | | | | | | | | | | | Conflicts: src/client/qwaylandxdgsurface.cpp src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgsurfacev5.cpp src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6_p.h Done-with: Johan Klokkhammer Helsing <johan.helsing@qt.io> Change-Id: Ia39be6254a95af1c4efa831358cc06a697da3423
* | Client: Improve the look of bradientJohan Klokkhammer Helsing2018-06-251-108/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [ChangeLog][QPA plugin] The window decorations have had a redesign, they now use the window background color instead of the blue gradient. Changes: - Removed the gradient - Used QPalette::Window for color instead of QPalette::Highlight - Removed the xpm buttons as they look bad on high-dpi - Redid the non-xpm buttons, removing their border - Used anti-aliasing for cross icon (diagonal lines) - Size of buttons have been increased, to be easier to click - The position of the buttons have been shifted slightly - Reduced rounding of the corners slightly - Switched to non-bold and increased the font size for the window title Task-number: QTBUG-68834 Change-Id: I17b2464c5e2518294d795512493bfe93e9a2f550 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
* | Fix build: some shells need to link to libxkbcommonThiago Macieira2018-06-203-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | They use QtWaylandClient's private headers. In file included from qwaylandinputdevice_p.h:1, from qwaylandxdgshellv6.cpp:45: qwaylandinputdevice_p.h:69:10: fatal error: xkbcommon/xkbcommon.h: No such file or directory Change-Id: I6efb28c3145047559ec0fffd1538a642167da67f Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Johan Helsing <johan.helsing@qt.io>
* | Fix warning about extra constThiago Macieira2018-06-203-3/+3
| | | | | | | | | | | | | | qwaylandxdgsurfacev5.cpp:77:97: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] Change-Id: I6efb28c3145047559ec0fffd1538a5ce04f2721b Reviewed-by: Johan Helsing <johan.helsing@qt.io>
* | Client: Move bradient buttons inside processMouseTopJohan Klokkhammer Helsing2018-06-201-12/+15
| | | | | | | | | | | | | | To avoid them covering for the edges of the window Change-Id: Id8a1362ec11bd25f54cb2c9fbcbd562af8f283d8 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* | Client: Get rid of QWaylandShellSurface::setTypeJohan Klokkhammer Helsing2018-06-1912-67/+39
| | | | | | | | | | | | | | | | | | | | This shouldn't change any behavior, but lets the shell integrations choose if they want to use the extremely hacky QWaylandWindow::transientParent(). Hint: Not all shells need the hacks, and not all shells need them in all cases, and some shells may need even more hacks. Change-Id: Id105e4feb83cc9c14dcf07dcca55fcd5e63d4a2b Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* | Client: Use a pixel font size for window decorationsJohan Klokkhammer Helsing2018-06-191-0/+1
| | | | | | | | | | | | | | | | | | | | The window title bar's height is given in device pixels, so the font size should be as well. Task-number: QTBUG-68834 Change-Id: I5a82deb39439088dd55152fb8bae5c2d19d8b33e Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
* | Client: Fix bradient compilation error without xpmJohan Klokkhammer Helsing2018-06-191-1/+1
| | | | | | | | | | Change-Id: I8cbe939352713f643474d383da95b6d13be798a8 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* | Client: Remove applyConfigure for xdg-shell popupsJohan Klokkhammer Helsing2018-06-134-14/+0
| | | | | | | | | | | | | | | | It's just dead code, we can add it back in the unlikely event that we should need it. Change-Id: I209fe92fb160e022c992384d731964e774596f74 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* | Client: Set window geometry for xdg-shell v6 and stableJohan Klokkhammer Helsing2018-06-072-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Eventhough, according to the protocol spec, it should work perfectly fine without setting the geometry, gnome-shell 3.28.2 chokes on it and applications get stuck in the upper right corner and can't be moved. Qt seems to be the only toolkit left that doesn't set the window geometry, so let's just do it the simple, though somewhat incorrect, way. The downside of this patch, is that the unset window geometry used to include subsurfaces that extended outside the parent surface, but here we just set it to the frameGeometry of the window. Task-number: QTBUG-68575 Change-Id: I8a9d029ff6d57bd33294658e3bfd69ff08cd38c1 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>