Adding gaps support and more.
• Adding support for gaps (#3) • Adding more comments and categorizing function declarations. • Adding support for EWMH properties (xmenu look is now consistent in some window compositors). • Changing how configuration is done (now all configuration belongs to the config structure).
This commit is contained in:
80
xmenu.h
Normal file
80
xmenu.h
Normal file
@@ -0,0 +1,80 @@
|
||||
#define PROGNAME "xmenu"
|
||||
|
||||
/* macros for keyboard menu navigation */
|
||||
#define ITEMPREV 0
|
||||
#define ITEMNEXT 1
|
||||
|
||||
/* macros */
|
||||
#define LEN(x) (sizeof (x) / sizeof (x[0]))
|
||||
#define MAX(x,y) ((x)>(y)?(x):(y))
|
||||
#define MIN(x,y) ((x)<(y)?(x):(y))
|
||||
|
||||
/* color enum */
|
||||
enum {ColorFG, ColorBG, ColorLast};
|
||||
|
||||
/* EWMH atoms */
|
||||
enum {NetWMName, NetWMWindowType, NetWMWindowTypePopupMenu, NetLast};
|
||||
|
||||
/* configuration structure */
|
||||
struct Config {
|
||||
const char *font;
|
||||
|
||||
const char *background_color;
|
||||
const char *foreground_color;
|
||||
const char *selbackground_color;
|
||||
const char *selforeground_color;
|
||||
const char *separator_color;
|
||||
const char *border_color;
|
||||
|
||||
int width_pixels;
|
||||
int height_pixels;
|
||||
int border_pixels;
|
||||
int separator_pixels;
|
||||
int gap_pixels;
|
||||
|
||||
int triangle_width;
|
||||
int triangle_height;
|
||||
|
||||
int iconpadding;
|
||||
|
||||
int cursx, cursy; /* cursor position */
|
||||
int screenw, screenh; /* screen width and height */
|
||||
};
|
||||
|
||||
/* draw context structure */
|
||||
struct DC {
|
||||
XftColor normal[ColorLast];
|
||||
XftColor selected[ColorLast];
|
||||
XftColor border;
|
||||
XftColor separator;
|
||||
|
||||
GC gc;
|
||||
XftFont *font;
|
||||
};
|
||||
|
||||
/* menu item structure */
|
||||
struct Item {
|
||||
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 h; /* item height */
|
||||
size_t labellen; /* strlen(label) */
|
||||
struct Item *prev; /* previous item */
|
||||
struct Item *next; /* next item */
|
||||
struct Menu *submenu; /* submenu spawned by clicking on item */
|
||||
Imlib_Image icon;
|
||||
};
|
||||
|
||||
/* menu structure */
|
||||
struct Menu {
|
||||
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 */
|
||||
XftDraw *draw;
|
||||
Window win; /* menu window to map on the screen */
|
||||
};
|
Reference in New Issue
Block a user