1 /* 2 SPDX-FileCopyrightText: 2020 Adrien Faveraux <af@brain-networks.fr> 3 SPDX-FileCopyrightText: 2021 Francesco Sorrentino <francesco.sorr@gmail.com> 4 5 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only 6 */ 7 #pragma once 8 9 #include "primary_selection.h" 10 11 #include "seat.h" 12 #include "selection_device_manager_p.h" 13 #include "wayland/global.h" 14 #include "wayland/resource.h" 15 16 #include <wayland-primary-selection-unstable-v1-server-protocol.h> 17 18 namespace Wrapland::Server 19 { 20 21 constexpr uint32_t PrimarySelectionDeviceManagerVersion = 1; 22 using PrimarySelectionDeviceManagerGlobal 23 = Wayland::Global<PrimarySelectionDeviceManager, PrimarySelectionDeviceManagerVersion>; 24 25 class PrimarySelectionDeviceManager::Private 26 : public device_manager<PrimarySelectionDeviceManagerGlobal> 27 { 28 public: 29 Private(Display* display, PrimarySelectionDeviceManager* q); 30 ~Private() override; 31 32 private: 33 static const struct zwp_primary_selection_device_manager_v1_interface s_interface; 34 }; 35 36 class PrimarySelectionDevice::Private : public Wayland::Resource<PrimarySelectionDevice> 37 { 38 public: 39 Private(Client* client, 40 uint32_t version, 41 uint32_t id, 42 Seat* seat, 43 PrimarySelectionDevice* qptr); 44 ~Private() override; 45 46 Seat* m_seat; 47 48 PrimarySelectionSource* selection = nullptr; 49 QMetaObject::Connection selectionDestroyedConnection; 50 51 PrimarySelectionOffer* sendDataOffer(PrimarySelectionSource* source); 52 53 private: 54 static const struct zwp_primary_selection_device_v1_interface s_interface; 55 }; 56 57 class PrimarySelectionOffer::Private : public Wayland::Resource<PrimarySelectionOffer> 58 { 59 public: 60 Private(Client* client, 61 uint32_t version, 62 PrimarySelectionSource* source, 63 PrimarySelectionOffer* qptr); 64 ~Private() override; 65 66 PrimarySelectionSource* source; 67 68 private: 69 static const struct zwp_primary_selection_offer_v1_interface s_interface; 70 }; 71 72 class PrimarySelectionSource::Private : public Wayland::Resource<PrimarySelectionSource> 73 { 74 public: 75 Private(Client* client, uint32_t version, uint32_t id, PrimarySelectionSource* qptr); 76 ~Private() override; 77 78 std::vector<std::string> mimeTypes; 79 80 private: 81 static const struct zwp_primary_selection_source_v1_interface s_interface; 82 }; 83 84 } 85