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#pragma once
4
5#include <xcb/xcb.h>
6
7class QXcbAtom
8{
9public:
10 enum Atom {
11 // window-manager <-> client protocols
12 AtomWM_PROTOCOLS,
13 AtomWM_DELETE_WINDOW,
14 AtomWM_TAKE_FOCUS,
15 Atom_NET_WM_PING,
16 Atom_NET_WM_CONTEXT_HELP,
17 Atom_NET_WM_SYNC_REQUEST,
18 Atom_NET_WM_SYNC_REQUEST_COUNTER,
19 AtomMANAGER, // System tray notification
20 Atom_NET_SYSTEM_TRAY_OPCODE, // System tray operation
21
22 // ICCCM window state
23 AtomWM_STATE,
24 AtomWM_CHANGE_STATE,
25 AtomWM_CLASS,
26 AtomWM_NAME,
27
28 // Session management
29 AtomWM_CLIENT_LEADER,
30 AtomWM_WINDOW_ROLE,
31 AtomSM_CLIENT_ID,
32 AtomWM_CLIENT_MACHINE,
33
34 // Clipboard
35 AtomCLIPBOARD,
36 AtomINCR,
37 AtomTARGETS,
38 AtomMULTIPLE,
39 AtomTIMESTAMP,
40 AtomSAVE_TARGETS,
41 AtomCLIP_TEMPORARY,
42 Atom_QT_SELECTION,
43 Atom_QT_CLIPBOARD_SENTINEL,
44 Atom_QT_SELECTION_SENTINEL,
45 AtomCLIPBOARD_MANAGER,
46
47 AtomRESOURCE_MANAGER,
48
49 Atom_XSETROOT_ID,
50
51 Atom_QT_SCROLL_DONE,
52 Atom_QT_INPUT_ENCODING,
53
54 // Qt/XCB specific
55 Atom_QT_CLOSE_CONNECTION,
56
57 Atom_QT_GET_TIMESTAMP,
58
59 Atom_MOTIF_WM_HINTS,
60
61 AtomDTWM_IS_RUNNING,
62 AtomENLIGHTENMENT_DESKTOP,
63 Atom_DT_SAVE_MODE,
64 Atom_SGI_DESKS_MANAGER,
65
66 // EWMH (aka NETWM)
67 Atom_NET_SUPPORTED,
68 Atom_NET_VIRTUAL_ROOTS,
69 Atom_NET_WORKAREA,
70
71 Atom_NET_MOVERESIZE_WINDOW,
72 Atom_NET_WM_MOVERESIZE,
73
74 Atom_NET_WM_NAME,
75 Atom_NET_WM_ICON_NAME,
76 Atom_NET_WM_ICON,
77
78 Atom_NET_WM_PID,
79
80 Atom_NET_WM_WINDOW_OPACITY,
81
82 Atom_NET_WM_STATE,
83 Atom_NET_WM_STATE_ABOVE,
84 Atom_NET_WM_STATE_BELOW,
85 Atom_NET_WM_STATE_FULLSCREEN,
86 Atom_NET_WM_STATE_MAXIMIZED_HORZ,
87 Atom_NET_WM_STATE_MAXIMIZED_VERT,
88 Atom_NET_WM_STATE_MODAL,
89 Atom_NET_WM_STATE_STAYS_ON_TOP,
90 Atom_NET_WM_STATE_DEMANDS_ATTENTION,
91 Atom_NET_WM_STATE_HIDDEN,
92
93 Atom_NET_WM_USER_TIME,
94 Atom_NET_WM_USER_TIME_WINDOW,
95 Atom_NET_WM_FULL_PLACEMENT,
96
97 Atom_NET_WM_WINDOW_TYPE,
98 Atom_NET_WM_WINDOW_TYPE_DESKTOP,
99 Atom_NET_WM_WINDOW_TYPE_DOCK,
100 Atom_NET_WM_WINDOW_TYPE_TOOLBAR,
101 Atom_NET_WM_WINDOW_TYPE_MENU,
102 Atom_NET_WM_WINDOW_TYPE_UTILITY,
103 Atom_NET_WM_WINDOW_TYPE_SPLASH,
104 Atom_NET_WM_WINDOW_TYPE_DIALOG,
105 Atom_NET_WM_WINDOW_TYPE_DROPDOWN_MENU,
106 Atom_NET_WM_WINDOW_TYPE_POPUP_MENU,
107 Atom_NET_WM_WINDOW_TYPE_TOOLTIP,
108 Atom_NET_WM_WINDOW_TYPE_NOTIFICATION,
109 Atom_NET_WM_WINDOW_TYPE_COMBO,
110 Atom_NET_WM_WINDOW_TYPE_DND,
111 Atom_NET_WM_WINDOW_TYPE_NORMAL,
112 Atom_KDE_NET_WM_WINDOW_TYPE_OVERRIDE,
113
114 Atom_KDE_NET_WM_DESKTOP_FILE,
115 Atom_KDE_NET_WM_FRAME_STRUT,
116 Atom_NET_FRAME_EXTENTS,
117
118 Atom_NET_STARTUP_INFO,
119 Atom_NET_STARTUP_INFO_BEGIN,
120 Atom_NET_STARTUP_ID,
121
122 Atom_NET_SUPPORTING_WM_CHECK,
123
124 Atom_NET_WM_CM_S0,
125
126 Atom_NET_SYSTEM_TRAY_VISUAL,
127
128 Atom_NET_ACTIVE_WINDOW,
129
130 // Property formats
131 AtomTEXT,
132 AtomUTF8_STRING,
133 AtomCARDINAL,
134
135 // Xdnd
136 AtomXdndEnter,
137 AtomXdndPosition,
138 AtomXdndStatus,
139 AtomXdndLeave,
140 AtomXdndDrop,
141 AtomXdndFinished,
142 AtomXdndTypelist,
143 AtomXdndActionList,
144
145 AtomXdndSelection,
146
147 AtomXdndAware,
148 AtomXdndProxy,
149
150 AtomXdndActionCopy,
151 AtomXdndActionLink,
152 AtomXdndActionMove,
153 AtomXdndActionAsk,
154 AtomXdndActionPrivate,
155
156 // Xkb
157 Atom_XKB_RULES_NAMES,
158
159 // XEMBED
160 Atom_XEMBED,
161 Atom_XEMBED_INFO,
162
163 // XInput2
164 AtomButtonLeft,
165 AtomButtonMiddle,
166 AtomButtonRight,
167 AtomButtonWheelUp,
168 AtomButtonWheelDown,
169 AtomButtonHorizWheelLeft,
170 AtomButtonHorizWheelRight,
171 AtomAbsMTPositionX,
172 AtomAbsMTPositionY,
173 AtomAbsMTTouchMajor,
174 AtomAbsMTTouchMinor,
175 AtomAbsMTOrientation,
176 AtomAbsMTPressure,
177 AtomAbsMTTrackingID,
178 AtomMaxContacts,
179 AtomRelX,
180 AtomRelY,
181 // XInput2 tablet
182 AtomAbsX,
183 AtomAbsY,
184 AtomAbsPressure,
185 AtomAbsTiltX,
186 AtomAbsTiltY,
187 AtomAbsWheel,
188 AtomAbsDistance,
189 AtomWacomSerialIDs,
190 AtomINTEGER,
191 AtomRelHorizWheel,
192 AtomRelVertWheel,
193 AtomRelHorizScroll,
194 AtomRelVertScroll,
195
196 Atom_XSETTINGS_SETTINGS,
197
198 Atom_COMPIZ_DECOR_PENDING,
199 Atom_COMPIZ_DECOR_REQUEST,
200 Atom_COMPIZ_DECOR_DELETE_PIXMAP,
201 Atom_COMPIZ_TOOLKIT_ACTION,
202 Atom_GTK_APPLICATION_ID,
203 Atom_GTK_LOAD_ICONTHEMES,
204
205 AtomAT_SPI_BUS,
206
207 AtomEDID,
208 AtomEDID_DATA,
209 AtomXFree86_DDC_EDID1_RAWDATA,
210
211 Atom_ICC_PROFILE,
212
213 NAtoms
214 };
215
216 QXcbAtom();
217 void initialize(xcb_connection_t *connection);
218
219 inline xcb_atom_t atom(QXcbAtom::Atom atom) const { return m_allAtoms[atom]; }
220 QXcbAtom::Atom qatom(xcb_atom_t atom) const;
221
222protected:
223 void initializeAllAtoms(xcb_connection_t *connection);
224
225private:
226 xcb_atom_t m_allAtoms[QXcbAtom::NAtoms];
227};
228

source code of qtbase/src/plugins/platforms/xcb/qxcbatom.h