all repos — dmenu @ 18dcf738967a45208e880b72ce273afdd93ee6c7

my build of dmenu

extended libdraw
Connor Lane Smith cls@lubutu.com
Mon, 28 Jun 2010 06:09:34 +0100
commit

18dcf738967a45208e880b72ce273afdd93ee6c7

parent

9f3b0c6ea843340b87a045ea0afd2d1b33425eee

6 files changed, 40 insertions(+), 20 deletions(-)

jump to
M dinput.cdinput.c

@@ -72,15 +72,15 @@ dc.x = 0;

dc.y = 0; dc.w = mw; dc.h = mh; - drawtext(&dc, NULL, normcol); + drawtext(&dc, NULL, normcol, False); /* print prompt? */ if(prompt) { dc.w = promptw; - drawtext(&dc, prompt, selcol); + drawtext(&dc, prompt, selcol, False); dc.x += dc.w; } dc.w = mw - dc.x; - drawtext(&dc, *text ? text : NULL, normcol); + drawtext(&dc, *text ? text : NULL, normcol, False); drawcursor(); XCopyArea(dpy, dc.drawable, win, dc.gc, 0, 0, mw, mh, 0, 0); XFlush(dpy);

@@ -233,7 +233,7 @@ XEvent ev;

/* main event loop */ while(running && !XNextEvent(dpy, &ev)) - switch (ev.type) { + switch(ev.type) { case KeyPress: kpress(&ev.xkey); break;
M dmenu.cdmenu.c

@@ -161,18 +161,18 @@ dc.x = 0;

dc.y = 0; dc.w = mw; dc.h = mh; - drawtext(&dc, NULL, normcol); + drawtext(&dc, NULL, normcol, False); /* print prompt? */ if(prompt) { dc.w = promptw; - drawtext(&dc, prompt, selcol); + drawtext(&dc, prompt, selcol, False); 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); + drawtext(&dc, *text ? text : NULL, normcol, False); if(curr) { if(lines > 0) drawmenuv();

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

dc.x += cmdw; dc.w = spaceitem; - drawtext(&dc, curr->left ? "<" : NULL, normcol); + drawtext(&dc, curr->left ? "<" : NULL, normcol, False); 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); + drawtext(&dc, i->text, (sel == i) ? selcol : normcol, False); dc.x += dc.w; } dc.w = spaceitem; dc.x = mw - dc.w; - drawtext(&dc, next ? ">" : NULL, normcol); + drawtext(&dc, next ? ">" : NULL, normcol, False); } void

@@ -209,11 +209,11 @@ dc.w = mw - dc.x;

dc.h = dc.font.height + 2; dc.y = dc.h; for(i = curr; i != next; i = i->right) { - drawtext(&dc, i->text, (sel == i) ? selcol : normcol); + drawtext(&dc, i->text, (sel == i) ? selcol : normcol, False); dc.y += dc.h; } dc.h = mh - dc.y; - drawtext(&dc, NULL, normcol); + drawtext(&dc, NULL, normcol, False); } Bool

@@ -456,7 +456,7 @@ XEvent ev;

/* main event loop */ while(running && !XNextEvent(dpy, &ev)) - switch (ev.type) { + switch(ev.type) { case KeyPress: kpress(&ev.xkey); break;
M draw/Makefiledraw/Makefile

@@ -3,8 +3,8 @@ # See LICENSE file for copyright and license details.

include ../config.mk -SRC = cleanupdraw.c setupdraw.c drawtext.c eprint.c getcolor.c initfont.c \ -textnw.c textw.c +SRC = cleanupdraw.c drawsquare.c drawtext.c eprint.c getcolor.c initfont.c \ +setupdraw.c textnw.c textw.c OBJ = ${SRC:.c=.o} all: libdraw.a
M draw/draw.hdraw/draw.h

@@ -2,7 +2,7 @@ /* See LICENSE file for copyright and license details. */

#include <X11/Xlib.h> /* enums */ -enum { ColFG, ColBG, ColLast }; +enum { ColBorder, ColFG, ColBG, ColLast }; /* typedefs */ typedef struct {

@@ -21,7 +21,8 @@ } DC; /* draw context */

/* forward declarations */ void cleanupdraw(DC *dc); -void drawtext(DC *dc, const char *text, unsigned long col[ColLast]); +void drawsquare(DC *dc, Bool filled, unsigned long col[ColLast], Bool invert); +void drawtext(DC *dc, const char *text, unsigned long col[ColLast], Bool invert); void eprint(const char *fmt, ...); unsigned long getcolor(DC *dc, const char *colstr); void initfont(DC *dc, const char *fontstr);
A draw/drawsquare.c

@@ -0,0 +1,19 @@

+/* See LICENSE file for copyright and license details. */ +#include <X11/Xlib.h> +#include "draw.h" + +void +drawsquare(DC *dc, Bool filled, unsigned long col[ColLast], Bool invert) { + int n; + XRectangle r = { dc->x, dc->y, dc->w, dc->h }; + + XSetForeground(dc->dpy, dc->gc, col[invert ? ColBG : ColFG]); + n = ((dc->font.ascent + dc->font.descent + 2) / 4) + (filled ? 1 : 0); + r.width = r.height = n; + r.x = dc->x + 1; + r.y = dc->y + 1; + if(filled) + XFillRectangles(dc->dpy, dc->drawable, dc->gc, &r, 1); + else + XDrawRectangles(dc->dpy, dc->drawable, dc->gc, &r, 1); +}
M draw/drawtext.cdraw/drawtext.c

@@ -6,12 +6,12 @@

#define MIN(a, b) ((a) < (b) ? (a) : (b)) void -drawtext(DC *dc, const char *text, unsigned long col[ColLast]) { +drawtext(DC *dc, const char *text, unsigned long col[ColLast], Bool invert) { char buf[256]; int i, x, y, h, len, olen; XRectangle r = { dc->x, dc->y, dc->w, dc->h }; - XSetForeground(dc->dpy, dc->gc, col[ColBG]); + XSetForeground(dc->dpy, dc->gc, col[invert ? ColFG : ColBG]); XFillRectangles(dc->dpy, dc->drawable, dc->gc, &r, 1); if(!text) return;

@@ -26,7 +26,7 @@ return;

memcpy(buf, text, len); if(len < olen) for(i = len; i && i > len - 3; buf[--i] = '.'); - XSetForeground(dc->dpy, dc->gc, col[ColFG]); + XSetForeground(dc->dpy, dc->gc, col[invert ? ColBG : ColFG]); if(dc->font.set) XmbDrawString(dc->dpy, dc->drawable, dc->font.set, dc->gc, x, y, buf, len); else