Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qwaylandcursorsurface_p.h
Go to the documentation of this file.
1
// Copyright (C) 2019 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
// Qt-Security score:significant reason:default
4
5
#
ifndef
QWAYLANDCURSORSURFACE_H
6
#
define
QWAYLANDCURSORSURFACE_H
7
8
#
include
"qwaylandsurface_p.h"
9
#
include
"qwaylandcallback_p.h"
10
11
#
include
<
memory
>
12
13
QT_BEGIN_NAMESPACE
14
15
namespace
QtWaylandClient
{
16
17
#
if
QT_CONFIG
(
cursor
)
18
template
<
typename
InputDevice
>
19
class
CursorSurface
:
public
QWaylandSurface
20
{
21
public
:
22
explicit
CursorSurface
(
InputDevice
*
pointer
,
QWaylandDisplay
*
display
)
23
:
QWaylandSurface
(
display
),
m_pointer
(
pointer
)
24
{
25
connect
(
this
, &
QWaylandSurface
::
screensChanged
,
m_pointer
, &
InputDevice
::
updateCursor
);
26
}
27
28
void
reset
()
29
{
30
m_setSerial
= 0;
31
m_hotspot
=
QPoint
();
32
}
33
34
// Size and hotspot are in surface coordinates
35
void
update
(
wl_buffer
*
buffer
,
const
QPoint
&
hotspot
,
const
QSize
&
size
,
int
bufferScale
,
36
bool
animated
=
false
)
37
{
38
// Calling code needs to ensure buffer scale is supported if != 1
39
Q_ASSERT
(
bufferScale
== 1 ||
version
() >= 3);
40
41
auto
enterSerial
=
m_pointer
->
mEnterSerial
;
42
if
(
m_setSerial
<
enterSerial
||
m_hotspot
!=
hotspot
) {
43
m_pointer
->
set_cursor
(
m_pointer
->
mEnterSerial
,
object
(),
hotspot
.
x
(),
hotspot
.
y
());
44
m_setSerial
=
enterSerial
;
45
m_hotspot
=
hotspot
;
46
}
47
48
if
(
version
() >= 3)
49
set_buffer_scale
(
bufferScale
);
50
51
attach
(
buffer
, 0, 0);
52
damage
(0, 0,
size
.
width
(),
size
.
height
());
53
m_frameCallback
.
reset
();
54
if
(
animated
) {
55
m_frameCallback
.
reset
(
new
WlCallback
(
frame
(), [
this
](
uint32_t
time
) {
56
Q_UNUSED
(
time
);
57
m_pointer
->
cursorFrameCallback
();
58
}));
59
}
60
commit
();
61
}
62
63
int
outputScale
()
const
64
{
65
int
scale
= 0;
66
for
(
auto
*
screen
:
m_screens
)
67
scale
=
qMax
(
scale
,
screen
->
scale
());
68
return
scale
;
69
}
70
71
private
:
72
std
::
unique_ptr
<
WlCallback
>
m_frameCallback
;
73
InputDevice
*
m_pointer
=
nullptr
;
74
uint
m_setSerial
= 0;
75
QPoint
m_hotspot
;
76
};
77
78
#
endif
// QT_CONFIG(cursor)
79
80
}
// namespace QtWaylandClient
81
82
QT_END_NAMESPACE
83
84
#
endif
// QWAYLANDCURSORSURFACE_H
QtWaylandClient::EnterEvent
Definition
qwaylandinputdevice.cpp:675
QtWaylandClient::EnterEvent::EnterEvent
EnterEvent(QWaylandSurface *surface, const QPointF &local, const QPointF &global)
Definition
qwaylandinputdevice.cpp:677
QtWaylandClient::LeaveEvent
Definition
qwaylandinputdevice.cpp:727
QtWaylandClient::LeaveEvent::LeaveEvent
LeaveEvent(QWaylandSurface *surface, const QPointF &localPos, const QPointF &globalPos)
Definition
qwaylandinputdevice.cpp:729
QtWaylandClient::MotionEvent
Definition
qwaylandinputdevice.cpp:756
QtWaylandClient::MotionEvent::MotionEvent
MotionEvent(QWaylandSurface *surface, ulong timestamp, const QPointF &localPos, const QPointF &globalPos, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers)
Definition
qwaylandinputdevice.cpp:758
QtWaylandClient::PressEvent
Definition
qwaylandinputdevice.cpp:798
QtWaylandClient::PressEvent::PressEvent
PressEvent(QWaylandSurface *surface, ulong timestamp, const QPointF &localPos, const QPointF &globalPos, Qt::MouseButtons buttons, Qt::MouseButton button, Qt::KeyboardModifiers modifiers)
Definition
qwaylandinputdevice.cpp:800
QtWaylandClient::QWaylandPointerEvent
Definition
qwaylandinputdevice_p.h:443
QtWaylandClient::QWaylandSurface
Definition
qwaylandsurface_p.h:37
QtWaylandClient::ReleaseEvent
Definition
qwaylandinputdevice.cpp:810
QtWaylandClient::ReleaseEvent::ReleaseEvent
ReleaseEvent(QWaylandSurface *surface, ulong timestamp, const QPointF &localPos, const QPointF &globalPos, Qt::MouseButtons buttons, Qt::MouseButton button, Qt::KeyboardModifiers modifiers)
Definition
qwaylandinputdevice.cpp:812
QtWaylandClient::WheelEvent
Definition
qwaylandinputdevice.cpp:925
QtWaylandClient::WheelEvent::WheelEvent
WheelEvent(QWaylandSurface *surface, Qt::ScrollPhase phase, ulong timestamp, const QPointF &local, const QPointF &global, const QPoint &pixelDelta, const QPoint &angleDelta, Qt::MouseEventSource source, Qt::KeyboardModifiers modifiers, bool inverted)
Definition
qwaylandinputdevice.cpp:927
QtWaylandClient::WlCallback
Definition
qwaylandcallback_p.h:15
QtWaylandClient::WlCallback::~WlCallback
~WlCallback() override
Definition
qwaylandcallback_p.h:21
QtWaylandClient::WlCallback::callback_done
void callback_done(uint32_t callback_data) override
Definition
qwaylandcallback_p.h:22
QtWaylandClient::WlCallback::WlCallback
WlCallback(::wl_callback *callback, std::function< void(uint32_t)> fn)
Definition
qwaylandcallback_p.h:17
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
QtWaylandClient
Definition
qwaylandclientextension.h:16
QtWaylandClient::Q_LOGGING_CATEGORY
Q_LOGGING_CATEGORY(lcQpaWayland, "qt.qpa.wayland")
QtWaylandClient::MaxTouchPoints
static const int MaxTouchPoints
Definition
qwaylandinputdevice.cpp:68
QtWaylandClient::Q_DECLARE_LOGGING_CATEGORY
Q_DECLARE_LOGGING_CATEGORY(lcQpaWaylandInput)
QtWaylandClient::QWaylandEventCompressionPrivate
Definition
qwaylandinputdevice_p.h:82
QtWaylandClient::QWaylandEventCompressionPrivate::QWaylandEventCompressionPrivate
QWaylandEventCompressionPrivate()
Definition
qwaylandinputdevice.cpp:70
QtWaylandClient::QWaylandEventCompressionPrivate::compressEvent
bool compressEvent()
Definition
qwaylandinputdevice.cpp:76
qtbase
src
plugins
platforms
wayland
qwaylandcursorsurface_p.h
Generated on
for Qt by
1.18.0