File indexing completed on 2024-05-19 16:35:25
0001 /* 0002 SPDX-FileCopyrightText: 2016 Martin Gräßlin <mgraesslin@kde.org> 0003 SPDX-FileCopyrightText: 2020 Vlad Zahorodnii <vlad.zahorodnii@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 "pointerconstraints_v1_interface.h" 0011 #include <QPointer> 0012 0013 #include "qwayland-server-pointer-constraints-unstable-v1.h" 0014 0015 namespace KWaylandServer 0016 { 0017 class PointerConstraintsV1InterfacePrivate : public QtWaylandServer::zwp_pointer_constraints_v1 0018 { 0019 public: 0020 explicit PointerConstraintsV1InterfacePrivate(Display *display); 0021 0022 protected: 0023 void zwp_pointer_constraints_v1_lock_pointer(Resource *resource, 0024 uint32_t id, 0025 struct ::wl_resource *surface_resource, 0026 struct ::wl_resource *pointer_resource, 0027 struct ::wl_resource *region_resource, 0028 uint32_t lifetime) override; 0029 void zwp_pointer_constraints_v1_confine_pointer(Resource *resource, 0030 uint32_t id, 0031 struct ::wl_resource *surface_resource, 0032 struct ::wl_resource *pointer_resource, 0033 struct ::wl_resource *region_resource, 0034 uint32_t lifetime) override; 0035 void zwp_pointer_constraints_v1_destroy(Resource *resource) override; 0036 }; 0037 0038 class LockedPointerV1InterfacePrivate : public QtWaylandServer::zwp_locked_pointer_v1 0039 { 0040 public: 0041 static LockedPointerV1InterfacePrivate *get(LockedPointerV1Interface *pointer); 0042 0043 LockedPointerV1InterfacePrivate(LockedPointerV1Interface *q, SurfaceInterface *surface, LockedPointerV1Interface::LifeTime lifeTime, const QRegion ®ion, ::wl_resource *resource); 0044 0045 void commit(); 0046 0047 LockedPointerV1Interface *q; 0048 QPointer<SurfaceInterface> surface; 0049 LockedPointerV1Interface::LifeTime lifeTime; 0050 QRegion region; 0051 QRegion pendingRegion; 0052 QPointF hint = QPointF(-1, -1); 0053 QPointF pendingHint; 0054 bool hasPendingRegion = false; 0055 bool hasPendingHint = false; 0056 bool isLocked = false; 0057 0058 protected: 0059 void zwp_locked_pointer_v1_destroy_resource(Resource *resource) override; 0060 void zwp_locked_pointer_v1_destroy(Resource *resource) override; 0061 void zwp_locked_pointer_v1_set_cursor_position_hint(Resource *resource, wl_fixed_t surface_x, wl_fixed_t surface_y) override; 0062 void zwp_locked_pointer_v1_set_region(Resource *resource, struct ::wl_resource *region_resource) override; 0063 }; 0064 0065 class ConfinedPointerV1InterfacePrivate : public QtWaylandServer::zwp_confined_pointer_v1 0066 { 0067 public: 0068 static ConfinedPointerV1InterfacePrivate *get(ConfinedPointerV1Interface *pointer); 0069 0070 ConfinedPointerV1InterfacePrivate(ConfinedPointerV1Interface *q, SurfaceInterface *surface, 0071 ConfinedPointerV1Interface::LifeTime lifeTime, 0072 const QRegion ®ion, 0073 ::wl_resource *resource); 0074 0075 void commit(); 0076 0077 ConfinedPointerV1Interface *q; 0078 QPointer<SurfaceInterface> surface; 0079 ConfinedPointerV1Interface::LifeTime lifeTime; 0080 QRegion region; 0081 QRegion pendingRegion; 0082 bool hasPendingRegion = false; 0083 bool isConfined = false; 0084 0085 protected: 0086 void zwp_confined_pointer_v1_destroy_resource(Resource *resource) override; 0087 void zwp_confined_pointer_v1_destroy(Resource *resource) override; 0088 void zwp_confined_pointer_v1_set_region(Resource *resource, struct ::wl_resource *region_resource) override; 0089 }; 0090 0091 } // namespace KWaylandServer