Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qwaylandxdgdialogv1.cpp
Go to the documentation of this file.
1// Copyright (C) 2024 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3// Qt-Security score:critical reason:network-protocol
4
7
8#include <QWaylandXdgToplevel>
9#include <wayland-server.h>
10
11QT_BEGIN_NAMESPACE
12
13QWaylandXdgDialogV1Global::QWaylandXdgDialogV1Global(QWaylandCompositor *parent)
14 : QWaylandCompositorExtensionTemplate<QWaylandXdgDialogV1Global>(parent)
15{
16}
17
18void QWaylandXdgDialogV1Global::initialize()
19{
20 QWaylandCompositorExtensionTemplate::initialize();
21 QWaylandCompositor *compositor = static_cast<QWaylandCompositor *>(extensionContainer());
22 if (compositor)
23 init(compositor->display(), 1);
24}
25
26void QWaylandXdgDialogV1Global::xdg_wm_dialog_v1_get_xdg_dialog(Resource *resource, uint32_t id, wl_resource *toplevelResource)
27{
28 auto *toplevel = QWaylandXdgToplevel::fromResource(toplevelResource);
29 (void)new QWaylandXdgDialogV1(toplevel, resource->client(), id);
30}
31
32QWaylandXdgDialogV1::QWaylandXdgDialogV1(QWaylandXdgToplevel *toplevel, wl_client *client, int id)
33 : QtWaylandServer::xdg_dialog_v1(client, id, 1), m_topLevel(toplevel)
34{
35}
36
37void QWaylandXdgDialogV1::xdg_dialog_v1_set_modal(Resource *resource)
38{
39 Q_UNUSED(resource);
40 if (m_topLevel)
41 m_topLevel->setModal(true);
42
43}
44
45void QWaylandXdgDialogV1::xdg_dialog_v1_unset_modal(Resource *resource)
46{
47 Q_UNUSED(resource);
48 if (m_topLevel)
49 m_topLevel->setModal(false);
50}
51
52void QWaylandXdgDialogV1::xdg_dialog_v1_destroy_resource(Resource *resource)
53{
54 Q_UNUSED(resource);
55 delete this;
56}
57
58void QWaylandXdgDialogV1::xdg_dialog_v1_destroy(Resource *resource)
59{
60 if (m_topLevel)
61 m_topLevel->setModal(false);
62 wl_resource_destroy(resource->handle);
63}
64
65QT_END_NAMESPACE