File indexing completed on 2024-04-28 05:31:22

0001 /** Copyright (C) 2020 Aleix Pol Gonzalez <aleixpol@kde.org>
0002  *   SPDX-License-Identifier: LGPL-3.0-or-later
0003  */
0004 
0005 #include "qwaylandxdgactivationv1_p.h"
0006 #include <QtWaylandClient/private/qwaylanddisplay_p.h>
0007 #include <QtWaylandClient/private/qwaylandinputdevice_p.h>
0008 
0009 QWaylandXdgActivationV1::QWaylandXdgActivationV1()
0010     : QWaylandClientExtensionTemplate<QWaylandXdgActivationV1>(1)
0011 {
0012     initialize();
0013 }
0014 
0015 QWaylandXdgActivationV1::~QWaylandXdgActivationV1()
0016 {
0017     if (isActive()) {
0018         destroy();
0019     }
0020 }
0021 
0022 QWaylandXdgActivationTokenV1 *QWaylandXdgActivationV1::requestXdgActivationToken(QtWaylandClient::QWaylandDisplay *display,
0023                                                                                  struct ::wl_surface *surface,
0024                                                                                  std::optional<uint32_t> serial,
0025                                                                                  const QString &app_id)
0026 {
0027     auto wl = get_activation_token();
0028     auto provider = new QWaylandXdgActivationTokenV1;
0029     provider->init(wl);
0030 
0031     if (surface) {
0032         provider->set_surface(surface);
0033     }
0034     if (!app_id.isEmpty()) {
0035         provider->set_app_id(app_id);
0036     }
0037     if (serial && display->lastInputDevice()) {
0038         provider->set_serial(*serial, display->lastInputDevice()->wl_seat());
0039     }
0040     provider->commit();
0041     return provider;
0042 }
0043 
0044 #include "moc_qwaylandxdgactivationv1_p.cpp"