76void QWaylandXdgDecorationManagerV1::initialize()
78 Q_D(QWaylandXdgDecorationManagerV1);
80 QWaylandCompositorExtensionTemplate::initialize();
81 QWaylandCompositor *compositor =
static_cast<QWaylandCompositor *>(extensionContainer());
83 qWarning() <<
"Failed to find QWaylandCompositor when initializing QWaylandXdgDecorationV1";
86 d->init(compositor->display(), 1);
114void QWaylandXdgDecorationManagerV1::setPreferredMode(QWaylandXdgToplevel::DecorationMode preferredMode)
116 Q_D(QWaylandXdgDecorationManagerV1);
117 if (d->m_preferredMode == preferredMode)
120 d->m_preferredMode = preferredMode;
121 emit preferredModeChanged();
132void QWaylandXdgDecorationManagerV1Private::zxdg_decoration_manager_v1_get_toplevel_decoration(
133 Resource *resource, uint id, wl_resource *toplevelResource)
135 Q_Q(QWaylandXdgDecorationManagerV1);
137 auto *toplevel = QWaylandXdgToplevel::fromResource(toplevelResource);
139 qWarning() <<
"Couldn't find toplevel for decoration";
145 auto *toplevelPrivate = QWaylandXdgToplevelPrivate::get(toplevel);
147 if (toplevelPrivate->m_decoration) {
148 qWarning() <<
"zxdg_decoration_manager_v1.get_toplevel_decoration:"
149 << toplevel <<
"already has a decoration object, ignoring";
154 new QWaylandXdgToplevelDecorationV1(toplevel, q, resource->client(), id);
157QWaylandXdgToplevelDecorationV1::QWaylandXdgToplevelDecorationV1(QWaylandXdgToplevel *toplevel,
158 QWaylandXdgDecorationManagerV1 *manager,
159 wl_client *client,
int id)
160 : QtWaylandServer::zxdg_toplevel_decoration_v1(client, id, 1)
161 , m_toplevel(toplevel)
165 auto *toplevelPrivate = QWaylandXdgToplevelPrivate::get(toplevel);
166 Q_ASSERT(!toplevelPrivate->m_decoration);
167 toplevelPrivate->m_decoration =
this;
168 sendConfigure(manager->preferredMode());
176void QWaylandXdgToplevelDecorationV1::sendConfigure(QWaylandXdgToplevelDecorationV1::DecorationMode mode)
178 if (configuredMode() == mode)
182 case DecorationMode::ClientSideDecoration:
183 send_configure(mode_client_side);
185 case DecorationMode::ServerSideDecoration:
186 send_configure(mode_server_side);
189 qWarning() <<
"Illegal mode in QWaylandXdgToplevelDecorationV1::sendConfigure" << mode;
193 m_configuredMode = mode;
194 emit m_toplevel->decorationModeChanged();