1 /* -*-c-*- */
2 
3 #ifndef _WINDOW_FLAGS_
4 #define _WINDOW_FLAGS_
5 
6 #include "focus_policy.h"
7 
8 /* access to the common flags of a window */
9 #define FW_COMMON_FLAGS(fw) \
10 	((fw)->flags.common)
11 #define FW_COMMON_STATIC_FLAGS(fw) \
12 	((fw)->flags.common.s)
13 #define FW_FOCUS_POLICY(fw) \
14 	((fw)->flags.common.s.focus_policy)
15 
16 #define DO_LOWER_TRANSIENT(fw) \
17 	((fw)->flags.common.s.do_lower_transient)
18 #define DO_NOT_SHOW_ON_MAP(fw) \
19 	((fw)->flags.common.s.do_not_show_on_map)
20 #define DO_RAISE_TRANSIENT(fw) \
21 	((fw)->flags.common.s.do_raise_transient)
22 #define DO_RESIZE_OPAQUE(fw) \
23 	((fw)->flags.common.s.do_resize_opaque)
24 #define DO_SHRINK_WINDOWSHADE(fw) \
25 	((fw)->flags.common.s.do_shrink_windowshade)
26 #define SET_DO_SHRINK_WINDOWSHADE(fw,x) \
27 	(fw)->flags.common.s.do_shrink_windowshade = !!(x)
28 #define SETM_DO_SHRINK_WINDOWSHADE(fw,x) \
29 	(fw)->flag_mask.common.s.do_shrink_windowshade = !!(x)
30 #define DO_SKIP_CIRCULATE(fw) \
31 	((fw)->flags.common.s.do_circulate_skip)
32 #define SET_DO_SKIP_CIRCULATE(fw,x) \
33 	(fw)->flags.common.s.do_circulate_skip = !!(x)
34 #define SETM_DO_SKIP_CIRCULATE(fw,x) \
35 	(fw)->flag_mask.common.s.do_circulate_skip = !!(x)
36 #define DO_SKIP_ICON_CIRCULATE(fw) \
37 	((fw)->flags.common.s.do_circulate_skip_icon)
38 #define SET_DO_SKIP_ICON_CIRCULATE(fw,x) \
39 	(fw)->flags.common.s.do_circulate_skip_icon = !!(x)
40 #define SETM_DO_SKIP_ICON_CIRCULATE(fw,x) \
41 	(fw)->flag_mask.common.s.do_circulate_skip_icon = !!(x)
42 #define DO_SKIP_SHADED_CIRCULATE(fw) \
43 	((fw)->flags.common.s.do_circulate_skip_shaded)
44 #define SET_DO_SKIP_SHADED_CIRCULATE(fw,x) \
45 	(fw)->flags.common.s.do_circulate_skip_shaded = !!(x)
46 #define SETM_DO_SKIP_SHADED_CIRCULATE(fw,x) \
47 	(fw)->flag_mask.common.s.do_circulate_skip_shaded = !!(x)
48 #define DO_SKIP_WINDOW_LIST(fw) \
49 	((fw)->flags.common.s.do_window_list_skip)
50 #define SET_DO_SKIP_WINDOW_LIST(fw,x) \
51 	(fw)->flags.common.s.do_window_list_skip = !!(x)
52 #define SETM_DO_SKIP_WINDOW_LIST(fw,x) \
53 	(fw)->flag_mask.common.s.do_window_list_skip = !!(x)
54 #define DO_STACK_TRANSIENT_PARENT(fw) \
55 	((fw)->flags.common.s.do_stack_transient_parent)
56 #define GET_TITLE_DIR(fw) \
57 	((fw)->flags.common.title_dir)
58 #define HAS_TITLE_DIR(fw,x) \
59 	((fw)->flags.common.title_dir == x)
60 #define SET_TITLE_DIR(fw,x) \
61 	((fw)->flags.common.title_dir = x)
62 #define SETM_TITLE_DIR(fw,x) \
63 	((fw)->flag_mask.common.title_dir = ((x) ? DIR_MAJOR_MASK : 0))
64 #define SET_USER_STATES(fw, mask) \
65 	((fw)->flags.common.user_states |= (mask))
66 #define CLEAR_USER_STATES(fw, mask) \
67 	((fw)->flags.common.user_states &= ~(mask))
68 #define TOGGLE_USER_STATES(fw, mask) \
69 	((fw)->flags.common.user_states ^= (mask))
70 #define SETM_USER_STATES(fw, mask) \
71 	((fw)->flag_mask.common.user_states |= (mask))
72 #define GET_USER_STATES(fw) \
73 	((fw)->flags.common.user_states)
74 #define GETM_USER_STATES(fw) \
75 	((fw)->flag_mask.common.user_states)
76 #define HAS_VERTICAL_TITLE(fw) \
77 	((HAS_TITLE_DIR(fw,DIR_W) || HAS_TITLE_DIR(fw,DIR_E)))
78 #define HAS_STIPPLED_TITLE(fw) \
79 	((fw)->flags.common.s.has_stippled_title)
80 #define SET_HAS_STIPPLED_TITLE(fw,x) \
81 	(fw)->flags.common.s.has_stippled_title = !!(x)
82 #define SETM_HAS_STIPPLED_TITLE(fw,x) \
83 	(fw)->flag_mask.common.s.has_stippled_title = !!(x)
84 #define HAS_STICKY_STIPPLED_TITLE(fw) \
85 	!((fw)->flags.common.s.has_no_sticky_stippled_title)
86 #define SET_HAS_STICKY_STIPPLED_TITLE(fw,x) \
87 	(fw)->flags.common.s.has_no_sticky_stippled_title = !(x)
88 #define SETM_HAS_STICKY_STIPPLED_TITLE(fw,x) \
89 	(fw)->flag_mask.common.s.has_no_sticky_stippled_title = !!(x)
90 #define HAS_STICKY_STIPPLED_ICON_TITLE(fw) \
91 	!((fw)->flags.common.s.has_no_sticky_stippled_icon_title)
92 #define SET_HAS_STICKY_STIPPLED_ICON_TITLE(fw,x) \
93 	(fw)->flags.common.s.has_no_sticky_stippled_icon_title = !(x)
94 #define SETM_HAS_STICKY_STIPPLED_ICON_TITLE(fw,x) \
95 	(fw)->flag_mask.common.s.has_no_sticky_stippled_icon_title = !!(x)
96 #define HAS_STIPPLED_ICON_TITLE(fw) \
97 	((fw)->flags.common.s.has_stippled_icon_title)
98 #define SET_HAS_STIPPLED_ICON_TITLE(fw,x) \
99 	(fw)->flags.common.s.has_stippled_icon_title = !!(x)
100 #define SETM_HAS_STIPPLED_ICON_TITLE(fw,x) \
101 	(fw)->flag_mask.common.s.has_stippled_icon_title = !!(x)
102 #define ICON_OVERRIDE_MODE(fw) \
103 	((fw)->flags.common.s.icon_override)
104 #define SET_ICON_OVERRIDE_MODE(fw,x) \
105 	(fw)->flags.common.s.icon_override = ((x) & ICON_OVERRIDE_MASK)
106 #define SETM_ICON_OVERRIDE_MODE(fw,x) \
107 	(fw)->flag_mask.common.s.icon_override = ((x) ? ICON_OVERRIDE_MASK : 0)
108 #define IS_ICON_STICKY_ACROSS_PAGES(fw) \
109 	((fw)->flags.common.s.is_icon_sticky_across_pages)
110 #define SET_ICON_STICKY_ACROSS_PAGES(fw,x) \
111 	(fw)->flags.common.s.is_icon_sticky_across_pages = !!(x)
112 #define SETM_ICON_STICKY_ACROSS_PAGES(fw,x) \
113 	(fw)->flag_mask.common.s.is_icon_sticky_across_pages = !!(x)
114 #define IS_ICON_STICKY_ACROSS_DESKS(fw) \
115 	((fw)->flags.common.s.is_icon_sticky_across_desks)
116 #define SET_ICON_STICKY_ACROSS_DESKS(fw,x) \
117 	(fw)->flags.common.s.is_icon_sticky_across_desks = !!(x)
118 #define SETM_ICON_STICKY_ACROSS_DESKS(fw,x) \
119 	(fw)->flag_mask.common.s.is_icon_sticky_across_desks = !!(x)
120 #define USE_ICON_POSITION_HINT(fw) \
121 	((fw)->flags.common.s.use_icon_position_hint)
122 #define SET_USE_ICON_POSITION_HINT(fw,x) \
123 	(fw)->flags.common.s.use_icon_position_hint = !!(x)
124 #define SETM_USE_ICON_POSITION_HINT(fw,x) \
125 	(fw)->flag_mask.common.s.use_icon_position_hint = !!(x)
126 #define USE_INDEXED_WINDOW_NAME(fw) \
127 	((fw)->flags.common.s.use_indexed_window_name)
128 #define SET_USE_INDEXED_WINDOW_NAME(fw,x) \
129 	(fw)->flags.common.s.use_indexed_window_name = !!(x)
130 #define SETM_USE_INDEXED_WINDOW_NAME(fw,x) \
131 	(fw)->flag_mask.common.s.use_indexed_window_name = !!(x)
132 #define USE_INDEXED_ICON_NAME(fw) \
133 	((fw)->flags.common.s.use_indexed_icon_name)
134 #define SET_USE_INDEXED_ICON_NAME(fw,x) \
135 	(fw)->flags.common.s.use_indexed_icon_name = !!(x)
136 #define SETM_USE_INDEXED_ICON_NAME(fw,x) \
137 	(fw)->flag_mask.common.s.use_indexed_icon_name = !!(x)
138 #define WINDOWSHADE_LAZINESS(fw) \
139 	((fw)->flags.common.s.windowshade_laziness)
140 #define SET_WINDOWSHADE_LAZINESS(fw,x) \
141 	(fw)->flags.common.s.windowshade_laziness = \
142 	((x) & WINDOWSHADE_LAZY_MASK)
143 #define SETM_WINDOWSHADE_LAZINESS(fw,x) \
144 	(fw)->flag_mask.common.s.windowshade_laziness = \
145 	((x) ? WINDOWSHADE_LAZY_MASK : 0)
146 #define DO_EWMH_MINI_ICON_OVERRIDE(fw) \
147 	((fw)->flags.common.s.do_ewmh_mini_icon_override)
148 #define SET_DO_EWMH_MINI_ICON_OVERRIDE(fw,x) \
149 	(fw)->flags.common.s.do_ewmh_mini_icon_override = !!(x)
150 #define SETM_DO_EWMH_MINI_ICON_OVERRIDE(fw,x) \
151 	(fw)->flag_mask.common.s.do_ewmh_mini_icon_override = !!(x)
152 #define DO_EWMH_DONATE_ICON(fw) \
153 	((fw)->flags.common.s.do_ewmh_donate_icon)
154 #define SET_DO_EWMH_DONATE_ICON(fw,x) \
155 	(fw)->flags.common.s.do_ewmh_donate_icon = !!(x)
156 #define SETM_DO_EWMH_DONATE_ICON(fw,x) \
157 	(fw)->flag_mask.common.s.do_ewmh_donate_icon = !!(x)
158 #define DO_EWMH_DONATE_MINI_ICON(fw) \
159 	((fw)->flags.common.s.do_ewmh_donate_mini_icon)
160 #define SET_DO_EWMH_DONATE_MINI_ICON(fw,x) \
161 	(fw)->flags.common.s.do_ewmh_donate_mini_icon = !!(x)
162 #define SETM_DO_EWMH_DONATE_MINI_ICON(fw,x) \
163 	(fw)->flag_mask.common.s.do_ewmh_donate_mini_icon = !!(x)
164 #define DO_EWMH_USE_STACKING_HINTS(fw) \
165 	((fw)->flags.common.s.do_ewmh_use_stacking_hints)
166 #define SET_DO_EWMH_USE_STACKING_HINTS(fw,x) \
167 	(fw)->flags.common.s.do_ewmh_use_stacking_hints = !!(x)
168 #define SETM_DO_EWMH_USE_STACKING_HINTS(fw,x) \
169 	(fw)->flag_mask.common.s.do_ewmh_use_stacking_hints = !!(x)
170 #define DO_EWMH_IGNORE_STRUT_HINTS(fw) \
171 	((fw)->flags.common.s.do_ewmh_ignore_strut_hints)
172 #define SET_DO_EWMH_IGNORE_STRUT_HINTS(fw,x) \
173 	(fw)->flags.common.s.do_ewmh_ignore_strut_hints = !!(x)
174 #define SETM_DO_EWMH_IGNORE_STRUT_HINTS(fw,x) \
175 	(fw)->flag_mask.common.s.do_ewmh_ignore_strut_hints = !!(x)
176 #define DO_EWMH_IGNORE_STATE_HINTS(fw) \
177 	((fw)->flags.common.s.do_ewmh_ignore_state_hints)
178 #define SET_DO_EWMH_IGNORE_STATE_HINTS(fw,x) \
179 	(fw)->flags.common.s.do_ewmh_ignore_state_hints = !!(x)
180 #define SETM_DO_EWMH_IGNORE_STATE_HINTS(fw,x) \
181 	(fw)->flag_mask.common.s.do_ewmh_ignore_state_hints = !!(x)
182 #define DO_EWMH_IGNORE_WINDOW_TYPE(fw) \
183 	((fw)->flags.common.s.do_ewmh_ignore_window_type)
184 #define SET_DO_EWMH_IGNORE_WINDOW_TYPE(fw,x) \
185 	(fw)->flags.common.s.do_ewmh_ignore_window_type = !!(x)
186 #define SETM_DO_EWMH_IGNORE_WINDOW_TYPE(fw,x) \
187 	(fw)->flag_mask.common.s.do_ewmh_ignore_window_type = !!(x)
188 #define EWMH_MAXIMIZE_MODE(fw) \
189 	((fw)->flags.common.s.ewmh_maximize_mode)
190 #define SET_EWMH_MAXIMIZE_MODE(fw,x) \
191 	(fw)->flags.common.s.ewmh_maximize_mode = (x)
192 #define SETM_EWMH_MAXIMIZE_MODE(fw,x) \
193 	(fw)->flag_mask.common.s.ewmh_maximize_mode = (x)
194 #define IS_ICON_SUPPRESSED(fw) \
195 	((fw)->flags.common.s.is_icon_suppressed)
196 #define SET_ICON_SUPPRESSED(fw,x) \
197 	(fw)->flags.common.s.is_icon_suppressed = !!(x)
198 #define SETM_ICON_SUPPRESSED(fw,x) \
199 	(fw)->flag_mask.common.s.is_icon_suppressed = !!(x)
200 #define IS_STICKY_ACROSS_PAGES(fw) \
201 	((fw)->flags.common.is_sticky_across_pages)
202 #define SET_STICKY_ACROSS_PAGES(fw,x) \
203 	(fw)->flags.common.is_sticky_across_pages = !!(x)
204 #define SETM_STICKY_ACROSS_PAGES(fw,x) \
205 	(fw)->flag_mask.common.is_sticky_across_pages = !!(x)
206 #define IS_STICKY_ACROSS_DESKS(fw) \
207 	((fw)->flags.common.is_sticky_across_desks)
208 #define SET_STICKY_ACROSS_DESKS(fw,x) \
209 	(fw)->flags.common.is_sticky_across_desks = !!(x)
210 #define SETM_STICKY_ACROSS_DESKS(fw,x) \
211 	(fw)->flag_mask.common.is_sticky_across_desks = !!(x)
212 #define HAS_ICON_FONT(fw) \
213 	((fw)->flags.common.has_icon_font)
214 #define SET_HAS_ICON_FONT(fw,x) \
215 	(fw)->flags.common.has_icon_font = !!(x)
216 #define SETM_HAS_ICON_FONT(fw,x) \
217 	(fw)->flag_mask.common.has_icon_font = !!(x)
218 #define HAS_NO_ICON_TITLE(fw) \
219 	((fw)->flags.common.s.has_no_icon_title)
220 #define SET_HAS_NO_ICON_TITLE(fw,x) \
221 	(fw)->flags.common.s.has_no_icon_title = !!(x)
222 #define SETM_HAS_NO_ICON_TITLE(fw,x) \
223 	(fw)->flag_mask.common.s.has_no_icon_title = !!(x)
224 #define HAS_WINDOW_FONT(fw) \
225 	((fw)->flags.common.has_window_font)
226 #define SET_HAS_WINDOW_FONT(fw,x) \
227 	(fw)->flags.common.has_window_font = !!(x)
228 #define SETM_HAS_WINDOW_FONT(fw,x) \
229 	(fw)->flag_mask.common.has_window_font = !!(x)
230 #define HAS_MWM_BORDER(fw) \
231 	((fw)->flags.common.s.has_mwm_border)
232 #define HAS_MWM_BUTTONS(fw) \
233 	((fw)->flags.common.s.has_mwm_buttons)
234 #define HAS_MWM_OVERRIDE_HINTS(fw) \
235 	((fw)->flags.common.s.has_mwm_override)
236 #define HAS_OVERRIDE_SIZE_HINTS(fw) \
237 	((fw)->flags.common.s.has_override_size)
238 #define DO_ICONIFY_WINDOW_GROUPS(fw) \
239 	((fw)->flags.common.s.do_iconify_window_groups)
240 #define DO_IGNORE_GNOME_HINTS(fw) \
241 	((fw)->flags.common.s.do_ignore_gnome_hints)
242 #define DO_IGNORE_RESTACK(fw) \
243 	((fw)->flags.common.s.do_ignore_restack)
244 #define DO_IGNORE_ICON_BOXES(fw) \
245 	((fw)->flags.common.s.do_ignore_icon_boxes)
246 #define DO_USE_WINDOW_GROUP_HINT(fw) \
247 	((fw)->flags.common.s.do_use_window_group_hint)
248 #define IS_FIXED(fw) \
249 	((fw)->flags.common.s.is_fixed)
250 #define SET_FIXED(fw,x) \
251 	(fw)->flags.common.s.is_fixed = !!(x)
252 #define SETM_FIXED(fw,x) \
253 	(fw)->flag_mask.common.s.is_fixed = !!(x)
254 #define IS_FIXED_PPOS(fw) \
255 	((fw)->flags.common.s.is_fixed_ppos)
256 #define SET_FIXED_PPOS(fw,x) \
257 	(fw)->flags.common.s.is_fixed_ppos = !!(x)
258 #define SETM_FIXED_PPOS(fw,x) \
259 	(fw)->flag_mask.common.s.is_fixed_ppos = !!(x)
260 #define IS_SIZE_FIXED(fw) \
261 	((fw)->flags.common.s.is_size_fixed)
262 #define SET_SIZE_FIXED(fw,x) \
263 	(fw)->flags.common.s.is_size_fixed = !!(x)
264 #define SETM_SIZE_FIXED(fw,x) \
265 	(fw)->flag_mask.common.s.is_size_fixed = !!(x)
266 #define IS_PSIZE_FIXED(fw) \
267 	((fw)->flags.common.s.is_psize_fixed)
268 #define SET_PSIZE_FIXED(fw,x) \
269 	(fw)->flags.common.s.is_psize_fixed = !!(x)
270 #define SETM_PSIZE_FIXED(fw,x) \
271 	(fw)->flag_mask.common.s.is_psize_fixed = !!(x)
272 #define IS_UNICONIFIABLE(fw) \
273 	((fw)->flags.common.s.is_uniconifiable)
274 #define SET_IS_UNICONIFIABLE(fw,x) \
275 	(fw)->flags.common.s.is_uniconifiable = !!(x)
276 #define SETM_IS_UNICONIFIABLE(fw,x) \
277 	(fw)->flag_mask.common.s.is_uniconifiable = !!(x)
278 #define IS_UNMAXIMIZABLE(fw) \
279 	((fw)->flags.common.s.is_unmaximizable)
280 #define SET_IS_UNMAXIMIZABLE(fw,x) \
281 	(fw)->flags.common.s.is_unmaximizable = !!(x)
282 #define SETM_IS_UNMAXIMIZABLE(fw,x) \
283 	(fw)->flag_mask.common.s.is_unmaximizable = !!(x)
284 #define IS_UNCLOSABLE(fw) \
285 	((fw)->flags.common.s.is_unclosable)
286 #define SET_IS_UNCLOSABLE(fw,x) \
287 	(fw)->flags.common.s.is_unclosable = !!(x)
288 #define SETM_IS_UNCLOSABLE(fw,x) \
289 	(fw)->flag_mask.common.s.is_unclosable = !!(x)
290 #define IS_MAXIMIZE_FIXED_SIZE_DISALLOWED(fw) \
291 	((fw)->flags.common.s.is_maximize_fixed_size_disallowed)
292 #define SET_MAXIMIZE_FIXED_SIZE_DISALLOWED(fw,x) \
293 	(fw)->flags.common.s.is_maximize_fixed_size_disallowed = !!(x)
294 #define SETM_MAXIMIZE_FIXED_SIZE_DISALLOWED(fw,x) \
295 	(fw)->flag_mask.common.s.is_maximize_fixed_size_disallowed = !!(x)
296 #define HAS_DEPRESSABLE_BORDER(fw) \
297 	((fw)->flags.common.s.has_depressable_border)
298 
299 #define IS_LEFT_TITLE_ROTATED_CW(fw) \
300 	((fw)->flags.common.s.is_left_title_rotated_cw)
301 #define SET_IS_LEFT_TITLE_ROTATED_CW(fw,x) \
302 	(fw)->flags.common.s.is_left_title_rotated_cw = !!(x)
303 #define SETM_IS_LEFT_TITLE_ROTATED_CW(fw,x) \
304 	(fw)->flag_mask.common.s.is_left_title_rotated_cw = !!(x)
305 #define IS_RIGHT_TITLE_ROTATED_CW(fw) \
306 	((fw)->flags.common.s.is_right_title_rotated_cw)
307 #define SET_IS_RIGHT_TITLE_ROTATED_CW(fw,x) \
308 	(fw)->flags.common.s.is_right_title_rotated_cw = !!(x)
309 #define SETM_IS_RIGHT_TITLE_ROTATED_CW(fw,x) \
310 	(fw)->flag_mask.common.s.is_right_title_rotated_cw = !!(x)
311 #define IS_BOTTOM_TITLE_ROTATED(fw) \
312 	((fw)->flags.common.s.is_bottom_title_rotated)
313 #define SET_IS_BOTTOM_TITLE_ROTATED(fw,x) \
314 	(fw)->flags.common.s.is_bottom_title_rotated = !!(x)
315 #define SETM_IS_BOTTOM_TITLE_ROTATED(fw,x) \
316 	(fw)->flag_mask.common.s.is_bottom_title_rotated = !!(x)
317 #define IS_BOTTOM_TITLE_ROTATED(fw) \
318 	((fw)->flags.common.s.is_bottom_title_rotated)
319 #define SET_IS_BOTTOM_TITLE_ROTATED(fw,x) \
320 	(fw)->flags.common.s.is_bottom_title_rotated = !!(x)
321 #define SETM_IS_BOTTOM_TITLE_ROTATED(fw,x) \
322 	(fw)->flag_mask.common.s.is_bottom_title_rotated = !!(x)
323 #define USE_TITLE_DECOR_ROTATION(fw) \
324 	((fw)->flags.common.s.use_title_decor_rotation)
325 #define SET_USE_TITLE_DECOR_ROTATION(fw,x) \
326 	(fw)->flags.common.s.use_title_decor_rotation = !!(x)
327 #define SETM_USE_TITLE_DECOR_ROTATION(fw,x) \
328 	(fw)->flag_mask.common.s.use_title_decor_rotation = !!(x)
329 
330 /* access to the special flags of a window */
331 #define DO_REUSE_DESTROYED(fw) \
332 	((fw)->flags.do_reuse_destroyed)
333 #define SET_DO_REUSE_DESTROYED(fw,x) \
334 	(fw)->flags.do_reuse_destroyed = !!(x)
335 #define SETM_DO_REUSE_DESTROYED(fw,x) \
336 	(fw)->flag_mask.do_reuse_destroyed = !!(x)
337 #define HAS_NO_BORDER(fw) \
338 	((fw)->flags.common.has_no_border)
339 #define SET_HAS_NO_BORDER(fw,x) \
340 	(fw)->flags.common.has_no_border = !!(x)
341 #define SETM_HAS_NO_BORDER(fw,x) \
342 	(fw)->flag_mask.common.has_no_border = !!(x)
343 #define HAS_HANDLES(fw) \
344 	((fw)->flags.has_handles)
345 #define SET_HAS_HANDLES(fw,x) \
346 	(fw)->flags.has_handles = !!(x)
347 #define SETM_HAS_HANDLES(fw,x) \
348 	(fw)->flag_mask.has_handles = !!(x)
349 #define HAS_ICON_CHANGED(fw) \
350 	((fw)->flags.has_icon_changed)
351 #define SET_HAS_ICON_CHANGED(fw,x) \
352 	(fw)->flags.has_icon_changed = !!(x)
353 #define SETM_HAS_ICON_CHANGED(fw,x) \
354 	(fw)->flag_mask.has_icon_changed = !!(x)
355 #define HAS_TITLE(fw) \
356 	((fw)->flags.has_title)
357 #define SET_HAS_TITLE(fw,x) \
358 	(fw)->flags.has_title = !!(x)
359 #define SETM_HAS_TITLE(fw,x) \
360 	(fw)->flag_mask.has_title = !!(x)
361 #define HAS_NEW_WM_NORMAL_HINTS(fw) \
362 	((fw)->flags.has_new_wm_normal_hints)
363 #define SET_HAS_NEW_WM_NORMAL_HINTS(fw,x) \
364 	(fw)->flags.has_new_wm_normal_hints = !!(x)
365 #define SETM_HAS_NEW_WM_NORMAL_HINTS(fw,x) \
366 	(fw)->flag_mask.has_new_wm_normal_hints = !!(x)
367 #define IS_MAPPED(fw) \
368 	((fw)->flags.is_mapped)
369 #define SET_MAPPED(fw,x) \
370 	(fw)->flags.is_mapped = !!(x)
371 #define SETM_MAPPED(fw,x) \
372 	(fw)->flag_mask.is_mapped = !!(x)
373 #define IS_DECOR_CHANGED(fw) \
374 	((fw)->flags.is_decor_changed)
375 #define SET_DECOR_CHANGED(fw,x) \
376 	(fw)->flags.is_decor_changed = !!(x)
377 #define SETM_DECOR_CHANGED(fw,x) \
378 	(fw)->flag_mask.is_decor_changed = !!(x)
379 #define IS_ICON_FONT_LOADED(fw) \
380 	((fw)->flags.is_icon_font_loaded)
381 #define SET_ICON_FONT_LOADED(fw,x) \
382 	(fw)->flags.is_icon_font_loaded = !!(x)
383 #define SETM_ICON_FONT_LOADED(fw,x) \
384 	(fw)->flag_mask.is_icon_font_loaded = !!(x)
385 #define IS_ICONIFIED(fw) \
386 	((fw)->flags.is_iconified)
387 #define SET_ICONIFIED(fw,x) \
388 	(fw)->flags.is_iconified = !!(x)
389 #define SETM_ICONIFIED(fw,x) \
390 	(fw)->flag_mask.is_iconified = !!(x)
391 #define IS_ICONIFIED_BY_PARENT(fw) \
392 	((fw)->flags.is_iconified_by_parent)
393 #define SET_ICONIFIED_BY_PARENT(fw,x) \
394 	(fw)->flags.is_iconified_by_parent = !!(x)
395 #define SETM_ICONIFIED_BY_PARENT(fw,x) \
396 	(fw)->flag_mask.is_iconified_by_parent = !!(x)
397 #define IS_ICON_ENTERED(fw) \
398 	((fw)->flags.is_icon_entered)
399 #define SET_ICON_ENTERED(fw,x) \
400 	(fw)->flags.is_icon_entered = !!(x)
401 #define SETM_ICON_ENTERED(fw,x) \
402 	(fw)->flag_mask.is_icon_entered = !!(x)
403 #define IS_ICON_OURS(fw) \
404 	((fw)->flags.is_icon_ours)
405 #define SET_ICON_OURS(fw,x) \
406 	(fw)->flags.is_icon_ours = !!(x)
407 #define SETM_ICON_OURS(fw,x) \
408 	(fw)->flag_mask.is_icon_ours = !!(x)
409 #define IS_ICON_SHAPED(fw) \
410 	((fw)->flags.is_icon_shaped)
411 #define SET_ICON_SHAPED(fw,x) \
412 	(fw)->flags.is_icon_shaped = !!(x)
413 #define SETM_ICON_SHAPED(fw,x) \
414 	(fw)->flag_mask.is_icon_shaped = !!(x)
415 #define IS_ICON_MOVED(fw) \
416 	((fw)->flags.is_icon_moved)
417 #define SET_ICON_MOVED(fw,x) \
418 	(fw)->flags.is_icon_moved = !!(x)
419 #define SETM_ICON_MOVED(fw,x) \
420 	(fw)->flag_mask.is_icon_moved = !!(x)
421 #define IS_ICON_UNMAPPED(fw) \
422 	((fw)->flags.is_icon_unmapped)
423 #define SET_ICON_UNMAPPED(fw,x) \
424 	(fw)->flags.is_icon_unmapped = !!(x)
425 #define SETM_ICON_UNMAPPED(fw,x) \
426 	(fw)->flag_mask.is_icon_unmapped = !!(x)
427 #define IS_IN_TRANSIENT_SUBTREE(fw) \
428 	((fw)->flags.is_in_transient_subtree)
429 #define SET_IN_TRANSIENT_SUBTREE(fw,x) \
430 	(fw)->flags.is_in_transient_subtree = !!(x)
431 #define IS_MAP_PENDING(fw) \
432 	((fw)->flags.is_map_pending)
433 #define SET_MAP_PENDING(fw,x) \
434 	(fw)->flags.is_map_pending = !!(x)
435 #define SETM_MAP_PENDING(fw,x) \
436 	(fw)->flag_mask.is_map_pending = !!(x)
437 #define IS_MAXIMIZED(fw) \
438 	((fw)->flags.is_maximized)
439 #define SET_MAXIMIZED(fw,x) \
440 	(fw)->flags.is_maximized = !!(x)
441 #define SETM_MAXIMIZED(fw,x) \
442 	(fw)->flag_mask.is_maximized = !!(x)
443 #define IS_NAME_CHANGED(fw) \
444 	((fw)->flags.is_name_changed)
445 #define SET_NAME_CHANGED(fw,x) \
446 	(fw)->flags.is_name_changed = !!(x)
447 #define SETM_NAME_CHANGED(fw,x) \
448 	(fw)->flag_mask.is_name_changed = !!(x)
449 #define IS_PIXMAP_OURS(fw) \
450 	((fw)->flags.is_pixmap_ours)
451 #define SET_PIXMAP_OURS(fw,x) \
452 	(fw)->flags.is_pixmap_ours = !!(x)
453 #define SETM_PIXMAP_OURS(fw,x) \
454 	(fw)->flag_mask.is_pixmap_ours = !!(x)
455 #define IS_PLACED_BY_FVWM(fw) \
456 	((fw)->flags.is_placed_by_fvwm)
457 #define SET_PLACED_BY_FVWM(fw,x) \
458 	(fw)->flags.is_placed_by_fvwm = (x)
459 #define SETM_PLACED_BY_FVWM(fw,x) \
460 	(fw)->flag_mask.is_placed_by_fvwm = (x)
461 #define IS_SCHEDULED_FOR_DESTROY(fw) \
462 	((fw)->flags.is_scheduled_for_destroy)
463 #define SET_SCHEDULED_FOR_DESTROY(fw,x) \
464 	(fw)->flags.is_scheduled_for_destroy = !!(x)
465 #define IS_SCHEDULED_FOR_RAISE(fw) \
466 	((fw)->flags.is_scheduled_for_raise)
467 #define SET_SCHEDULED_FOR_RAISE(fw,x) \
468 	(fw)->flags.is_scheduled_for_raise = !!(x)
469 #define IS_SHADED(fw) \
470 	((fw)->flags.is_window_shaded)
471 #define USED_TITLE_DIR_FOR_SHADING(fw) \
472 	((fw)->flags.used_title_dir_for_shading)
473 #define SET_USED_TITLE_DIR_FOR_SHADING(fw,x) \
474 	((fw)->flags.used_title_dir_for_shading = !!(x))
475 #define SHADED_DIR(fw) \
476 	((fw)->flags.shaded_dir)
477 #define SET_SHADED(fw,x) \
478 	(fw)->flags.is_window_shaded = !!(x)
479 #define SET_SHADED_DIR(fw,x) \
480 	(fw)->flags.shaded_dir = (x)
481 #define SETM_SHADED(fw,x) \
482 	(fw)->flag_mask.is_window_shaded = !!(x)
483 #define IS_TEAR_OFF_MENU(fw) \
484 	((fw)->flags.is_tear_off_menu)
485 #define SET_TEAR_OFF_MENU(fw,x) \
486 	(fw)->flags.is_tear_off_menu = !!(x)
487 #define SETM_TEAR_OFF_MENU(fw,x) \
488 	(fw)->flag_mask.is_tear_off_menu = !!(x)
489 #define IS_TRANSIENT(fw) \
490 	((fw)->flags.is_transient)
491 #define SET_TRANSIENT(fw,x) \
492 	(fw)->flags.is_transient = !!(x)
493 #define SETM_TRANSIENT(fw,x) \
494 	(fw)->flag_mask.is_transient = !!(x)
495 #define IS_ICONIFY_PENDING(fw) \
496 	((fw)->flags.is_iconify_pending)
497 #define SET_ICONIFY_PENDING(fw,x) \
498 	(fw)->flags.is_iconify_pending = !!(x)
499 #define SETM_ICONIFY_PENDING(fw,x) \
500 	(fw)->flag_mask.is_iconify_pending = !!(x)
501 #define DO_ICONIFY_AFTER_MAP(fw) \
502 	((fw)->flags.do_iconify_after_map)
503 #define SET_ICONIFY_AFTER_MAP(fw,x) \
504 	(fw)->flags.do_iconify_after_map = !!(x)
505 #define SETM_ICONIFY_AFTER_MAP(fw,x) \
506 	(fw)->flag_mask.do_iconify_after_map = !!(x)
507 #define DO_DISABLE_CONSTRAIN_SIZE_FULLSCREEN(fw) \
508 	((fw)->flags.do_disable_constrain_size_fullscreen)
509 #define SET_DISABLE_CONSTRAIN_SIZE_FULLSCREEN(fw,x) \
510 	(fw)->flags.do_disable_constrain_size_fullscreen = !!(x)
511 #define SETM_DISABLE_CONSTRAIN_SIZE_FULLSCREEN(fw,x) \
512 	(fw)->flag_mask.do_disable_constrain_size_fullscreen = !!(x)
513 #define IS_SIZE_INC_SET(fw) \
514 	((fw)->flags.is_size_inc_set)
515 #define SET_SIZE_INC_SET(fw,x) \
516 	(fw)->flags.is_size_inc_set = !!(x)
517 #define SETM_SIZE_INC_SET(fw,x) \
518 	(fw)->flag_mask.is_size_inc_set = !!(x)
519 #define IS_STYLE_DELETED(fw) \
520 	((fw)->flags.is_style_deleted)
521 #define SET_STYLE_DELETED(fw,x) \
522 	(fw)->flags.is_style_deleted = !!(x)
523 #define SETM_STYLE_DELETED(fw,x) \
524 	(fw)->flag_mask.is_style_deleted = !!(x)
525 #define IS_VIEWPORT_MOVED(fw) \
526 	((fw)->flags.is_viewport_moved)
527 #define SET_VIEWPORT_MOVED(fw,x) \
528 	(fw)->flags.is_viewport_moved = !!(x)
529 #define SETM_VIEWPORT_MOVED(fw,x) \
530 	(fw)->flag_mask.is_viewport_moved = !!(x)
531 #define IS_VIEWPORT_MOVED(fw) \
532 	((fw)->flags.is_viewport_moved)
533 #define IS_FOCUS_CHANGE_BROADCAST_PENDING(fw) \
534 	((fw)->flags.is_focus_change_broadcast_pending)
535 #define SET_FOCUS_CHANGE_BROADCAST_PENDING(fw,x) \
536 	(fw)->flags.is_focus_change_broadcast_pending = !!(x)
537 #define SETM_FOCUS_CHANGE_BROADCAST_PENDING(fw,x) \
538 	(fw)->flag_mask.is_focus_change_broadcast_pending = !!(x)
539 #define IS_FULLY_VISIBLE(fw) \
540 	((fw)->flags.is_fully_visible)
541 #define SET_FULLY_VISIBLE(fw,x) \
542 	(fw)->flags.is_fully_visible = !!(x)
543 #define SETM_FULLY_VISIBLE(fw,x) \
544 	(fw)->flag_mask.is_fully_visible = !!(x)
545 #define IS_PARTIALLY_VISIBLE(fw) \
546 	((fw)->flags.is_partially_visible)
547 #define SET_PARTIALLY_VISIBLE(fw,x) \
548 	(fw)->flags.is_partially_visible = !!(x)
549 #define SETM_PARTIALLY_VISIBLE(fw,x) \
550 	(fw)->flag_mask.is_partially_visible = !!(x)
551 #define IS_WINDOW_DRAWN_ONCE(fw) \
552 	((fw)->flags.is_window_drawn_once)
553 #define SET_WINDOW_DRAWN_ONCE(fw,x) \
554 	(fw)->flags.is_window_drawn_once = !!(x)
555 #define SETM_WINDOW_DRAWN_ONCE(fw,x) \
556 	(fw)->flag_mask.is_window_drawn_once = !!(x)
557 #define IS_WINDOW_BEING_MOVED_OPAQUE(fw) \
558 	((fw)->flags.is_window_being_moved_opaque)
559 #define SET_WINDOW_BEING_MOVED_OPAQUE(fw,x) \
560 	(fw)->flags.is_window_being_moved_opaque = !!(x)
561 #define SETM_WINDOW_BEING_MOVED_OPAQUE(fw,x) \
562 	(fw)->flag_mask.is_window_being_moved_opaque = !!(x)
563 #define IS_WINDOW_BORDER_DRAWN(fw) \
564 	((fw)->flags.is_window_border_drawn)
565 #define SET_WINDOW_BORDER_DRAWN(fw,x) \
566 	(fw)->flags.is_window_border_drawn = !!(x)
567 #define SETM_WINDOW_BORDER_DRAWN(fw,x) \
568 	(fw)->flag_mask.is_window_border_drawn = !!(x)
569 #define IS_WINDOW_FONT_LOADED(fw) \
570 	((fw)->flags.is_window_font_loaded)
571 #define SET_WINDOW_FONT_LOADED(fw,x) \
572 	(fw)->flags.is_window_font_loaded = !!(x)
573 #define SETM_WINDOW_FONT_LOADED(fw,x) \
574 	(fw)->flag_mask.is_window_font_loaded = !!(x)
575 #define CR_MOTION_METHOD(fw) \
576 	((fw)->flags.cr_motion_method)
577 #define SET_CR_MOTION_METHOD(fw,x) \
578 	(fw)->flags.cr_motion_method = ((x) & CR_MOTION_METHOD_MASK)
579 #define SETM_CR_MOTION_METHOD(fw,x) \
580 	(fw)->flag_mask.cr_motion_method = ((x) ? CR_MOTION_METHOD_MASK : 0)
581 #define WAS_CR_MOTION_METHOD_DETECTED(fw) \
582 	((fw)->flags.was_cr_motion_method_detected)
583 #define SET_CR_MOTION_METHOD_DETECTED(fw,x) \
584 	(fw)->flags.was_cr_motion_method_detected = !!(x)
585 #define SETM_CR_MOTION_METHOD_DETECTED(fw,x) \
586 	(fw)->flag_mask.was_cr_motion_method_detected = !!(x)
587 #define WM_DELETES_WINDOW(fw) \
588 	((fw)->flags.does_wm_delete_window)
589 #define SET_WM_DELETES_WINDOW(fw,x) \
590 	(fw)->flags.does_wm_delete_window = !!(x)
591 #define SETM_WM_DELETES_WINDOW(fw,x) \
592 	(fw)->flag_mask.does_wm_delete_window = !!(x)
593 #define WM_TAKES_FOCUS(fw) \
594 	((fw)->flags.does_wm_take_focus)
595 #define SET_WM_TAKES_FOCUS(fw,x) \
596 	(fw)->flags.does_wm_take_focus = !!(x)
597 #define SETM_WM_TAKES_FOCUS(fw,x) \
598 	(fw)->flag_mask.does_wm_take_focus = !!(x)
599 #define DO_FORCE_NEXT_CR(fw) \
600 	((fw)->flags.do_force_next_cr)
601 #define SET_FORCE_NEXT_CR(fw,x) \
602 	(fw)->flags.do_force_next_cr = !!(x)
603 #define SETM_FORCE_NEXT_CR(fw,x) \
604 	(fw)->flag_mask.do_force_next_cr = !!(x)
605 #define DO_FORCE_NEXT_PN(fw) \
606 	((fw)->flags.do_force_next_pn)
607 #define SET_FORCE_NEXT_PN(fw,x) \
608 	(fw)->flags.do_force_next_pn = !!(x)
609 #define SETM_FORCE_NEXT_PN(fw,x) \
610 	(fw)->flag_mask.do_force_next_pn = !!(x)
611 #define USING_DEFAULT_WINDOW_FONT(fw) \
612 	((fw)->flags.using_default_window_font)
613 #define SET_USING_DEFAULT_WINDOW_FONT(fw,x) \
614 	(fw)->flags.using_default_window_font = !!(x)
615 #define SETM_USING_DEFAULT_WINDOW_FONT(fw,x) \
616 	(fw)->flag_mask.using_default_window_font = !!(x)
617 #define USING_DEFAULT_ICON_FONT(fw) \
618 	((fw)->flags.using_default_icon_font)
619 #define SET_USING_DEFAULT_ICON_FONT(fw,x) \
620 	(fw)->flags.using_default_icon_font = !!(x)
621 #define SETM_USING_DEFAULT_ICON_FONT(fw,x) \
622 	(fw)->flag_mask.using_default_icon_font = !!(x)
623 #define WAS_ICON_HINT_PROVIDED(fw) \
624 	((fw)->flags.was_icon_hint_provided)
625 #define SET_WAS_ICON_HINT_PROVIDED(fw,x) \
626 	(fw)->flags.was_icon_hint_provided = (x)
627 #define SETM_WAS_ICON_HINT_PROVIDED(fw,x) \
628 	(fw)->flag_mask.was_icon_hint_provided = (x)
629 #define WAS_ICON_NAME_PROVIDED(fw) \
630 	((fw)->flags.was_icon_name_provided)
631 #define SET_WAS_ICON_NAME_PROVIDED(fw,x) \
632 	(fw)->flags.was_icon_name_provided = (x)
633 #define SETM_WAS_ICON_NAME_PROVIDED(fw,x) \
634 	(fw)->flag_mask.was_icon_name_provided = (x)
635 #define WAS_NEVER_DRAWN(fw) \
636 	((fw)->flags.was_never_drawn)
637 #define SET_WAS_NEVER_DRAWN(fw,x) \
638 	(fw)->flags.was_never_drawn = (x)
639 #define SETM_WAS_NEVER_DRAWN(fw,x) \
640 	(fw)->flag_mask.was_never_drawn = (x)
641 #define HAS_EWMH_WM_NAME(fw) \
642 	((fw)->flags.has_ewmh_wm_name)
643 #define SET_HAS_EWMH_WM_NAME(fw,x) \
644 	(fw)->flags.has_ewmh_wm_name = !!(x)
645 #define SETM_HAS_EWMH_WM_NAME(fw,x) \
646 	(fw)->flag_mask.has_ewmh_wm_name = !!(x)
647 #define HAS_EWMH_WM_ICON_NAME(fw) \
648 	((fw)->flags.has_ewmh_wm_icon_name)
649 #define SET_HAS_EWMH_WM_ICON_NAME(fw,x) \
650 	(fw)->flags.has_ewmh_wm_icon_name = !!(x)
651 #define SETM_HAS_EWMH_WM_ICON_NAME(fw,x) \
652 	(fw)->flag_mask.has_ewmh_wm_icon_name = !!(x)
653 #define HAS_EWMH_WM_ICON_HINT(fw) \
654 	((fw)->flags.has_ewmh_wm_icon_hint)
655 #define SET_HAS_EWMH_WM_ICON_HINT(fw,x) \
656 	(fw)->flags.has_ewmh_wm_icon_hint = (x)
657 #define SETM_HAS_EWMH_WM_ICON_HINT(fw,x) \
658 	(fw)->flag_mask.has_ewmh_wm_icon_hint = (x)
659 #define USE_EWMH_ICON(fw) \
660 	((fw)->flags.use_ewmh_icon)
661 #define SET_USE_EWMH_ICON(fw,x) \
662 	(fw)->flags.use_ewmh_icon = !!(x)
663 #define SETM_USE_EWMH_ICON(fw,x) \
664 	(fw)->flag_mask.use_ewmh_icon = !!(x)
665 #define HAS_EWMH_MINI_ICON(fw) \
666 	((fw)->flags.has_ewmh_mini_icon)
667 #define SET_HAS_EWMH_MINI_ICON(fw,x) \
668 	(fw)->flags.has_ewmh_mini_icon = !!(x)
669 #define SETM_HAS_EWMH_MINI_ICON(fw,x) \
670 	(fw)->flag_mask.has_ewmh_mini_icon = !!(x)
671 #define HAS_EWMH_WM_PID(fw) \
672 	((fw)->flags.has_ewmh_wm_pid)
673 #define SET_HAS_EWMH_WM_PID(fw,x) \
674 	(fw)->flags.has_ewmh_wm_pid = !!(x)
675 #define SETM_HAS_EWMH_WM_PID(fw,x) \
676 	(fw)->flag_mask.has_ewmh_wm_pid = !!(x)
677 #define IS_EWMH_MODAL(fw) \
678 	((fw)->flags.is_ewmh_modal)
679 #define SET_EWMH_MODAL(fw,x) \
680 	(fw)->flags.is_ewmh_modal = !!(x)
681 #define SETM_EWMH_MODAL(fw,x) \
682 	(fw)->flag_mask.is_ewmh_modal = !!(x)
683 #define IS_EWMH_FULLSCREEN(fw) \
684 	((fw)->flags.is_ewmh_fullscreen)
685 #define SET_EWMH_FULLSCREEN(fw,x) \
686 	(fw)->flags.is_ewmh_fullscreen = !!(x)
687 #define SETM_EWMH_FULLSCREEN(fw,x) \
688 	(fw)->flag_mask.is_ewmh_fullscreen = !!(x)
689 #define SET_HAS_EWMH_INIT_FULLSCREEN_STATE(fw,x) \
690 	(fw)->flags.has_ewmh_init_fullscreen_state = (x)
691 #define SETM_HAS_EWMH_INIT_FULLSCREEN_STATE(fw,x) \
692 	(fw)->flag_mask.has_ewmh_init_fullscreen_state = (x)
693 #define HAS_EWMH_INIT_FULLSCREEN_STATE(fw) \
694 	((fw)->flags.has_ewmh_init_fullscreen_state)
695 #define SET_HAS_EWMH_INIT_HIDDEN_STATE(fw,x) \
696 	(fw)->flags.has_ewmh_init_hidden_state = (x)
697 #define SETM_HAS_EWMH_INIT_HIDDEN_STATE(fw,x) \
698 	(fw)->flag_mask.has_ewmh_init_hidden_state = (x)
699 #define HAS_EWMH_INIT_HIDDEN_STATE(fw) \
700 	((fw)->flags.has_ewmh_init_hidden_state)
701 #define SET_HAS_EWMH_INIT_MAXHORIZ_STATE(fw,x) \
702 	(fw)->flags.has_ewmh_init_maxhoriz_state = (x)
703 #define SETM_HAS_EWMH_INIT_MAXHORIZ_STATE(fw,x) \
704 	(fw)->flag_mask.has_ewmh_init_maxhoriz_state = (x)
705 #define HAS_EWMH_INIT_MAXHORIZ_STATE(fw) \
706 	((fw)->flags.has_ewmh_init_maxhoriz_state)
707 #define SET_HAS_EWMH_INIT_MAXVERT_STATE(fw,x) \
708 	(fw)->flags.has_ewmh_init_maxvert_state = (x)
709 #define SETM_HAS_EWMH_INIT_MAXVERT_STATE(fw,x) \
710 	(fw)->flag_mask.has_ewmh_init_maxvert_state = (x)
711 #define HAS_EWMH_INIT_MAXVERT_STATE(fw) \
712 	((fw)->flags.has_ewmh_init_maxvert_state)
713 #define SET_HAS_EWMH_INIT_MODAL_STATE(fw,x) \
714 	(fw)->flags.has_ewmh_init_modal_state = (x)
715 #define SETM_HAS_EWMH_INIT_MODAL_STATE(fw,x) \
716 	(fw)->flag_mask.has_ewmh_init_modal_state = (x)
717 #define HAS_EWMH_INIT_MODAL_STATE(fw) \
718 	((fw)->flags.has_ewmh_init_modal_state)
719 #define SET_HAS_EWMH_INIT_SHADED_STATE(fw,x) \
720 	(fw)->flags.has_ewmh_init_shaded_state = (x)
721 #define SETM_HAS_EWMH_INIT_SHADED_STATE(fw,x) \
722 	(fw)->flag_mask.has_ewmh_init_shaded_state = (x)
723 #define HAS_EWMH_INIT_SHADED_STATE(fw) \
724 	((fw)->flags.has_ewmh_init_shaded_state)
725 #define SET_HAS_EWMH_INIT_SKIP_PAGER_STATE(fw,x) \
726 	(fw)->flags.has_ewmh_init_skip_pager_state = (x)
727 #define SETM_HAS_EWMH_INIT_SKIP_PAGER_STATE(fw,x) \
728 	(fw)->flag_mask.has_ewmh_init_skip_pager_state = (x)
729 #define HAS_EWMH_INIT_SKIP_PAGER_STATE(fw) \
730 	((fw)->flags.has_ewmh_init_skip_pager_state)
731 #define SET_HAS_EWMH_INIT_SKIP_TASKBAR_STATE(fw,x) \
732 	(fw)->flags.has_ewmh_init_skip_taskbar_state = (x)
733 #define SETM_HAS_EWMH_INIT_SKIP_TASKBAR_STATE(fw,x) \
734 	(fw)->flag_mask.has_ewmh_init_skip_taskbar_state = (x)
735 #define HAS_EWMH_INIT_SKIP_TASKBAR_STATE(fw) \
736 	((fw)->flags.has_ewmh_init_skip_taskbar_state)
737 #define SET_HAS_EWMH_INIT_STICKY_STATE(fw,x) \
738 	(fw)->flags.has_ewmh_init_sticky_state = (x)
739 #define SETM_HAS_EWMH_INIT_STICKY_STATE(fw,x) \
740 	(fw)->flag_mask.has_ewmh_init_sticky_state = (x)
741 #define HAS_EWMH_INIT_STICKY_STATE(fw) \
742 	((fw)->flags.has_ewmh_init_sticky_state)
743 #define SET_HAS_EWMH_INIT_WM_DESKTOP(fw,x) \
744 	(fw)->flags.has_ewmh_init_wm_desktop = (x)
745 #define SETM_HAS_EWMH_INIT_WM_DESKTOP(fw,x) \
746 	(fw)->flag_mask.has_ewmh_init_wm_desktop = (x)
747 #define HAS_EWMH_INIT_WM_DESKTOP(fw) \
748 	((fw)->flags.has_ewmh_init_wm_desktop)
749 
750 #endif /* _WINDOW_FLAGS_ */
751