KWin
Loading...
Searching...
No Matches
slide.cpp
Go to the documentation of this file.
1/*
2 SPDX-FileCopyrightText: 2015 Marco Martin <notmart@gmail.com>
3
4 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
5*/
6#include "slide.h"
7#include "display.h"
8#include "surface_p.h"
9
10#include <qwayland-server-slide.h>
11
12namespace KWin
13{
14static const quint32 s_version = 1;
15
16class SlideManagerInterfacePrivate : public QtWaylandServer::org_kde_kwin_slide_manager
17{
18public:
20
22
23protected:
25 void org_kde_kwin_slide_manager_create(Resource *resource, uint32_t id, wl_resource *surface) override;
26 void org_kde_kwin_slide_manager_unset(Resource *resource, wl_resource *surface) override;
27};
28
33
34void SlideManagerInterfacePrivate::org_kde_kwin_slide_manager_create(Resource *resource, uint32_t id, wl_resource *surface)
35{
37 if (!s) {
38 wl_resource_post_error(resource->handle, 0, "Invalid surface");
39 return;
40 }
41
42 wl_resource *slide_resource = wl_resource_create(resource->client(), &org_kde_kwin_slide_interface, resource->version(), id);
43 if (!slide_resource) {
44 wl_client_post_no_memory(resource->client());
45 return;
46 }
47
48 auto slide = new SlideInterface(slide_resource);
50 surfacePrivate->setSlide(QPointer<SlideInterface>(slide));
51}
52
53void SlideManagerInterfacePrivate::org_kde_kwin_slide_manager_unset(Resource *resource, wl_resource *surface)
54{
56 if (!s) {
57 wl_resource_post_error(resource->handle, 0, "Invalid surface");
58 return;
59 }
61 surfacePrivate->setSlide(QPointer<SlideInterface>());
62}
63
65 : QtWaylandServer::org_kde_kwin_slide_manager(*display, s_version)
66 , q(_q)
67{
68}
69
71 : QObject(parent)
72 , d(new SlideManagerInterfacePrivate(this, display))
73{
74}
75
79
81{
82 d->globalRemove();
83}
84
85class SlideInterfacePrivate : public QtWaylandServer::org_kde_kwin_slide
86{
87public:
88 SlideInterfacePrivate(SlideInterface *_q, wl_resource *resource);
89
92 uint32_t pendingOffset;
93 uint32_t currentOffset;
95
96protected:
97 void org_kde_kwin_slide_commit(Resource *resource) override;
98 void org_kde_kwin_slide_set_location(Resource *resource, uint32_t location) override;
99 void org_kde_kwin_slide_set_offset(Resource *resource, int32_t offset) override;
100 void org_kde_kwin_slide_release(Resource *resource) override;
101 void org_kde_kwin_slide_destroy_resource(Resource *resource) override;
102};
103
109
110void SlideInterfacePrivate::org_kde_kwin_slide_set_location(Resource *resource, uint32_t location)
111{
113}
114
115void SlideInterfacePrivate::org_kde_kwin_slide_set_offset(Resource *resource, int32_t offset)
116{
117 pendingOffset = offset;
118}
119
121{
122 wl_resource_destroy(resource->handle);
123}
124
126{
127 delete q;
128}
129
131 : QtWaylandServer::org_kde_kwin_slide(resource)
132 , q(_q)
133{
134}
135
136SlideInterface::SlideInterface(wl_resource *resource)
137 : d(new SlideInterfacePrivate(this, resource))
138{
139}
140
142
144{
145 return d->currentLocation;
146}
147
149{
150 return d->currentOffset;
151}
152
153}
154
155#include "moc_slide.cpp"
Class holding the Wayland server display loop.
Definition display.h:34
qint32 offset() const
Definition slide.cpp:148
~SlideInterface() override
Location location() const
Definition slide.cpp:143
void org_kde_kwin_slide_destroy_resource(Resource *resource) override
Definition slide.cpp:125
SlideInterface::Location currentLocation
Definition slide.cpp:91
SlideInterfacePrivate(SlideInterface *_q, wl_resource *resource)
Definition slide.cpp:130
void org_kde_kwin_slide_set_offset(Resource *resource, int32_t offset) override
Definition slide.cpp:115
SlideInterface * q
Definition slide.cpp:94
void org_kde_kwin_slide_set_location(Resource *resource, uint32_t location) override
Definition slide.cpp:110
SlideInterface::Location pendingLocation
Definition slide.cpp:90
void org_kde_kwin_slide_commit(Resource *resource) override
Definition slide.cpp:104
void org_kde_kwin_slide_release(Resource *resource) override
Definition slide.cpp:120
SlideManagerInterface(Display *display, QObject *parent=nullptr)
Definition slide.cpp:70
~SlideManagerInterface() override
Definition slide.cpp:76
SlideManagerInterfacePrivate(SlideManagerInterface *_q, Display *display)
Definition slide.cpp:64
void org_kde_kwin_slide_manager_destroy_global() override
Definition slide.cpp:29
void org_kde_kwin_slide_manager_create(Resource *resource, uint32_t id, wl_resource *surface) override
Definition slide.cpp:34
void org_kde_kwin_slide_manager_unset(Resource *resource, wl_resource *surface) override
Definition slide.cpp:53
SlideManagerInterface * q
Definition slide.cpp:21
Resource representing a wl_surface.
Definition surface.h:80
static SurfaceInterface * get(wl_resource *native)
Definition surface.cpp:819
static SurfaceInterfacePrivate * get(SurfaceInterface *surface)
Definition surface_p.h:99
void setSlide(const QPointer< SlideInterface > &slide)
Definition surface.cpp:189