Xinqi Bao's Git
projects
/
dmenu.git
/ diff
summary
|
log
|
commit
|
diff
|
tree
raw
|
patch
|
inline
| side by side (parent:
7082ba1
)
applied Connor's patch, thanks!
author
Anselm R Garbe <
[email protected]
>
Sun, 7 Mar 2010 08:32:16 +0000
(08:32 +0000)
committer
Anselm R Garbe <
[email protected]
>
Sun, 7 Mar 2010 08:32:16 +0000
(08:32 +0000)
dmenu.c
diff
|
blob
|
history
diff --git
a/dmenu.c
b/dmenu.c
index
1f7abca
..
aef8ae5
100644
(file)
--- a/
dmenu.c
+++ b/
dmenu.c
@@
-52,6
+52,7
@@
static void calcoffsetsh(void);
static void calcoffsetsv(void);
static char *cistrstr(const char *s, const char *sub);
static void cleanup(void);
static void calcoffsetsv(void);
static char *cistrstr(const char *s, const char *sub);
static void cleanup(void);
+static void drawmenu(void);
static void drawmenuh(void);
static void drawmenuv(void);
static void drawtext(const char *text, unsigned long col[ColLast]);
static void drawmenuh(void);
static void drawmenuv(void);
static void drawtext(const char *text, unsigned long col[ColLast]);
@@
-95,7
+96,6
@@
static char *(*fstrstr)(const char *, const char *) = strstr;
static Bool vlist = False;
static unsigned int lines = 5;
static void (*calcoffsets)(void) = calcoffsetsh;
static Bool vlist = False;
static unsigned int lines = 5;
static void (*calcoffsets)(void) = calcoffsetsh;
-static void (*drawmenu)(void) = drawmenuh;
void
appenditem(Item *i, Item **list, Item **last) {
void
appenditem(Item *i, Item **list, Item **last) {
@@
-200,7
+200,7
@@
cleanup(void) {
void
drawcursor(void) {
void
drawcursor(void) {
- XRectangle r = { dc.x, dc.y + 2, 1, dc.
h - 4
};
+ XRectangle r = { dc.x, dc.y + 2, 1, dc.
font.height - 2
};
r.x += textnw(text, cursor) + dc.font.height / 2;
r.x += textnw(text, cursor) + dc.font.height / 2;
@@
-209,9
+209,7
@@
drawcursor(void) {
}
void
}
void
-drawmenuh(void) {
- Item *i;
-
+drawmenu(void) {
dc.x = 0;
dc.y = 0;
dc.w = mw;
dc.x = 0;
dc.y = 0;
dc.w = mw;
@@
-231,56
+229,48
@@
drawmenuh(void) {
drawcursor();
dc.x += cmdw;
if(curr) {
drawcursor();
dc.x += cmdw;
if(curr) {
- dc.w = spaceitem;
- drawtext((curr && curr->left) ? "<" : NULL, dc.norm);
- dc.x += dc.w;
- /* determine maximum items */
- for(i = curr; i != next; i=i->right) {
- dc.w = textw(i->text);
- if(dc.w > mw / 3)
- dc.w = mw / 3;
- drawtext(i->text, (sel == i) ? dc.sel : dc.norm);
- dc.x += dc.w;
- }
- dc.x = mw - spaceitem;
- dc.w = spaceitem;
- drawtext(next ? ">" : NULL, dc.norm);
+ if(vlist)
+ drawmenuv();
+ else
+ drawmenuh();
}
XCopyArea(dpy, dc.drawable, win, dc.gc, 0, 0, mw, mh, 0, 0);
XFlush(dpy);
}
}
XCopyArea(dpy, dc.drawable, win, dc.gc, 0, 0, mw, mh, 0, 0);
XFlush(dpy);
}
+void
+drawmenuh(void) {
+ Item *i;
+
+ dc.w = spaceitem;
+ drawtext((curr && curr->left) ? "<" : NULL, dc.norm);
+ dc.x += dc.w;
+ /* determine maximum items */
+ for(i = curr; i != next; i=i->right) {
+ dc.w = textw(i->text);
+ if(dc.w > mw / 3)
+ dc.w = mw / 3;
+ drawtext(i->text, (sel == i) ? dc.sel : dc.norm);
+ dc.x += dc.w;
+ }
+ dc.x = mw - spaceitem;
+ dc.w = spaceitem;
+ drawtext(next ? ">" : NULL, dc.norm);
+}
+
void
drawmenuv(void) {
Item *i;
dc.x = 0;
void
drawmenuv(void) {
Item *i;
dc.x = 0;
- dc.y = 0;
dc.w = mw;
dc.w = mw;
- dc.h = mh;
- drawtext(NULL, dc.norm);
- /* print prompt? */
- if(promptw) {
- dc.w = promptw;
- drawtext(prompt, dc.sel);
- }
- dc.x += promptw;
- dc.w = mw - promptw;
- /* print command */
- drawtext(text[0] ? text : NULL, dc.norm);
- if(curr) {
- dc.x = 0;
- dc.w = mw;
+ dc.y += dc.font.height + 2;
+ /* determine maximum items */
+ for(i = curr; i != next; i=i->right) {
+ drawtext(i->text, (sel == i) ? dc.sel : dc.norm);
dc.y += dc.font.height + 2;
dc.y += dc.font.height + 2;
- /* determine maximum items */
- for(i = curr; i != next; i=i->right) {
- drawtext(i->text, (sel == i) ? dc.sel : dc.norm);
- dc.y += dc.font.height + 2;
- }
- drawtext(NULL, dc.norm);
}
}
- XCopyArea(dpy, dc.drawable, win, dc.gc, 0, 0, mw, mh, 0, 0);
- XFlush(dpy);
+ drawtext(NULL, dc.norm);
}
void
}
void
@@
-786,8
+776,7
@@
main(int argc, char *argv[]) {
else if(!strcmp(argv[i], "-l")) {
vlist = True;
calcoffsets = calcoffsetsv;
else if(!strcmp(argv[i], "-l")) {
vlist = True;
calcoffsets = calcoffsetsv;
- drawmenu = drawmenuv;
- if(++i < argc) lines += atoi(argv[i]);
+ if(++i < argc) lines = atoi(argv[i]);
}
else if(!strcmp(argv[i], "-fn")) {
if(++i < argc) font = argv[i];
}
else if(!strcmp(argv[i], "-fn")) {
if(++i < argc) font = argv[i];