diff options
author | gotmor <gotmor@f2baff5b-bf2c-0410-a398-912abdc3d8b2> | 2007-03-30 13:06:41 +0000 |
---|---|---|
committer | gotmor <gotmor@f2baff5b-bf2c-0410-a398-912abdc3d8b2> | 2007-03-30 13:06:41 +0000 |
commit | 317b0417b2b189fa15de3fc9542fb9c6ffe8239e (patch) | |
tree | 4af697fe4aee2267f2e9ead0cfc585b1ad05e162 | |
parent | e39102ce6b07c8bee4e1b440c807b133b73d9800 (diff) | |
download | dzen-317b0417b2b189fa15de3fc9542fb9c6ffe8239e.tar.gz dzen-317b0417b2b189fa15de3fc9542fb9c6ffe8239e.zip |
added '-tw' title window width option
revised geometry checking
git-svn-id: http://dzen.googlecode.com/svn/trunk@7 f2baff5b-bf2c-0410-a398-912abdc3d8b2
-rw-r--r-- | README | 1 | ||||
-rw-r--r-- | TODO | 2 | ||||
-rw-r--r-- | action.c | 10 | ||||
-rw-r--r-- | config.mk | 2 | ||||
-rw-r--r-- | draw.c | 8 | ||||
-rw-r--r-- | main.c | 74 |
6 files changed, 66 insertions, 31 deletions
@@ -46,6 +46,7 @@ dzen accepts a couple of options: -x x position -y y position -w width + -tw title window width -v version information Termination: @@ -13,5 +13,5 @@ # user interface - o title and slave window should be allowed to have different bg/fg/font/width settings without making the command line arguments a mess + o title and slave window should be allowed to have different bg/fg/font/settings without making the command line arguments a mess o split lines longer than window width in multiple lines @@ -143,7 +143,7 @@ static void x_draw_body(void) { dzen.x = 0; dzen.y = 0; - dzen.w = dzen.mw; + dzen.w = dzen.slave_win.width; dzen.h = dzen.mh; int i; @@ -161,14 +161,14 @@ x_draw_body(void) { for(i=0; i < dzen.slave_win.max_lines; i++) { if(i < dzen.slave_win.last_line_vis) { - drawtext(dzen.slave_win.tbuf[i + dzen.slave_win.first_line_vis], 0, i+1); + drawtext(dzen.slave_win.tbuf[i + dzen.slave_win.first_line_vis], 0, i); XCopyArea(dzen.dpy, dzen.slave_win.drawable, dzen.slave_win.line[i], dzen.gc, - 0, 0, dzen.mw, dzen.mh, 0, 0); + 0, 0, dzen.slave_win.width, dzen.mh, 0, 0); } else if(i < dzen.slave_win.max_lines) { - drawtext("", 0, i+1); + drawtext("", 0, i); XCopyArea(dzen.dpy, dzen.slave_win.drawable, dzen.slave_win.line[i], dzen.gc, - 0, 0, dzen.mw, dzen.mh, 0, 0); + 0, 0, dzen.slave_win.width, dzen.mh, 0, 0); } } pthread_mutex_unlock(&dzen.mt); @@ -1,5 +1,5 @@ # dzen version -VERSION = 0.1.9 +VERSION = 0.2.0 # Customize below to fit your system @@ -29,11 +29,13 @@ void drawtext(const char *text, int reverse, int line) { mgc = reverse ? dzen.gc : dzen.rgc; /* title win */ - if(line == -1) + if(line == -1) { XFillRectangles(dzen.dpy, dzen.title_win.drawable, mgc, &r, 1); + } /* slave win */ - else + else { XFillRectangles(dzen.dpy, dzen.slave_win.drawable, mgc, &r, 1); + } if(!text) return; @@ -58,7 +60,7 @@ void drawtext(const char *text, int reverse, int line) { } if(line != -1) - x = h; + x = h/2; else x = (dzen.w - textw(buf)+h)/2; y = dzen.font.ascent + (dzen.mh - h) / 2; @@ -54,13 +54,13 @@ static void drawheader(char * text) { dzen.x = 0; dzen.y = 0; - dzen.w = dzen.mw; + dzen.w = dzen.title_win.width; dzen.h = dzen.mh; if(text) drawtext(text, 0, -1); XCopyArea(dzen.dpy, dzen.title_win.drawable, dzen.title_win.win, - dzen.gc, 0, 0, dzen.mw, dzen.mh, 0, 0); + dzen.gc, 0, 0, dzen.title_win.width, dzen.mh, 0, 0); } static void @@ -96,14 +96,14 @@ static void x_highlight_line(int line) { drawtext(dzen.slave_win.tbuf[line + dzen.slave_win.first_line_vis], 1, line+1); XCopyArea(dzen.dpy, dzen.slave_win.drawable, dzen.slave_win.line[line], dzen.rgc, - 0, 0, dzen.mw, dzen.mh, 0, 0); + 0, 0, dzen.slave_win.width, dzen.mh, 0, 0); } static void x_unhighlight_line(int line) { drawtext(dzen.slave_win.tbuf[line + dzen.slave_win.first_line_vis], 0, line+1); XCopyArea(dzen.dpy, dzen.slave_win.drawable, dzen.slave_win.line[line], dzen.gc, - 0, 0, dzen.mw, dzen.mh, 0, 0); + 0, 0, dzen.slave_win.width, dzen.mh, 0, 0); } static void @@ -247,20 +247,44 @@ x_create_windows(void) { /* check geometry */ - dzen.hx = dzen.hx > DisplayWidth(dzen.dpy, dzen.screen) ? 0 : dzen.hx; - dzen.mw = dzen.hw ? (dzen.hw + dzen.hx > DisplayWidth(dzen.dpy, dzen.screen) - ? (DisplayWidth(dzen.dpy, dzen.screen) - dzen.hx) : dzen.hw) - : DisplayWidth(dzen.dpy, dzen.screen); + if(dzen.title_win.x > DisplayWidth(dzen.dpy, dzen.screen)) + dzen.title_win.x = 0; + + if(!dzen.title_win.width) + dzen.title_win.width = DisplayWidth(dzen.dpy, dzen.screen); + + if((dzen.title_win.x + dzen.title_win.width) > DisplayWidth(dzen.dpy, dzen.screen)) + dzen.title_win.width = DisplayWidth(dzen.dpy, dzen.screen) - dzen.title_win.x; + + if(!dzen.slave_win.width) { + dzen.slave_win.x = 0; + dzen.slave_win.width = DisplayWidth(dzen.dpy, dzen.screen); + } + if( dzen.title_win.width == dzen.slave_win.width) { + dzen.slave_win.x = dzen.title_win.x; + dzen.slave_win.width = dzen.title_win.width; + } + if(dzen.slave_win.width != DisplayWidth(dzen.dpy, dzen.screen)) { + dzen.slave_win.x = dzen.title_win.x + dzen.title_win.width/2 - dzen.slave_win.width/2; + if(dzen.slave_win.x < 0) + dzen.slave_win.x = 0; + if(dzen.slave_win.width > DisplayWidth(dzen.dpy, dzen.screen)) + dzen.slave_win.width = DisplayWidth(dzen.dpy, dzen.screen); + if(dzen.slave_win.x + dzen.slave_win.width > DisplayWidth(dzen.dpy, dzen.screen)) + dzen.slave_win.x = DisplayWidth(dzen.dpy, dzen.screen) - dzen.slave_win.width; + } dzen.mh = dzen.font.height + 2; dzen.hy = (dzen.hy + dzen.mh) > DisplayHeight(dzen.dpy, dzen.screen) ? 0 : dzen.hy; + /* title window */ dzen.title_win.win = XCreateWindow(dzen.dpy, root, - dzen.hx, dzen.hy, dzen.mw, dzen.mh, 0, + dzen.title_win.x, dzen.hy, dzen.title_win.width, dzen.mh, 0, DefaultDepth(dzen.dpy, dzen.screen), CopyFromParent, DefaultVisual(dzen.dpy, dzen.screen), CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa); - dzen.title_win.drawable = XCreatePixmap(dzen.dpy, root, dzen.mw, dzen.mh, DefaultDepth(dzen.dpy, dzen.screen)); + dzen.title_win.drawable = XCreatePixmap(dzen.dpy, root, dzen.title_win.width, + dzen.mh, DefaultDepth(dzen.dpy, dzen.screen)); /* slave window */ if(dzen.slave_win.max_lines) { @@ -272,19 +296,19 @@ x_create_windows(void) { dzen.hy = (dzen.hy - dzen.mh) - dzen.mh*(dzen.slave_win.max_lines); dzen.slave_win.win = XCreateWindow(dzen.dpy, root, - dzen.hx, dzen.hy+dzen.mh, dzen.mw, dzen.slave_win.max_lines * dzen.mh, 0, + dzen.slave_win.x, dzen.hy+dzen.mh, dzen.slave_win.width, dzen.slave_win.max_lines * dzen.mh, 0, DefaultDepth(dzen.dpy, dzen.screen), CopyFromParent, DefaultVisual(dzen.dpy, dzen.screen), CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa); - dzen.slave_win.drawable = XCreatePixmap(dzen.dpy, root, dzen.mw, + dzen.slave_win.drawable = XCreatePixmap(dzen.dpy, root, dzen.slave_win.width, dzen.mh, DefaultDepth(dzen.dpy, dzen.screen)); /* windows holding the lines */ dzen.slave_win.line = emalloc(sizeof(Window) * dzen.slave_win.max_lines); for(i=0; i < dzen.slave_win.max_lines; i++) { dzen.slave_win.line[i] = XCreateWindow(dzen.dpy, dzen.slave_win.win, - 0, i*dzen.mh, dzen.mw, dzen.mh, 0, + 0, i*dzen.mh, dzen.slave_win.width, dzen.mh, 0, DefaultDepth(dzen.dpy, dzen.screen), CopyFromParent, DefaultVisual(dzen.dpy, dzen.screen), CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa); @@ -315,9 +339,9 @@ main(int argc, char *argv[]) { /* default values */ dzen.cur_line = 0; dzen.ret_val = 0; - dzen.hx = 0; dzen.hy = 0; - dzen.hw = 0; + dzen.title_win.x = dzen.slave_win.x = 0; + dzen.title_win.width = dzen.slave_win.width = 0; dzen.fnt = FONT; dzen.bg = BGCOLOR; dzen.fg = FGCOLOR; @@ -353,20 +377,28 @@ main(int argc, char *argv[]) { if(++i < argc) dzen.fg = argv[i]; } else if(!strncmp(argv[i], "-x", 3)) { - if(++i < argc) dzen.hx = atoi(argv[i]); + if(++i < argc) dzen.title_win.x = dzen.slave_win.x = atoi(argv[i]); + //if(++i < argc) dzen.hx = atoi(argv[i]); } else if(!strncmp(argv[i], "-y", 3)) { if(++i < argc) dzen.hy = atoi(argv[i]); } else if(!strncmp(argv[i], "-w", 3)) { - if(++i < argc) dzen.hw = atoi(argv[i]); + if(++i < argc) dzen.slave_win.width = atoi(argv[i]); + //if(++i < argc) dzen.hw = atoi(argv[i]); + } + else if(!strncmp(argv[i], "-tw", 3)) { + if(++i < argc) dzen.title_win.width = atoi(argv[i]); } else if(!strncmp(argv[i], "-v", 3)) eprint("dzen-"VERSION", (C)opyright 2007 Robert Manea\n"); else - eprint("usage: dzen [-v] [-p] [-a] [-m] [-x <pixel>] [-y <pixel>] [-w <pixel>]\n" - " [-l <lines>] [-fn <font>] [-bg <color>] [-fg <color>]\n" - " [-e <string>]\n"); + eprint("usage: dzen [-v] [-p] [-a] [-m] [-e <string>] \n" + " [-x <pixel>] [-y <pixel>] [-w <pixel>] [-tw <pixel>]\n" + " [-l <lines>] [-fn <font>] [-bg <color>] [-fg <color>]\n"); + + if(dzen.title_win.width == 0) + dzen.title_win.width = dzen.slave_win.width; if(!XInitThreads()) eprint("dzen: no multithreading support in xlib.\n"); @@ -397,7 +429,7 @@ main(int argc, char *argv[]) { /* autohiding */ if(dzen.title_win.autohide) { - x_resize_header(dzen.mw, 1); + x_resize_header(dzen.title_win.width, 1); dzen.title_win.ishidden = True; } |