2ad68d6ec7ac52f3cfa4c2b9ab2cd22fe4cdf3b8
/* macros for keyboard menu navigation */
#define LEN(x) (sizeof (x) / sizeof (x[0]))
#define MAX(x,y) ((x)>(y)?(x):(y))
#define MIN(x,y) ((x)<(y)?(x):(y))
enum {ColorFG
, ColorBG
, ColorLast
};
enum {NetWMName
, NetWMWindowType
, NetWMWindowTypePopupMenu
, NetLast
};
/* configuration structure */
/* the values below are set by config.h */
const char *background_color
;
const char *foreground_color
;
const char *selbackground_color
;
const char *selforeground_color
;
const char *separator_color
;
const char *border_color
;
/* the values below are computed by xmenu */
int posx
, posy
; /* cursor position */
int screenw
, screenh
; /* screen width and height */
/* draw context structure */
XftColor normal
[ColorLast
];
XftColor selected
[ColorLast
];
/* menu item structure */
char *label
; /* string to be drawed on menu */
char *output
; /* string to be outputed when item is clicked */
char *file
; /* filename of the icon */
int y
; /* item y position relative to menu */
size_t labellen
; /* strlen(label) */
struct Item
*prev
; /* previous item */
struct Item
*next
; /* next item */
struct Menu
*submenu
; /* submenu spawned by clicking on item */
struct Menu
*parent
; /* parent menu */
struct Item
*caller
; /* item that spawned the menu */
struct Item
*list
; /* list of items contained by the menu */
struct Item
*selected
; /* item currently selected in the menu */
int x
, y
, w
, h
; /* menu geometry */
unsigned level
; /* menu level relative to root */
Drawable pixmap
; /* pixmap to draw the menu on */
Window win
; /* menu window to map on the screen */