File indexing completed on 2024-05-19 05:32:33
0001 /* 0002 SPDX-FileCopyrightText: 2014 Martin Gräßlin <mgraesslin@kde.org> 0003 SPDX-FileCopyrightText: 2020 David Edmundson <davidedmundson@kde.org> 0004 0005 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0006 */ 0007 0008 #pragma once 0009 0010 #include <QPointer> 0011 0012 #include "qwayland-server-wayland.h" 0013 0014 namespace KWin 0015 { 0016 class AbstractDataSource; 0017 class DataDeviceInterface; 0018 class DataOfferInterface; 0019 class DataSourceInterface; 0020 class DragAndDropIcon; 0021 class SeatInterface; 0022 class SurfaceInterface; 0023 0024 class DataDeviceInterfacePrivate : public QtWaylandServer::wl_data_device 0025 { 0026 public: 0027 static DataDeviceInterfacePrivate *get(DataDeviceInterface *device); 0028 0029 DataDeviceInterfacePrivate(SeatInterface *seat, DataDeviceInterface *_q, wl_resource *resource); 0030 0031 DataOfferInterface *createDataOffer(AbstractDataSource *source); 0032 0033 SeatInterface *seat; 0034 DataDeviceInterface *q; 0035 QPointer<DataSourceInterface> selection; 0036 0037 struct Drag 0038 { 0039 SurfaceInterface *surface = nullptr; 0040 QMetaObject::Connection destroyConnection; 0041 QMetaObject::Connection posConnection; 0042 QMetaObject::Connection sourceActionConnection; 0043 QMetaObject::Connection targetActionConnection; 0044 quint32 serial = 0; 0045 }; 0046 Drag drag; 0047 0048 protected: 0049 void data_device_destroy_resource(Resource *resource) override; 0050 void data_device_start_drag(Resource *resource, wl_resource *source, wl_resource *origin, wl_resource *icon, uint32_t serial) override; 0051 void data_device_set_selection(Resource *resource, wl_resource *source, uint32_t serial) override; 0052 void data_device_release(Resource *resource) override; 0053 }; 0054 0055 } // namespace KWin