1 /* 2 SPDX-FileCopyrightText: 2016 Martin Gräßlin <mgraesslin@kde.org> 3 SPDX-FileCopyrightText: 2020 Vlad Zahorodnii <vlad.zahorodnii@kde.org> 4 5 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 6 */ 7 8 #pragma once 9 10 #include "pointerconstraints_v1_interface.h" 11 12 #include "qwayland-server-pointer-constraints-unstable-v1.h" 13 14 namespace KWaylandServer 15 { 16 class PointerConstraintsV1InterfacePrivate : public QtWaylandServer::zwp_pointer_constraints_v1 17 { 18 public: 19 explicit PointerConstraintsV1InterfacePrivate(Display *display); 20 21 protected: 22 void zwp_pointer_constraints_v1_lock_pointer(Resource *resource, 23 uint32_t id, 24 struct ::wl_resource *surface_resource, 25 struct ::wl_resource *pointer_resource, 26 struct ::wl_resource *region_resource, 27 uint32_t lifetime) override; 28 void zwp_pointer_constraints_v1_confine_pointer(Resource *resource, 29 uint32_t id, 30 struct ::wl_resource *surface_resource, 31 struct ::wl_resource *pointer_resource, 32 struct ::wl_resource *region_resource, 33 uint32_t lifetime) override; 34 void zwp_pointer_constraints_v1_destroy(Resource *resource) override; 35 }; 36 37 class LockedPointerV1InterfacePrivate : public QtWaylandServer::zwp_locked_pointer_v1 38 { 39 public: 40 static LockedPointerV1InterfacePrivate *get(LockedPointerV1Interface *pointer); 41 42 LockedPointerV1InterfacePrivate(LockedPointerV1Interface *q, LockedPointerV1Interface::LifeTime lifeTime, const QRegion ®ion, ::wl_resource *resource); 43 44 void commit(); 45 46 LockedPointerV1Interface *q; 47 LockedPointerV1Interface::LifeTime lifeTime; 48 QRegion region; 49 QRegion pendingRegion; 50 QPointF hint = QPointF(-1, -1); 51 QPointF pendingHint; 52 bool hasPendingRegion = false; 53 bool hasPendingHint = false; 54 bool isLocked = false; 55 56 protected: 57 void zwp_locked_pointer_v1_destroy_resource(Resource *resource) override; 58 void zwp_locked_pointer_v1_destroy(Resource *resource) override; 59 void zwp_locked_pointer_v1_set_cursor_position_hint(Resource *resource, wl_fixed_t surface_x, wl_fixed_t surface_y) override; 60 void zwp_locked_pointer_v1_set_region(Resource *resource, struct ::wl_resource *region_resource) override; 61 }; 62 63 class ConfinedPointerV1InterfacePrivate : public QtWaylandServer::zwp_confined_pointer_v1 64 { 65 public: 66 static ConfinedPointerV1InterfacePrivate *get(ConfinedPointerV1Interface *pointer); 67 68 ConfinedPointerV1InterfacePrivate(ConfinedPointerV1Interface *q, 69 ConfinedPointerV1Interface::LifeTime lifeTime, 70 const QRegion ®ion, 71 ::wl_resource *resource); 72 73 void commit(); 74 75 ConfinedPointerV1Interface *q; 76 ConfinedPointerV1Interface::LifeTime lifeTime; 77 QRegion region; 78 QRegion pendingRegion; 79 bool hasPendingRegion = false; 80 bool isConfined = false; 81 82 protected: 83 void zwp_confined_pointer_v1_destroy_resource(Resource *resource) override; 84 void zwp_confined_pointer_v1_destroy(Resource *resource) override; 85 void zwp_confined_pointer_v1_set_region(Resource *resource, struct ::wl_resource *region_resource) override; 86 }; 87 88 } // namespace KWaylandServer 89