/* Actions for the main loop */
#define ACTION_CLEAR 1<<0 /* clear text */
#define ACTION_SELECT 1<<1 /* select item */
#define ACTION_MAP 1<<2 /* remap menu windows */
#define ACTION_DRAW 1<<3 /* redraw menu windows */
/* enum for keyboard menu navigation */
enum { ITEMPREV
, ITEMNEXT
, ITEMFIRST
, ITEMLAST
};
/* enum for text alignment */
enum {LeftAlignment
, CenterAlignment
, RightAlignment
};
#define LEN(x) (sizeof (x) / sizeof (x[0]))
#define MAX(x,y) ((x)>(y)?(x):(y))
#define MIN(x,y) ((x)<(y)?(x):(y))
#define BETWEEN(x, a, b) ((a) <= (x) && (x) <= (b))
if ((__TMP__ = strtoul((s), NULL, 10)) < INT_MAX) \
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 set by options */
int posx
, posy
; /* rootmenu position */
/* the value below is computed by xmenu */
/* 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 */
int textw
; /* text width */
struct Item
*prev
; /* previous item */
struct Item
*next
; /* next item */
struct Menu
*submenu
; /* submenu spawned by clicking on item */
Drawable sel
, unsel
; /* pixmap for selected and unselected item */
/* monitor geometry structure */
int x
, y
, w
, h
; /* monitor geometry */
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 */
int hasicon
; /* whether the menu has item with icons */
int drawn
; /* whether the menu was already drawn */
int maxtextw
; /* maximum text width */
unsigned level
; /* menu level relative to root */
Window win
; /* menu window to map on the screen */
XIC xic
; /* input context */