4 extern struct window_table
{
9 struct gwm_window
**values
; /* compact array containing the values, to
10 make iteration more efficient */
11 int n
; /* number of entries in each half table */
12 int used
; /* number of entries occupied */
13 int max
; /* maximum chain length to follow during insertion */
15 } windows
, update_windows
;
17 extern void table_init( struct window_table
*table
);
19 extern void table_destroy( struct window_table
*table
);
21 extern PURE
struct gwm_window
*table_lookup( struct window_table
*table
,
23 extern void queue_window_update( struct gwm_window
*window
,
24 int x
, int y
, int width
, int height
,
26 extern void window_update_done( struct gwm_window
*window
);
27 extern MALLOC
struct gwm_window
*add_window( xcb_window_t w
);
28 extern void forget_window( struct gwm_window
*window
);
29 extern struct gwm_window
*lookup_window( xcb_window_t w
);
31 #define STACK_END 0x20000000
32 #define STACK_MASK 0xE0000000
34 extern struct window_stack
{
35 struct stacking_order
{
36 xcb_window_t window
, lower_window
, higher_window
;
38 int n
; /* number of entries in each half table */
39 int used
; /* number of entries occupied */
40 int max
; /* maximum chain length to follow during insertion */
44 extern void stack_init( struct window_stack
*stack
);
46 extern void stack_destroy( struct window_stack
*stack
);
48 extern PURE
struct stacking_order
*stack_lookup( struct window_stack
*stack
,
50 extern void stack_insert_singleton( struct window_stack
*stack
,
52 extern void stack_insert_above( struct window_stack
*stack
,
53 xcb_window_t key
, xcb_window_t lower_window
);
54 extern void stack_remove( struct window_stack
*stack
, xcb_window_t window
);
55 extern void stack_move_above( struct window_stack
*stack
,
56 xcb_window_t key
, xcb_window_t lower_window
);
57 extern xcb_window_t
stack_real_below( struct window_stack
*stack
,
58 xcb_window_t window
);