File indexing completed on 2024-12-08 04:20:24

0001 /*
0002  * SPDX-License-Identifier: LGPL-2.0-or-later
0003  *
0004  * SPDX-FileCopyrightText: 2022 Aleix Pol Gonzalez <aleixpol@kde.org>
0005  */
0006 
0007 #pragma once
0008 
0009 #include <QPointer>
0010 #include <QWaylandClientExtensionTemplate>
0011 #include "qwayland-xdg-foreign-unstable-v2.h"
0012 #include <optional>
0013 
0014 class QWindow;
0015 class XdgExporterV2;
0016 
0017 class XdgExportedV2 : public QObject, public QtWayland::zxdg_exported_v2
0018 {
0019 public:
0020     XdgExportedV2(XdgExporterV2* exporter);
0021     ~XdgExportedV2();
0022 
0023     std::optional<QString> handle() const;
0024     void setWindow(QWindow *window);
0025 
0026 private:
0027     void zxdg_exported_v2_handle(const QString &handle) override {
0028         m_handle = handle;
0029     }
0030     void useWindow(QWindow *window);
0031 
0032     std::optional<QString> m_handle;
0033     XdgExporterV2 *const m_exporter;
0034 };
0035 
0036 class XdgExporterV2 : public QWaylandClientExtensionTemplate<XdgExporterV2>, public QtWayland::zxdg_exporter_v2
0037 {
0038 public:
0039     XdgExporterV2();
0040     ~XdgExporterV2();
0041 
0042     XdgExportedV2 *exportWindow(QWindow *window);
0043     XdgExportedV2 *exportWidget(QWidget *widget);
0044 };