KWin
Loading...
Searching...
No Matches
pointer_p.h
Go to the documentation of this file.
1/*
2 SPDX-FileCopyrightText: 2016 Martin Gräßlin <mgraesslin@kde.org>
3 SPDX-FileCopyrightText: 2020 Adrien Faveraux <ad1rie3@hotmail.fr>
4 SPDX-FileCopyrightText: 2021 Vlad Zahorodnii <vlad.zahorodnii@kde.org>
5
6 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
7*/
8#pragma once
9
10#include "pointer.h"
11
12#include <QList>
13#include <QPointF>
14#include <QPointer>
15
16#include "qwayland-server-wayland.h"
17
18namespace KWin
19{
20class ClientConnection;
21class PointerPinchGestureV1Interface;
22class PointerSwipeGestureV1Interface;
23class PointerHoldGestureV1Interface;
24class RelativePointerV1Interface;
25
26class PointerInterfacePrivate : public QtWaylandServer::wl_pointer
27{
28 struct AxisAccumulator
29 {
30 struct Axis
31 {
32 bool shouldReset(int newDirection, std::chrono::milliseconds newTimestamp) const;
33
34 void reset()
35 {
36 axis120 = 0;
37 axis = 0;
38 }
39
40 qint32 axis120 = 0;
41 qreal axis = 0;
42 int direction = 0;
43 std::chrono::milliseconds timestamp = std::chrono::milliseconds::zero();
44 };
45
46 Axis &axis(Qt::Orientation orientation)
47 {
48 const int index = orientation == Qt::Orientation::Horizontal ? 0 : 1;
49 return m_axis[index];
50 }
51
52 private:
53 Axis m_axis[2];
54 };
55
56public:
58
60 ~PointerInterfacePrivate() override;
61
62 QList<Resource *> pointersForClient(ClientConnection *client) const;
63
67 quint32 focusedSerial = 0;
68 QMetaObject::Connection destroyConnection;
69 std::unique_ptr<PointerSurfaceCursor> cursor;
70 std::unique_ptr<RelativePointerV1Interface> relativePointersV1;
71 std::unique_ptr<PointerSwipeGestureV1Interface> swipeGesturesV1;
72 std::unique_ptr<PointerPinchGestureV1Interface> pinchGesturesV1;
73 std::unique_ptr<PointerHoldGestureV1Interface> holdGesturesV1;
74 QPointF lastPosition;
75 AxisAccumulator axisAccumulator;
76
77 void sendLeave(quint32 serial);
78 void sendEnter(const QPointF &parentSurfacePosition, quint32 serial);
79 void sendFrame();
80
81protected:
82 void pointer_set_cursor(Resource *resource, uint32_t serial, ::wl_resource *surface_resource, int32_t hotspot_x, int32_t hotspot_y) override;
83 void pointer_release(Resource *resource) override;
84 void pointer_bind_resource(Resource *resource) override;
85};
86
87}
Convenient Class which represents a wl_client.
std::unique_ptr< PointerHoldGestureV1Interface > holdGesturesV1
Definition pointer_p.h:73
std::unique_ptr< PointerSwipeGestureV1Interface > swipeGesturesV1
Definition pointer_p.h:71
SurfaceInterface * focusedSurface
Definition pointer_p.h:66
std::unique_ptr< RelativePointerV1Interface > relativePointersV1
Definition pointer_p.h:70
void sendLeave(quint32 serial)
Definition pointer.cpp:113
std::unique_ptr< PointerSurfaceCursor > cursor
Definition pointer_p.h:69
std::unique_ptr< PointerPinchGestureV1Interface > pinchGesturesV1
Definition pointer_p.h:72
void pointer_set_cursor(Resource *resource, uint32_t serial, ::wl_resource *surface_resource, int32_t hotspot_x, int32_t hotspot_y) override
Definition pointer.cpp:53
QList< Resource * > pointersForClient(ClientConnection *client) const
Definition pointer.cpp:48
void pointer_bind_resource(Resource *resource) override
Definition pointer.cpp:100
AxisAccumulator axisAccumulator
Definition pointer_p.h:75
void pointer_release(Resource *resource) override
Definition pointer.cpp:95
QMetaObject::Connection destroyConnection
Definition pointer_p.h:68
void sendEnter(const QPointF &parentSurfacePosition, quint32 serial)
Definition pointer.cpp:121
PointerInterfacePrivate(PointerInterface *q, SeatInterface *seat)
Definition pointer.cpp:34
~PointerInterfacePrivate() override
Definition pointer.cpp:44
static PointerInterfacePrivate * get(PointerInterface *pointer)
Definition pointer.cpp:29
PointerInterface * q
Definition pointer_p.h:64
Represents a Seat on the Wayland Display.
Definition seat.h:134
Resource representing a wl_surface.
Definition surface.h:80
bool shouldReset(int newDirection, std::chrono::milliseconds newTimestamp) const
Definition pointer.cpp:139