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
qxcbatom.cpp
Go to the documentation of this file.
1
// Copyright (C) 2018 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
#
include
"qxcbatom.h"
6
7
#
include
<
QtCore
/
qglobal
.
h
>
8
9
#
include
<
string
.
h
>
10
11
#
include
<
algorithm
>
12
#
include
<
cstdlib
>
13
14
QT_BEGIN_NAMESPACE
15
16
static
const
char
*
xcb_atomnames
= {
17
// window-manager <-> client protocols
18
"WM_PROTOCOLS\0"
19
"WM_DELETE_WINDOW\0"
20
"WM_TAKE_FOCUS\0"
21
"_NET_WM_PING\0"
22
"_NET_WM_CONTEXT_HELP\0"
23
"_NET_WM_SYNC_REQUEST\0"
24
"_NET_WM_SYNC_REQUEST_COUNTER\0"
25
"MANAGER\0"
26
"_NET_SYSTEM_TRAY_OPCODE\0"
27
28
// ICCCM window state
29
"WM_STATE\0"
30
"WM_CHANGE_STATE\0"
31
"WM_CLASS\0"
32
"WM_NAME\0"
33
34
// Session management
35
"WM_CLIENT_LEADER\0"
36
"WM_WINDOW_ROLE\0"
37
"SM_CLIENT_ID\0"
38
"WM_CLIENT_MACHINE\0"
39
40
// Clipboard
41
"CLIPBOARD\0"
42
"INCR\0"
43
"TARGETS\0"
44
"MULTIPLE\0"
45
"TIMESTAMP\0"
46
"SAVE_TARGETS\0"
47
"CLIP_TEMPORARY\0"
48
"_QT_SELECTION\0"
49
"_QT_CLIPBOARD_SENTINEL\0"
50
"_QT_SELECTION_SENTINEL\0"
51
"CLIPBOARD_MANAGER\0"
52
53
"RESOURCE_MANAGER\0"
54
55
"_XSETROOT_ID\0"
56
57
"_QT_SCROLL_DONE\0"
58
"_QT_INPUT_ENCODING\0"
59
60
"_QT_CLOSE_CONNECTION\0"
61
62
"_QT_GET_TIMESTAMP\0"
63
64
"_MOTIF_WM_HINTS\0"
65
66
"DTWM_IS_RUNNING\0"
67
"ENLIGHTENMENT_DESKTOP\0"
68
"_DT_SAVE_MODE\0"
69
"_SGI_DESKS_MANAGER\0"
70
71
// EWMH (aka NETWM)
72
"_NET_SUPPORTED\0"
73
"_NET_VIRTUAL_ROOTS\0"
74
"_NET_WORKAREA\0"
75
76
"_NET_MOVERESIZE_WINDOW\0"
77
"_NET_WM_MOVERESIZE\0"
78
79
"_NET_WM_NAME\0"
80
"_NET_WM_ICON_NAME\0"
81
"_NET_WM_ICON\0"
82
83
"_NET_WM_PID\0"
84
85
"_NET_WM_WINDOW_OPACITY\0"
86
87
"_NET_WM_STATE\0"
88
"_NET_WM_STATE_ABOVE\0"
89
"_NET_WM_STATE_BELOW\0"
90
"_NET_WM_STATE_FULLSCREEN\0"
91
"_NET_WM_STATE_MAXIMIZED_HORZ\0"
92
"_NET_WM_STATE_MAXIMIZED_VERT\0"
93
"_NET_WM_STATE_MODAL\0"
94
"_NET_WM_STATE_STAYS_ON_TOP\0"
95
"_NET_WM_STATE_DEMANDS_ATTENTION\0"
96
"_NET_WM_STATE_HIDDEN\0"
97
98
"_NET_WM_USER_TIME\0"
99
"_NET_WM_USER_TIME_WINDOW\0"
100
"_NET_WM_FULL_PLACEMENT\0"
101
102
"_NET_WM_WINDOW_TYPE\0"
103
"_NET_WM_WINDOW_TYPE_DESKTOP\0"
104
"_NET_WM_WINDOW_TYPE_DOCK\0"
105
"_NET_WM_WINDOW_TYPE_TOOLBAR\0"
106
"_NET_WM_WINDOW_TYPE_MENU\0"
107
"_NET_WM_WINDOW_TYPE_UTILITY\0"
108
"_NET_WM_WINDOW_TYPE_SPLASH\0"
109
"_NET_WM_WINDOW_TYPE_DIALOG\0"
110
"_NET_WM_WINDOW_TYPE_DROPDOWN_MENU\0"
111
"_NET_WM_WINDOW_TYPE_POPUP_MENU\0"
112
"_NET_WM_WINDOW_TYPE_TOOLTIP\0"
113
"_NET_WM_WINDOW_TYPE_NOTIFICATION\0"
114
"_NET_WM_WINDOW_TYPE_COMBO\0"
115
"_NET_WM_WINDOW_TYPE_DND\0"
116
"_NET_WM_WINDOW_TYPE_NORMAL\0"
117
"_KDE_NET_WM_WINDOW_TYPE_OVERRIDE\0"
118
119
"_KDE_NET_WM_DESKTOP_FILE\0"
120
"_KDE_NET_WM_FRAME_STRUT\0"
121
"_NET_FRAME_EXTENTS\0"
122
123
"_NET_STARTUP_INFO\0"
124
"_NET_STARTUP_INFO_BEGIN\0"
125
"_NET_STARTUP_ID\0"
126
127
"_NET_SUPPORTING_WM_CHECK\0"
128
129
"_NET_WM_CM_S0\0"
130
131
"_NET_SYSTEM_TRAY_VISUAL\0"
132
133
"_NET_ACTIVE_WINDOW\0"
134
135
// Property formats
136
"TEXT\0"
137
"UTF8_STRING\0"
138
"CARDINAL\0"
139
140
// xdnd
141
"XdndEnter\0"
142
"XdndPosition\0"
143
"XdndStatus\0"
144
"XdndLeave\0"
145
"XdndDrop\0"
146
"XdndFinished\0"
147
"XdndTypeList\0"
148
"XdndActionList\0"
149
150
"XdndSelection\0"
151
152
"XdndAware\0"
153
"XdndProxy\0"
154
155
"XdndActionCopy\0"
156
"XdndActionLink\0"
157
"XdndActionMove\0"
158
"XdndActionAsk\0"
159
"XdndActionPrivate\0"
160
161
// Xkb
162
"_XKB_RULES_NAMES\0"
163
164
// XEMBED
165
"_XEMBED\0"
166
"_XEMBED_INFO\0"
167
168
// XInput2
169
"Button Left\0"
170
"Button Middle\0"
171
"Button Right\0"
172
"Button Wheel Up\0"
173
"Button Wheel Down\0"
174
"Button Horiz Wheel Left\0"
175
"Button Horiz Wheel Right\0"
176
"Abs MT Position X\0"
177
"Abs MT Position Y\0"
178
"Abs MT Touch Major\0"
179
"Abs MT Touch Minor\0"
180
"Abs MT Orientation\0"
181
"Abs MT Pressure\0"
182
"Abs MT Tracking ID\0"
183
"Max Contacts\0"
184
"Rel X\0"
185
"Rel Y\0"
186
// XInput2 tablet
187
"Abs X\0"
188
"Abs Y\0"
189
"Abs Pressure\0"
190
"Abs Tilt X\0"
191
"Abs Tilt Y\0"
192
"Abs Wheel\0"
193
"Abs Distance\0"
194
"Wacom Serial IDs\0"
195
"INTEGER\0"
196
"Rel Horiz Wheel\0"
197
"Rel Vert Wheel\0"
198
"Rel Horiz Scroll\0"
199
"Rel Vert Scroll\0"
200
"_XSETTINGS_SETTINGS\0"
201
"_COMPIZ_DECOR_PENDING\0"
202
"_COMPIZ_DECOR_REQUEST\0"
203
"_COMPIZ_DECOR_DELETE_PIXMAP\0"
204
"_COMPIZ_TOOLKIT_ACTION\0"
205
"_GTK_APPLICATION_ID\0"
206
"_GTK_LOAD_ICONTHEMES\0"
207
"AT_SPI_BUS\0"
208
"EDID\0"
209
"EDID_DATA\0"
210
"XFree86_DDC_EDID1_RAWDATA\0"
211
"_ICC_PROFILE\0"
212
"_KDE_NET_WM_APPMENU_SERVICE_NAME\0"
213
"_KDE_NET_WM_APPMENU_OBJECT_PATH\0"
214
// \0\0 terminates loop.
215
};
216
217
QXcbAtom::QXcbAtom()
218
{
219
}
220
221
void
QXcbAtom::initialize(xcb_connection_t *connection)
222
{
223
initializeAllAtoms(connection);
224
}
225
226
void
QXcbAtom::initializeAllAtoms(xcb_connection_t *connection) {
227
const
char
*name = xcb_atomnames;
228
size_t name_len;
229
int
i = 0;
230
xcb_intern_atom_cookie_t cookies[QXcbAtom::NAtoms];
231
232
while
((name_len = strlen(name)) != 0) {
233
cookies[i] = xcb_intern_atom(connection,
false
, name_len, name);
234
++i;
235
name += name_len + 1;
// jump over the \0
236
}
237
238
Q_ASSERT(i == QXcbAtom::NAtoms);
239
240
for
(i = 0; i < QXcbAtom::NAtoms; ++i) {
241
xcb_intern_atom_reply_t *reply = xcb_intern_atom_reply(connection, cookies[i],
nullptr
);
242
if
(reply) {
243
m_allAtoms[i] = reply->atom;
244
free(reply);
245
}
246
}
247
}
248
249
QXcbAtom::Atom QXcbAtom::qatom(xcb_atom_t xatom)
const
250
{
251
return
static_cast
<QXcbAtom::Atom>(
std
::find(m_allAtoms, m_allAtoms + QXcbAtom::NAtoms, xatom) - m_allAtoms);
252
}
253
254
QT_END_NAMESPACE
std
[33]
Definition
src_corelib_tools_qhash.cpp:421
xcb_atomnames
static QT_BEGIN_NAMESPACE const char * xcb_atomnames
Definition
qxcbatom.cpp:16
qtbase
src
plugins
platforms
xcb
qxcbatom.cpp
Generated on
for Qt by
1.18.0