1// Copyright (C) 2024 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3
4#include "qwaylandcompositor.h"
5#include "qwaylandxdgdialogv1_p.h"
6
7#include <QWaylandXdgToplevel>
8#include <wayland-server.h>
9
10QT_BEGIN_NAMESPACE
11
12QWaylandXdgDialogV1Global::QWaylandXdgDialogV1Global(QWaylandCompositor *parent)
13 : QWaylandCompositorExtensionTemplate<QWaylandXdgDialogV1Global>(parent)
14{
15}
16
17void QWaylandXdgDialogV1Global::initialize()
18{
19 QWaylandCompositorExtensionTemplate::initialize();
20 QWaylandCompositor *compositor = static_cast<QWaylandCompositor *>(extensionContainer());
21 if (compositor)
22 init(compositor->display(), 1);
23}
24
25void QWaylandXdgDialogV1Global::xdg_wm_dialog_v1_get_xdg_dialog(Resource *resource, uint32_t id, wl_resource *toplevelResource)
26{
27 auto *toplevel = QWaylandXdgToplevel::fromResource(resource: toplevelResource);
28 (void)new QWaylandXdgDialogV1(toplevel, resource->client(), id);
29}
30
31QWaylandXdgDialogV1::QWaylandXdgDialogV1(QWaylandXdgToplevel *toplevel, wl_client *client, int id)
32 : QtWaylandServer::xdg_dialog_v1(client, id, 1), m_topLevel(toplevel)
33{
34}
35
36void QWaylandXdgDialogV1::xdg_dialog_v1_set_modal(Resource *resource)
37{
38 Q_UNUSED(resource);
39 if (m_topLevel)
40 m_topLevel->setModal(true);
41
42}
43
44void QWaylandXdgDialogV1::xdg_dialog_v1_unset_modal(Resource *resource)
45{
46 Q_UNUSED(resource);
47 if (m_topLevel)
48 m_topLevel->setModal(false);
49}
50
51void QWaylandXdgDialogV1::xdg_dialog_v1_destroy_resource(Resource *resource)
52{
53 Q_UNUSED(resource);
54 delete this;
55}
56
57void QWaylandXdgDialogV1::xdg_dialog_v1_destroy(Resource *resource)
58{
59 if (m_topLevel)
60 m_topLevel->setModal(false);
61 wl_resource_destroy(resource->handle);
62}
63
64QT_END_NAMESPACE
65

Provided by KDAB

Privacy Policy
Start learning QML with our Intro Training
Find out more

source code of qtwayland/src/compositor/extensions/qwaylandxdgdialogv1.cpp