all repos — dmenu @ 29e8faed6cf4b296382439651cf04596d276f080

my build of dmenu

updated to new libdraw
Connor Lane Smith cls@lubutu.com
Fri, 02 Jul 2010 05:50:19 +0100
commit

29e8faed6cf4b296382439651cf04596d276f080

parent

d9c24564d2f46312a9ed94539e0299a9859e87d9

2 files changed, 20 insertions(+), 32 deletions(-)

jump to
M dinput.cdinput.c

@@ -21,9 +21,8 @@ #define IS_UTF8_1ST_CHAR(c) ((((c) & 0xc0) == 0xc0) || !((c) & 0x80))

/* forward declarations */ static void cleanup(void); -static void drawcursor(void); static void drawinput(void); -static Bool grabkeyboard(void); +static void grabkeyboard(void); static void kpress(XKeyEvent *e); static void run(void); static void setup(void);

@@ -35,7 +34,7 @@ static char *prompt = NULL;

static char text[4096]; static int promptw = 0; static int screen; -static unsigned int cursor = 0; +static size_t cursor = 0; static unsigned int numlockmask = 0; static unsigned int mw, mh; static unsigned long normcol[ColLast];

@@ -54,46 +53,36 @@ XCloseDisplay(dpy);

} void -drawcursor(void) { - XRectangle r = { dc.x, dc.y + 2, 1, dc.font.height - 2 }; - - r.x += textnw(&dc, text, cursor) + dc.font.height / 2; - - XSetForeground(dpy, dc.gc, normcol[ColFG]); - XFillRectangles(dpy, dc.drawable, dc.gc, &r, 1); -} - -void drawinput(void) { dc.x = 0; dc.y = 0; dc.w = mw; dc.h = mh; - drawtext(&dc, NULL, normcol, False); + drawtext(&dc, NULL, normcol); /* print prompt? */ if(prompt) { dc.w = promptw; - drawtext(&dc, prompt, selcol, False); + drawtext(&dc, prompt, selcol); dc.x += dc.w; } dc.w = mw - dc.x; - drawtext(&dc, *text ? text : NULL, normcol, False); - drawcursor(); - XCopyArea(dpy, dc.drawable, win, dc.gc, 0, 0, mw, mh, 0, 0); + drawtext(&dc, text, normcol); + drawcursor(&dc, text, cursor, normcol); + commitdraw(&dc, win); } -Bool +void grabkeyboard(void) { unsigned int len; for(len = 1000; len; len--) { if(XGrabKeyboard(dpy, root, True, GrabModeAsync, GrabModeAsync, CurrentTime) == GrabSuccess) - break; + return; usleep(1000); } - return len > 0; + exit(EXIT_FAILURE); } void
M dmenu.cdmenu.c

@@ -162,25 +162,25 @@ dc.x = 0;

dc.y = 0; dc.w = mw; dc.h = mh; - drawtext(&dc, NULL, normcol, False); + drawtext(&dc, NULL, normcol); dc.h = dc.font.height + 2; dc.y = topbar ? 0 : mh - dc.h; /* print prompt? */ if(prompt) { dc.w = promptw; - drawtext(&dc, prompt, selcol, False); + drawtext(&dc, prompt, selcol); dc.x += dc.w; } dc.w = mw - dc.x; /* print command */ if(cmdw && item && lines == 0) dc.w = cmdw; - drawtext(&dc, *text ? text : NULL, normcol, False); + drawtext(&dc, text, normcol); if(lines > 0) drawmenuv(); else if(curr) drawmenuh(); - XCopyArea(dpy, dc.drawable, win, dc.gc, 0, 0, mw, mh, 0, 0); + commitdraw(&dc, win); } void

@@ -189,16 +189,16 @@ Item *i;

dc.x += cmdw; dc.w = spaceitem; - drawtext(&dc, curr->left ? "<" : NULL, normcol, False); + drawtext(&dc, curr->left ? "<" : NULL, normcol); dc.x += dc.w; for(i = curr; i != next; i = i->right) { dc.w = MIN(textw(&dc, i->text), mw / 3); - drawtext(&dc, i->text, (sel == i) ? selcol : normcol, False); + drawtext(&dc, i->text, (sel == i) ? selcol : normcol); dc.x += dc.w; } dc.w = spaceitem; dc.x = mw - dc.w; - drawtext(&dc, next ? ">" : NULL, normcol, False); + drawtext(&dc, next ? ">" : NULL, normcol); } void

@@ -209,7 +209,7 @@

dc.y = topbar ? dc.h : 0; dc.w = mw - dc.x; for(i = curr; i != next; i = i->right) { - drawtext(&dc, i->text, (sel == i) ? selcol : normcol, False); + drawtext(&dc, i->text, (sel == i) ? selcol : normcol); dc.y += dc.h; } if(!XGetWindowAttributes(dpy, win, &wa))

@@ -224,11 +224,10 @@

for(len = 1000; len; len--) { if(XGrabKeyboard(dpy, root, True, GrabModeAsync, GrabModeAsync, CurrentTime) == GrabSuccess) - break; + return; usleep(1000); } - if(!len) - exit(EXIT_FAILURE); + exit(EXIT_FAILURE); } void