projects
/
xmenu
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
add alignment
[xmenu]
/
xmenu.h
diff --git
a/xmenu.h
b/xmenu.h
index
2ad68d6
..
ecb0d14
100644
(file)
--- a/
xmenu.h
+++ b/
xmenu.h
@@
-1,13
+1,16
@@
#define PROGNAME "xmenu"
#define PROGNAME "xmenu"
-/* macros for keyboard menu navigation */
-#define ITEMPREV 0
-#define ITEMNEXT 1
+/* enum for keyboard menu navigation */
+enum { ITEMPREV, ITEMNEXT, ITEMFIRST, ITEMLAST };
+
+/* enum for text alignment */
+enum {LeftAlignment, CenterAlignment, RightAlignment};
/* macros */
/* 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))
+#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))
/* color enum */
enum {ColorFG, ColorBG, ColorLast};
/* color enum */
enum {ColorFG, ColorBG, ColorLast};
@@
-34,11
+37,14
@@
struct Config {
int triangle_height;
int iconpadding;
int horzpadding;
int triangle_height;
int iconpadding;
int horzpadding;
+ int alignment;
+
+ /* the values below are set by options */
+ int monitor;
+ int posx, posy; /* rootmenu position */
- /* the value
s below are
computed by xmenu */
+ /* the value
below is
computed by xmenu */
int iconsize;
int iconsize;
- int posx, posy; /* cursor position */
- int screenw, screenh; /* screen width and height */
};
/* draw context structure */
};
/* draw context structure */
@@
-49,7
+55,10
@@
struct DC {
XftColor separator;
GC gc;
XftColor separator;
GC gc;
- XftFont *font;
+
+ FcPattern *pattern;
+ XftFont **fonts;
+ size_t nfonts;
};
/* menu item structure */
};
/* menu item structure */
@@
-59,13
+68,19
@@
struct Item {
char *file; /* filename of the icon */
int y; /* item y position relative to menu */
int h; /* item height */
char *file; /* filename of the icon */
int y; /* item y position relative to menu */
int h; /* item height */
-
size_t labellen; /* strlen(label)
*/
+
int textw; /* text width
*/
struct Item *prev; /* previous item */
struct Item *next; /* next item */
struct Menu *submenu; /* submenu spawned by clicking on item */
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 */
Imlib_Image icon;
};
Imlib_Image icon;
};
+/* monitor geometry structure */
+struct Monitor {
+ int x, y, w, h; /* monitor geometry */
+};
+
/* menu structure */
struct Menu {
struct Menu *parent; /* parent menu */
/* menu structure */
struct Menu {
struct Menu *parent; /* parent menu */
@@
-73,8
+88,9
@@
struct 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 */
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 */
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 */
};
Window win; /* menu window to map on the screen */
};