13#include <qwayland-server-org-kde-plasma-virtual-desktop.h>
14#include <wayland-server.h>
18static const quint32 s_version = 2;
41 QList<PlasmaVirtualDesktopInterface *>
desktops;
46 inline QList<PlasmaVirtualDesktopInterface *>::const_iterator
constFindDesktop(
const QString &
id);
47 inline QList<PlasmaVirtualDesktopInterface *>::iterator
findDesktop(
const QString &
id);
59 return desk->id() == id;
66 return desk->id() == id;
72 const QString &desktop_id)
79 (*i)->d->add(resource->client(),
id, resource->version());
90 const QString &desktop_id)
96 : QtWaylandServer::org_kde_plasma_virtual_desktop_management(*display, s_version)
105 send_desktop_created(resource->handle, (*it)->id(), i++);
108 if (resource->version() >= ORG_KDE_PLASMA_VIRTUAL_DESKTOP_MANAGEMENT_ROWS_SINCE_VERSION) {
109 send_rows(resource->handle,
rows);
112 send_done(resource->handle);
123 while (!d->desktops.isEmpty()) {
124 const QString
id = d->desktops[0]->id();
131 if (rows == 0 || d->rows == rows) {
137 const auto clientResources = d->resourceMap();
138 for (
auto resource : clientResources) {
139 if (resource->version() < ORG_KDE_PLASMA_VIRTUAL_DESKTOP_MANAGEMENT_ROWS_SINCE_VERSION) {
142 d->send_rows(resource->handle, rows);
148 auto i = d->constFindDesktop(
id);
149 if (i != d->desktops.constEnd()) {
157 auto i = d->constFindDesktop(
id);
158 if (i != d->desktops.constEnd()) {
162 const quint32 actualPosition = std::min(position, (quint32)d->desktops.count());
167 const auto desktopClientResources =
desktop->d->resourceMap();
168 for (
auto resource : desktopClientResources) {
169 desktop->d->send_desktop_id(resource->handle,
id);
173 if (d->desktops.isEmpty()) {
177 d->desktops.insert(actualPosition,
desktop);
179 const auto clientResources = d->resourceMap();
180 for (
auto resource : clientResources) {
181 d->send_desktop_created(resource->handle,
id, actualPosition);
189 auto deskIt = d->findDesktop(
id);
190 if (deskIt == d->desktops.end()) {
195 d->desktops.erase(deskIt);
198 const auto clientResources = d->resourceMap();
199 for (
auto resource : clientResources) {
200 d->send_desktop_removed(resource->handle,
id);
211 const auto clientResources = d->resourceMap();
212 for (
auto resource : clientResources) {
213 d->send_done(resource->handle);
225 : QtWaylandServer::org_kde_plasma_virtual_desktop()
232 const auto clientResources = resourceMap();
233 for (Resource *resource : clientResources) {
234 send_removed(resource->handle);
235 wl_resource_destroy(resource->handle);
241 send_desktop_id(resource->handle,
id);
243 if (!
name.isEmpty()) {
244 send_name(resource->handle, truncate(
name));
248 send_activated(resource->handle);
252PlasmaVirtualDesktopInterface::PlasmaVirtualDesktopInterface()
268 if (d->name ==
name) {
274 const auto clientResources = d->resourceMap();
275 for (
auto resource : clientResources) {
276 d->send_name(resource->handle, truncate(
name));
287 if (d->active == active) {
292 const auto clientResources = d->resourceMap();
295 for (
auto resource : clientResources) {
296 d->send_activated(resource->handle);
299 for (
auto resource : clientResources) {
300 d->send_deactivated(resource->handle);
312 const auto clientResources = d->resourceMap();
313 for (
auto resource : clientResources) {
314 d->send_done(resource->handle);
320#include "moc_plasmavirtualdesktop.cpp"
Class holding the Wayland server display loop.
void setActive(bool active)
~PlasmaVirtualDesktopInterface() override
void setName(const QString &name)
PlasmaVirtualDesktopInterfacePrivate(PlasmaVirtualDesktopInterface *q)
void org_kde_plasma_virtual_desktop_request_activate(Resource *resource) override
void org_kde_plasma_virtual_desktop_bind_resource(Resource *resource) override
PlasmaVirtualDesktopInterface * q
~PlasmaVirtualDesktopInterfacePrivate()
Wrapper for the org_kde_plasma_virtual_desktop_management interface.
QList< PlasmaVirtualDesktopInterface * > desktops() const
PlasmaVirtualDesktopInterface * createDesktop(const QString &id, quint32 position=std::numeric_limits< uint32_t >::max())
void setRows(quint32 rows)
~PlasmaVirtualDesktopManagementInterface() override
void desktopCreateRequested(const QString &name, quint32 position)
void desktopRemoveRequested(const QString &id)
void removeDesktop(const QString &id)
PlasmaVirtualDesktopManagementInterface(Display *display, QObject *parent=nullptr)
PlasmaVirtualDesktopInterface * desktop(const QString &id)
QList< PlasmaVirtualDesktopInterface * >::const_iterator constFindDesktop(const QString &id)
void org_kde_plasma_virtual_desktop_management_request_create_virtual_desktop(Resource *resource, const QString &name, uint32_t position) override
QList< PlasmaVirtualDesktopInterface * >::iterator findDesktop(const QString &id)
QList< PlasmaVirtualDesktopInterface * > desktops
void org_kde_plasma_virtual_desktop_management_bind_resource(Resource *resource) override
PlasmaVirtualDesktopManagementInterface * q
void org_kde_plasma_virtual_desktop_management_request_remove_virtual_desktop(Resource *resource, const QString &desktop_id) override
void org_kde_plasma_virtual_desktop_management_get_virtual_desktop(Resource *resource, uint32_t id, const QString &desktop_id) override
PlasmaVirtualDesktopManagementInterfacePrivate(PlasmaVirtualDesktopManagementInterface *_q, Display *display)