75void QWaylandXdgDecorationManagerV1::initialize()
77 Q_D(QWaylandXdgDecorationManagerV1);
79 QWaylandCompositorExtensionTemplate::initialize();
80 QWaylandCompositor *compositor =
static_cast<QWaylandCompositor *>(extensionContainer());
82 qWarning() <<
"Failed to find QWaylandCompositor when initializing QWaylandXdgDecorationV1";
85 d->init(compositor->display(), 1);
110void QWaylandXdgDecorationManagerV1::setPreferredMode(QWaylandXdgToplevel::DecorationMode preferredMode)
112 Q_D(QWaylandXdgDecorationManagerV1);
113 if (d->m_preferredMode == preferredMode)
116 d->m_preferredMode = preferredMode;
117 emit preferredModeChanged();
128void QWaylandXdgDecorationManagerV1Private::zxdg_decoration_manager_v1_get_toplevel_decoration(
129 Resource *resource, uint id, wl_resource *toplevelResource)
131 Q_Q(QWaylandXdgDecorationManagerV1);
133 auto *toplevel = QWaylandXdgToplevel::fromResource(toplevelResource);
135 qWarning() <<
"Couldn't find toplevel for decoration";
141 auto *toplevelPrivate = QWaylandXdgToplevelPrivate::get(toplevel);
143 if (toplevelPrivate->m_decoration) {
144 qWarning() <<
"zxdg_decoration_manager_v1.get_toplevel_decoration:"
145 << toplevel <<
"already has a decoration object, ignoring";
150 new QWaylandXdgToplevelDecorationV1(toplevel, q, resource->client(), id);
153QWaylandXdgToplevelDecorationV1::QWaylandXdgToplevelDecorationV1(QWaylandXdgToplevel *toplevel,
154 QWaylandXdgDecorationManagerV1 *manager,
155 wl_client *client,
int id)
156 : QtWaylandServer::zxdg_toplevel_decoration_v1(client, id, 1)
157 , m_toplevel(toplevel)
161 auto *toplevelPrivate = QWaylandXdgToplevelPrivate::get(toplevel);
162 Q_ASSERT(!toplevelPrivate->m_decoration);
163 toplevelPrivate->m_decoration =
this;
164 sendConfigure(manager->preferredMode());
172void QWaylandXdgToplevelDecorationV1::sendConfigure(QWaylandXdgToplevelDecorationV1::DecorationMode mode)
174 if (configuredMode() == mode)
178 case DecorationMode::ClientSideDecoration:
179 send_configure(mode_client_side);
181 case DecorationMode::ServerSideDecoration:
182 send_configure(mode_server_side);
185 qWarning() <<
"Illegal mode in QWaylandXdgToplevelDecorationV1::sendConfigure" << mode;
189 m_configuredMode = mode;
190 emit m_toplevel->decorationModeChanged();