mirror of git://git.suckless.org/dmenu
updated to new libdraw
This commit is contained in:
parent
d9c24564d2
commit
29e8faed6c
31
dinput.c
31
dinput.c
|
@ -21,9 +21,8 @@
|
|||
|
||||
/* 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];
|
||||
|
@ -53,16 +52,6 @@ cleanup(void) {
|
|||
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)
|
||||
{
|
||||
|
@ -70,30 +59,30 @@ drawinput(void)
|
|||
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
|
||||
|
|
19
dmenu.c
19
dmenu.c
|
@ -162,25 +162,25 @@ drawmenu(void) {
|
|||
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 @@ drawmenuh(void) {
|
|||
|
||||
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 @@ drawmenuv(void) {
|
|||
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,10 +224,9 @@ grabkeyboard(void) {
|
|||
for(len = 1000; len; len--) {
|
||||
if(XGrabKeyboard(dpy, root, True, GrabModeAsync, GrabModeAsync, CurrentTime)
|
||||
== GrabSuccess)
|
||||
break;
|
||||
return;
|
||||
usleep(1000);
|
||||
}
|
||||
if(!len)
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue