<table><tr><td style="">graesslin created this revision.<br />graesslin added a reviewer: Plasma on Wayland.<br />Restricted Application added a subscriber: plasma-devel.<br />Restricted Application added a project: Plasma on Wayland.</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D2102" rel="noreferrer">View Revision</a></tr></table><br /><div><strong>REVISION SUMMARY</strong><div><p>This change introduces support for the unstable xdg-shell interface in<br />
the server. The implementation is based on version 5 of the unstable<br />
interface. This is the version used by toolkits like e.g. GTK.</p>

<p>There is also a version 6 of the protocol under development which is<br />
incompatible. This makes it difficult to implement it in a backward<br />
compatible way.</p>

<p>Because of that the implementation is a little bit different to other<br />
interfaces and inspired by the TextInput interfaces:<br />
On client side an XdgShell class is exposed which does not represent<br />
it directly. Instead it delegates everything to an XdgShellUnstableV5<br />
implementation. For the Surface/Popup the same is done.</p>

<p>In the Registry it's possible to create an XdgShell and it accepts<br />
the XdgShellUnstableV5 and in future will accept XdgUnstableV6, etc.</p>

<p>On server side it also follows the approach from TextInput. That is<br />
there is a version enum which gets passed to the factory method in<br />
Display. It currently supports only V5, but in future can be extended<br />
for V6. As there is lots of similar code between wl_shell, xdg_shell<br />
and in future xdg_shell_unstable_v6 a templated GenericShellInterface<br />
class is added which combines the common parts.</p></div></div><br /><div><strong>REPOSITORY</strong><div><div>rKWAYLAND KWayland</div></div></div><br /><div><strong>BRANCH</strong><div><div>xdg-shell</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D2102" rel="noreferrer">https://phabricator.kde.org/D2102</a></div></div><br /><div><strong>AFFECTED FILES</strong><div><div>autotests/client/CMakeLists.txt<br />
autotests/client/test_wayland_registry.cpp<br />
autotests/client/test_xdg_shell.cpp<br />
src/client/CMakeLists.txt<br />
src/client/protocols/xdg-shell-unstable-v5.xml<br />
src/client/registry.cpp<br />
src/client/registry.h<br />
src/client/xdgshell.cpp<br />
src/client/xdgshell.h<br />
src/client/xdgshell_p.h<br />
src/client/xdgshell_v5.cpp<br />
src/server/CMakeLists.txt<br />
src/server/display.cpp<br />
src/server/display.h<br />
src/server/generic_shell_surface_p.h<br />
src/server/shell_interface.cpp<br />
src/server/shell_interface.h<br />
src/server/xdg_shell_interface.cpp<br />
src/server/xdg_shell_interface.h<br />
src/server/xdg_shell_interface_p.h<br />
src/server/xdg_shell_v5_interface.cpp<br />
src/server/xdg_shell_v5_interface_p.h<br />
src/tools/mapping.txt</div></div></div><br /><div><strong>EMAIL PREFERENCES</strong><div><a href="https://phabricator.kde.org/settings/panel/emailpreferences/" rel="noreferrer">https://phabricator.kde.org/settings/panel/emailpreferences/</a></div></div><br /><div><strong>To: </strong>graesslin, Plasma on Wayland<br /><strong>Cc: </strong>plasma-devel, jensreuterberg, sebas<br /></div>