updated to new libdraw
This commit is contained in:
		
							
								
								
									
										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
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										21
									
								
								dmenu.c
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								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,11 +224,10 @@ 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);
 | 
			
		||||
	exit(EXIT_FAILURE);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user