5 short type; /* must not be changed; first element */
6 short len; /* strlen (str) */
7 unsigned char *str; /* action to take */
11 short type; /* must not be changed; first element */
12 struct menu_t *menu; /* sub-menu */
15 typedef struct menuitem_t {
16 struct menuitem_t *prev; /* prev menu-item */
17 struct menuitem_t *next; /* next menu-item */
18 char *name; /* character string displayed */
19 char *name2; /* character string displayed (right) */
20 short len; /* strlen (name) */
21 short len2; /* strlen (name) */
23 short type; /* must not be changed; first element */
29 enum menuitem_t_action {
36 typedef struct menu_t {
37 struct menu_t *parent; /* parent menu */
38 struct menu_t *prev; /* prev menu */
39 struct menu_t *next; /* next menu */
40 menuitem_t *head; /* double-linked list */
41 menuitem_t *tail; /* double-linked list */
42 menuitem_t *item; /* current item */
43 char *name; /* menu name */
44 short len; /* strlen (name) */
45 short width; /* maximum menu width [chars] */
46 Window win; /* window of the menu */
47 struct rxvt_drawable *drawable;
48 short x; /* x location [pixels] (chars if parent == NULL) */
49 short y; /* y location [pixels] */
50 short w, h; /* window width, height [pixels] */
53 typedef struct bar_t {
54 menu_t *head, *tail; /* double-linked list of menus */
55 char *title; /* title to put in the empty menuBar */
58 char name[MAXNAME]; /* name to use to refer to menubar */
59 struct bar_t *next, *prev; /* circular linked-list */
60 #endif /* (MENUBAR_MAX > 1) */
62 action_t arrows[NARROWS];
65 /* #define DEBUG_MENU */
66 /* #define DEBUG_MENU_LAYOUT */
67 /* #define DEBUG_MENUBAR_STACKING */
69 #define HSPACE 1 /* one space */
70 #define isSeparator(name) ((name)[0] == '\0')
71 #define HEIGHT_SEPARATOR (SHADOW + 1)
72 #define HEIGHT_TEXT (Height2Pixel(1) + 2)
74 #define MENU_DELAY_USEC 0 /* no delay */
76 #define SEPARATOR_NAME "-"
77 #define MENUITEM_BEG '{'
78 #define MENUITEM_END '}'
79 #define COMMENT_CHAR '#'
84 #endif /* _MENUBAR_H_ */