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