Fix segfault when creating a tearoff menu using a Pixmap background.
[fvwm.git] / fvwm / borders.h
blob8407ea759f6275d3701d07faed1d6aae077ca337
1 /* -*-c-*- */
3 #ifndef _BORDERS_H
4 #define _BORDERS_H
6 /* ---------------------------- included header files ---------------------- */
8 /* ---------------------------- global definitions ------------------------- */
10 #define NPARTS_KEEP_STATE 12
12 /* ---------------------------- global macros ------------------------------ */
14 /* ---------------------------- type definitions --------------------------- */
16 typedef enum
18 PART_NONE = 0x0,
19 /* the border drawing code relies on the fact that the border bits
20 * occupy the lowest ten bits in this order! */
21 PART_BORDER_N = 0x1,
22 PART_BORDER_S = 0x2,
23 PART_BORDER_E = 0x4,
24 PART_BORDER_W = 0x8,
25 PART_BORDER_NW = 0x10,
26 PART_BORDER_NE = 0x20,
27 PART_BORDER_SW = 0x40,
28 PART_BORDER_SE = 0x80,
29 PART_TITLE = 0x100,
30 PART_BUTTONS = 0x200,
31 PART_X_HANDLES = 0x400,
32 PART_Y_HANDLES = 0x800,
33 /* combinations of the above values */
34 PART_SIDES = 0x0f,
35 PART_CORNERS = 0xf0,
36 PART_FRAME = 0xff,
37 PART_TITLEBAR = 0x300,
38 PART_HANDLES = 0xc00,
39 PART_ALL = 0xfff
40 } window_parts;
42 typedef enum
44 CLEAR_NONE = 0x0,
45 CLEAR_FRAME = 0x1,
46 CLEAR_TITLE = 0x2,
47 CLEAR_BUTTONS = 0x4,
48 CLEAR_ALL = 0x7
49 } clear_window_parts;
51 /* ---------------------------- exported variables (globals) --------------- */
53 /* ---------------------------- interface functions ------------------------ */
55 DecorFace *border_get_border_style(
56 FvwmWindow *fw, Bool has_focus);
57 int border_is_using_border_style(
58 FvwmWindow *fw, Bool has_focus);
59 int border_context_to_parts(
60 int context);
61 void border_get_part_geometry(
62 FvwmWindow *fw, window_parts part, rectangle *sidebar_g,
63 rectangle *ret_g, Window *ret_w);
64 int get_button_number(int context);
65 void border_draw_decorations(
66 FvwmWindow *t, window_parts draw_parts, Bool has_focus, int force,
67 clear_window_parts clear_parts, rectangle *old_g, rectangle *new_g);
68 void border_undraw_decorations(
69 FvwmWindow *fw);
70 void border_redraw_decorations(
71 FvwmWindow *fw);
72 unsigned int border_get_transparent_decorations_part(
73 FvwmWindow *fw);
74 #endif /* _BORDERS_H */