aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--draw.c17
-rw-r--r--dzen.h2
-rw-r--r--main.c6
3 files changed, 14 insertions, 11 deletions
diff --git a/draw.c b/draw.c
index fa9c854..bac0883 100644
--- a/draw.c
+++ b/draw.c
@@ -40,7 +40,7 @@ drawtext(const char *text, int reverse, int line, int align) {
else { /* slave window */
mgc = reverse ? dzen.rgc : dzen.gc;
- if(!dzen.slave_win.tbuf[line].text) {
+ if(!dzen.slave_win.tbuf[line+dzen.slave_win.first_line_vis].text) {
reverse ?
XSetForeground(dzen.dpy, mgc, dzen.norm[ColFG]):
XSetForeground(dzen.dpy, mgc, dzen.norm[ColBG]);
@@ -49,10 +49,9 @@ drawtext(const char *text, int reverse, int line, int align) {
XSetForeground(dzen.dpy, mgc, dzen.slave_win.tbuf[line+dzen.slave_win.first_line_vis].fg):
XSetForeground(dzen.dpy, mgc, dzen.slave_win.tbuf[line+dzen.slave_win.first_line_vis].bg);
}
-
XFillRectangles(dzen.dpy, dzen.slave_win.drawable[line], mgc, &r, 1);
- if(!dzen.slave_win.tbuf[line].text) {
+ if(!dzen.slave_win.tbuf[line+dzen.slave_win.first_line_vis].text) {
reverse ?
XSetForeground(dzen.dpy, mgc, dzen.norm[ColBG]):
XSetForeground(dzen.dpy, mgc, dzen.norm[ColFG]);
@@ -125,13 +124,14 @@ drawtext(const char *text, int reverse, int line, int align) {
}
}
-unsigned long
+long
getcolor(const char *colstr) {
Colormap cmap = DefaultColormap(dzen.dpy, dzen.screen);
XColor color;
if(!XAllocNamedColor(dzen.dpy, cmap, colstr, &color, &color))
- eprint("dzen: error, cannot allocate color '%s'\n", colstr);
+ return -1;
+ //eprint("dzen: error, cannot allocate color '%s'\n", colstr);
return color.pixel;
}
@@ -186,13 +186,15 @@ setlinecolor(char * text, unsigned long * colfg, unsigned long * colbg) {
if(text[0] == '^' && text[1] == '#') {
strncpy(fgcolor, text+1, 7);
fgcolor[7] = '\0';
- newfg = getcolor(fgcolor);
+ if((newfg = getcolor(fgcolor)) == -1)
+ return NULL;
*colfg = newfg;
if(text[8] == '^' && text[9] == '#') {
strncpy(bgcolor, text+9, 7);
bgcolor[7] = '\0';
- newbg = getcolor(bgcolor);
+ if((newbg = getcolor(bgcolor)) == -1)
+ return NULL;
*colbg = newbg;
return text+16;
@@ -218,7 +220,6 @@ drawheader(char * text) {
if( (ctext = setlinecolor(text, &colfg, &colbg)) ) {
XSetForeground(dzen.dpy, dzen.gc, colfg);
XSetBackground(dzen.dpy, dzen.gc, colbg);
- printf("FG: %lu, BG: %lu\n", colfg, colbg);
drawtext(ctext, 0, -1, dzen.title_win.alignment);
XSetForeground(dzen.dpy, dzen.gc, dzen.norm[ColFG]);
XSetBackground(dzen.dpy, dzen.gc, dzen.norm[ColBG]);
diff --git a/dzen.h b/dzen.h
index 654cdb6..98ad59d 100644
--- a/dzen.h
+++ b/dzen.h
@@ -123,7 +123,7 @@ extern void drawtext(const char *text,
int reverse,
int line,
int aligne);
-extern unsigned long getcolor(const char *colstr); /* returns color of colstr */
+extern long getcolor(const char *colstr); /* returns color of colstr */
extern void setfont(const char *fontstr); /* sets global font */
extern unsigned int textw(const char *text); /* returns width of text in px */
extern void drawheader(char *text);
diff --git a/main.c b/main.c
index 38bf037..47cdc0e 100644
--- a/main.c
+++ b/main.c
@@ -281,8 +281,10 @@ x_create_windows(void) {
root = RootWindow(dzen.dpy, dzen.screen);
/* style */
- dzen.norm[ColBG] = getcolor(dzen.bg);
- dzen.norm[ColFG] = getcolor(dzen.fg);
+ if((dzen.norm[ColBG] = getcolor(dzen.bg)) == -1)
+ eprint("dzen: error, cannot allocate color '%s'\n", dzen.bg);
+ if((dzen.norm[ColFG] = getcolor(dzen.fg)) == -1)
+ eprint("dzen: error, cannot allocate color '%s'\n", dzen.fg);
setfont(dzen.fnt);
/* window attributes */