Merge branch 'Plasma/5.6'
This commit is contained in:
commit
3d1b068da9
1 changed files with 32 additions and 18 deletions
|
@ -40,6 +40,8 @@ public:
|
||||||
|
|
||||||
Mode defaultMode = Mode::None;
|
Mode defaultMode = Mode::None;
|
||||||
|
|
||||||
|
QVector<wl_resource*> resources;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void bind(wl_client *client, uint32_t version, uint32_t id) override;
|
void bind(wl_client *client, uint32_t version, uint32_t id) override;
|
||||||
|
|
||||||
|
@ -107,6 +109,25 @@ ServerSideDecorationManagerInterface::Private::Private(ServerSideDecorationManag
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
static uint32_t modeWayland(ServerSideDecorationManagerInterface::Mode mode)
|
||||||
|
{
|
||||||
|
switch (mode) {
|
||||||
|
case ServerSideDecorationManagerInterface::Mode::None:
|
||||||
|
return ORG_KDE_KWIN_SERVER_DECORATION_MODE_NONE;
|
||||||
|
break;
|
||||||
|
case ServerSideDecorationManagerInterface::Mode::Client:
|
||||||
|
return ORG_KDE_KWIN_SERVER_DECORATION_MODE_CLIENT;
|
||||||
|
break;
|
||||||
|
case ServerSideDecorationManagerInterface::Mode::Server:
|
||||||
|
return ORG_KDE_KWIN_SERVER_DECORATION_MODE_SERVER;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
Q_UNREACHABLE();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ServerSideDecorationManagerInterface::Private::bind(wl_client *client, uint32_t version, uint32_t id)
|
void ServerSideDecorationManagerInterface::Private::bind(wl_client *client, uint32_t version, uint32_t id)
|
||||||
{
|
{
|
||||||
auto c = display->getConnection(client);
|
auto c = display->getConnection(client);
|
||||||
|
@ -116,13 +137,16 @@ void ServerSideDecorationManagerInterface::Private::bind(wl_client *client, uint
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
wl_resource_set_implementation(resource, &s_interface, this, unbind);
|
wl_resource_set_implementation(resource, &s_interface, this, unbind);
|
||||||
// TODO: should we track?
|
|
||||||
|
resources << resource;
|
||||||
|
|
||||||
|
org_kde_kwin_server_decoration_manager_send_default_mode(resource, modeWayland(defaultMode));
|
||||||
|
c->flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ServerSideDecorationManagerInterface::Private::unbind(wl_resource *resource)
|
void ServerSideDecorationManagerInterface::Private::unbind(wl_resource *resource)
|
||||||
{
|
{
|
||||||
Q_UNUSED(resource)
|
cast(resource)->resources.removeAll(resource);
|
||||||
// TODO: implement?
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ServerSideDecorationManagerInterface::ServerSideDecorationManagerInterface(Display *display, QObject *parent)
|
ServerSideDecorationManagerInterface::ServerSideDecorationManagerInterface(Display *display, QObject *parent)
|
||||||
|
@ -141,6 +165,10 @@ void ServerSideDecorationManagerInterface::setDefaultMode(Mode mode)
|
||||||
{
|
{
|
||||||
Q_D();
|
Q_D();
|
||||||
d->defaultMode = mode;
|
d->defaultMode = mode;
|
||||||
|
const uint32_t wlMode = modeWayland(mode);
|
||||||
|
for (auto it = d->resources.constBegin(); it != d->resources.constEnd(); it++) {
|
||||||
|
org_kde_kwin_server_decoration_manager_send_default_mode(*it, wlMode);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class ServerSideDecorationInterface::Private : public Resource::Private
|
class ServerSideDecorationInterface::Private : public Resource::Private
|
||||||
|
@ -240,21 +268,7 @@ void ServerSideDecorationInterface::setMode(ServerSideDecorationManagerInterface
|
||||||
{
|
{
|
||||||
Q_D();
|
Q_D();
|
||||||
d->mode = mode;
|
d->mode = mode;
|
||||||
uint32_t wlMode;
|
org_kde_kwin_server_decoration_send_mode(resource(), modeWayland(mode));
|
||||||
switch (mode) {
|
|
||||||
case ServerSideDecorationManagerInterface::Mode::None:
|
|
||||||
wlMode = ORG_KDE_KWIN_SERVER_DECORATION_MODE_NONE;
|
|
||||||
break;
|
|
||||||
case ServerSideDecorationManagerInterface::Mode::Client:
|
|
||||||
wlMode = ORG_KDE_KWIN_SERVER_DECORATION_MODE_CLIENT;
|
|
||||||
break;
|
|
||||||
case ServerSideDecorationManagerInterface::Mode::Server:
|
|
||||||
wlMode = ORG_KDE_KWIN_SERVER_DECORATION_MODE_SERVER;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
Q_UNREACHABLE();
|
|
||||||
}
|
|
||||||
org_kde_kwin_server_decoration_send_mode(resource(), wlMode);
|
|
||||||
client()->flush();
|
client()->flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue