15#include <qwayland-server-server-decoration.h>
19static const quint32 s_version = 1;
39 return ServerSideDecorationManagerInterfacePrivate::mode_None;
41 return ServerSideDecorationManagerInterfacePrivate::mode_Client;
43 return ServerSideDecorationManagerInterfacePrivate::mode_Server;
53 wl_resource_post_error(resource->handle, 0,
"Invalid surface");
57 wl_resource *decorationResource = wl_resource_create(resource->client(), &org_kde_kwin_server_decoration_interface, resource->version(),
id);
58 if (!decorationResource) {
59 wl_client_post_no_memory(resource->client());
70 const uint32_t wlMode = modeWayland(mode);
72 const auto clientResources = resourceMap();
73 for (Resource *resource : clientResources) {
74 send_default_mode(resource->handle, wlMode);
79 : QtWaylandServer::org_kde_kwin_server_decoration_manager(*display, s_version)
86 send_default_mode(resource->handle, modeWayland(
defaultMode));
99 d->setDefaultMode(mode);
104 return d->defaultMode;
113 wl_resource *resource);
126 static QList<ServerSideDecorationInterfacePrivate *> s_all;
134QList<ServerSideDecorationInterfacePrivate *> ServerSideDecorationInterfacePrivate::s_all;
140 case ServerSideDecorationManagerInterfacePrivate::mode_None:
143 case ServerSideDecorationManagerInterfacePrivate::mode_Client:
146 case ServerSideDecorationManagerInterfacePrivate::mode_Server:
151 qCWarning(KWIN_CORE) <<
"Invalid mode:" <<
mode;
160 wl_resource_destroy(resource->handle);
171 if (decoration->surface ==
surface) {
172 return decoration->q;
181 wl_resource *resource)
182 : QtWaylandServer::org_kde_kwin_server_decoration(resource)
192 s_all.removeAll(
this);
198 send_mode(modeWayland(
mode));
221 return d->preferredMode.value_or(d->manager->defaultMode());
236#include "moc_server_decoration.cpp"
Class holding the Wayland server display loop.
Representing how a SurfaceInterface should be decorated.
static ServerSideDecorationInterface * get(SurfaceInterface *surface)
ServerSideDecorationManagerInterface::Mode mode() const
void setMode(ServerSideDecorationManagerInterface::Mode mode)
~ServerSideDecorationInterface() override
void preferredModeChanged()
ServerSideDecorationManagerInterface::Mode preferredMode() const
SurfaceInterface * surface() const
std::optional< ServerSideDecorationManagerInterface::Mode > preferredMode
void org_kde_kwin_server_decoration_destroy_resource(Resource *resource) override
static ServerSideDecorationInterface * get(SurfaceInterface *surface)
ServerSideDecorationManagerInterface::Mode mode
~ServerSideDecorationInterfacePrivate()
void org_kde_kwin_server_decoration_request_mode(Resource *resource, uint32_t mode) override
void setMode(ServerSideDecorationManagerInterface::Mode mode)
ServerSideDecorationInterfacePrivate(ServerSideDecorationManagerInterface *manager, ServerSideDecorationInterface *_q, SurfaceInterface *surface, wl_resource *resource)
void org_kde_kwin_server_decoration_release(Resource *resource) override
SurfaceInterface * surface
ServerSideDecorationManagerInterface * manager
Manager to create ServerSideDecorationInterface.
void decorationCreated(KWin::ServerSideDecorationInterface *)
ServerSideDecorationManagerInterface(Display *display, QObject *parent=nullptr)
void setDefaultMode(Mode mode)
~ServerSideDecorationManagerInterface() override
ServerSideDecorationManagerInterface * q
ServerSideDecorationManagerInterface::Mode defaultMode
void setDefaultMode(ServerSideDecorationManagerInterface::Mode mode)
void org_kde_kwin_server_decoration_manager_create(Resource *resource, uint32_t id, wl_resource *surface) override
void org_kde_kwin_server_decoration_manager_bind_resource(Resource *resource) override
ServerSideDecorationManagerInterfacePrivate(ServerSideDecorationManagerInterface *_q, Display *display)
Resource representing a wl_surface.
static SurfaceInterface * get(wl_resource *native)