Oops, here goes the patch ;)
diff -r 0be0474bce7a cmd/wm/client.c
--- a/cmd/wm/client.c Sun Jul 16 15:35:40 2006 +0200
+++ b/cmd/wm/client.c Sun Jul 30 16:53:21 2006 +0200
@@ -81,6 +81,7 @@ update_client_name(Client *c)
if(ch.res_name)
XFree(ch.res_name);
}
+ write_event("ClientName %d\n", idx_of_client(c));
}
Client *
@@ -89,7 +90,7 @@ create_client(Window w, XWindowAttribute
Client **t, *c = (Client *) cext_emallocz(sizeof(Client));
XSetWindowAttributes fwa;
long msize;
- unsigned int i;
+ unsigned int i, barh;
static unsigned int id = 1;
c->id = id++;
@@ -118,9 +119,10 @@ create_client(Window w, XWindowAttribute
SubstructureRedirectMask | SubstructureNotifyMask | ExposureMask
| ButtonPressMask | PointerMotionMask | ButtonReleaseMask | KeyPressMask;
+ barh = def.framebars ? blitz_labelh(&def.font) : 0;
c->framewin = XCreateWindow(blz.dpy, blz.root, c->rect.x, c->rect.y,
c->rect.width + 2 * def.border,
- c->rect.height + def.border + blitz_labelh(&def.font), 0,
+ c->rect.height + def.border + barh, 0,
DefaultDepth(blz.dpy, blz.screen), CopyFromParent,
DefaultVisual(blz.dpy, blz.screen),
CWOverrideRedirect | CWBackPixmap | CWEventMask, &fwa);
@@ -312,12 +314,13 @@ gravitate_client(Client *c, Bool invert)
case NorthWestGravity:
case NorthGravity:
case NorthEastGravity:
- dy = blitz_labelh(&def.font);
+ if(def.framebars)
+ dy = blitz_labelh(&def.font);
break;
case EastGravity:
case CenterGravity:
case WestGravity:
- dy = -(c->rect.height / 2) + blitz_labelh(&def.font);
+ dy = -(c->rect.height / 2) + def.framebars ? blitz_labelh(&def.font) : 0;
break;
case SouthEastGravity:
case SouthGravity:
@@ -436,7 +439,11 @@ match_sizehints(Client *c, XRectangle *r
{
XSizeHints *s = &c->size;
unsigned int dx = 2 * def.border;
- unsigned int dy = def.border + blitz_labelh(&def.font);
+ unsigned int dy;
+ if(def.framebars)
+ dy = def.border + blitz_labelh(&def.font);
+ else
+ dy = 2 * def.border;
unsigned int hdiff, wdiff;
if(floating && (s->flags & PMinSize)) {
@@ -526,7 +533,10 @@ resize_client(Client *c, XRectangle *r,
if((c->rect.width == screen->rect.width) &&
(c->rect.height == screen->rect.height)) {
f->rect.x = -def.border;
- f->rect.y = -blitz_labelh(&def.font);
+ if(def.framebars || (f->area->mode == Colstack && f->area->sel != f))
+ f->rect.y = -blitz_labelh(&def.font);
+ else
+ f->rect.y = -def.border;
}else{
if(f->rect.height > max_height)
f->rect.height = max_height;
@@ -551,10 +561,16 @@ resize_client(Client *c, XRectangle *r,
}
c->rect.x = def.border;
- c->rect.y = blitz_labelh(&def.font);
+ if(def.framebars || (f->area->mode == Colstack && f->area->sel != f))
+ c->rect.y = blitz_labelh(&def.font);
+ else
+ c->rect.y = def.border;
if((f->area->sel == f) || (f->area->mode != Colstack)) {
c->rect.width = f->rect.width - 2 * def.border;
- c->rect.height = f->rect.height - def.border - blitz_labelh(&def.font);
+ if(def.framebars)
+ c->rect.height = f->rect.height - def.border - blitz_labelh(&def.font);
+ else
+ c->rect.height = f->rect.height - 2 * def.border;
}
if(!ignore_xcall) {
XMoveResizeWindow(blz.dpy, c->win, c->rect.x, c->rect.y,
diff -r 0be0474bce7a cmd/wm/event.c
--- a/cmd/wm/event.c Sun Jul 16 15:35:40 2006 +0200
+++ b/cmd/wm/event.c Sun Jul 30 16:53:21 2006 +0200
@@ -151,17 +151,19 @@ configurerequest(XEvent *e)
frect=&c->sel->revert;
if(c->rect.width >= screen->rect.width && c->rect.height >= screen->rect.height) {
- frect->y = wc.y = -blitz_labelh(&def.font);
+ frect->y = wc.y = def.framebars ? -blitz_labelh(&def.font) : -def.border;
frect->x = wc.x = -def.border;
}
else {
- frect->y = wc.y = c->rect.y - blitz_labelh(&def.font);
+ frect->y = wc.y = c->rect.y - def.framebars ? blitz_labelh(&def.font): def.border;
frect->x = wc.x = c->rect.x - def.border;
}
frect->width = wc.width = c->rect.width + 2 * def.border;
- frect->height = wc.height = c->rect.height + def.border
- + blitz_labelh(&def.font);
- wc.border_width = 1;
+ if(def.framebars)
+ frect->height = wc.height = c->rect.height + def.border
+ + blitz_labelh(&def.font);
+ else
+ frect->height = wc.height = c->rect.height + 2 * def.border;
wc.sibling = None;
wc.stack_mode = ev->detail;
if(c->sel->area->view != screen->sel)
@@ -180,9 +182,15 @@ configurerequest(XEvent *e)
if(c && c->frame) {
wc.x = def.border;
- wc.y = blitz_labelh(&def.font);
wc.width = c->sel->rect.width - 2 * def.border;
- wc.height = c->sel->rect.height - def.border - blitz_labelh(&def.font);
+ if(def.framebars) {
+ wc.y = blitz_labelh(&def.font);
+ wc.height = c->sel->rect.height - def.border - blitz_labelh(&def.font);
+ }
+ else {
+ wc.y = def.border;
+ wc.height = c->sel->rect.height - 2 * def.border;
+ }
}
wc.border_width = 0;
@@ -245,8 +253,9 @@ expose(XEvent *e)
static Frame *f;
if(ev->count == 0) {
- if(ev->window == screen->barwin)
+ if(ev->window == screen->barwin) {
draw_bar(screen);
+ }
else if((f = frame_of_win(ev->window)) && f->view == screen->sel)
draw_frame(f);
}
diff -r 0be0474bce7a cmd/wm/frame.c
--- a/cmd/wm/frame.c Sun Jul 16 15:35:40 2006 +0200
+++ b/cmd/wm/frame.c Sun Jul 30 16:53:21 2006 +0200
@@ -25,7 +25,10 @@ create_frame(Client *c, View *v)
else{
f->revert = f->rect = c->rect;
f->revert.width = f->rect.width += 2 * def.border;
- f->revert.height = f->rect.height += def.border + blitz_labelh(&def.font);
+ if(def.framebars)
+ f->revert.height = f->rect.height += def.border + blitz_labelh(&def.font);
+ else
+ f->revert.height = f->rect.height += 2 * def.border;
}
f->collapsed = False;
@@ -101,29 +104,33 @@ void
void
draw_frame(Frame *f)
{
- if(def.border) {
- f->tile.rect = f->rect;
- f->tile.rect.x = f->tile.rect.y = 0;
+ f->tile.rect = f->rect;
+ f->tile.rect.x = f->tile.rect.y = 0;
+ if(def.border)
+ blitz_draw_tile(&f->tile);
+
+ if(def.framebars ||
+ (f->area->mode == Colstack && f->area->sel != f)) {
+ if (f->area->mode == Colstack)
+ printf("colstack\n");
+ f->grabbox.rect = f->tile.rect;
+ f->grabbox.rect.height = blitz_labelh(&def.font);
+ f->grabbox.rect.width = def.font.height;
+
+ f->titlebar.rect = f->grabbox.rect;
+ f->titlebar.rect.x = f->grabbox.rect.x + f->grabbox.rect.width;
+ f->titlebar.rect.width = f->rect.width / 2;
+
+ /* tag bar */
+ f->tagbar.rect = f->grabbox.rect;
+ f->tagbar.rect.x = f->titlebar.rect.x + f->titlebar.rect.width;
+ f->tagbar.rect.width =
+ f->rect.width - (f->grabbox.rect.width + f->titlebar.rect.width);
+ blitz_draw_tile(&f->grabbox);
+ blitz_draw_input(&f->tagbar);
+ blitz_draw_label(&f->titlebar, f->client->name);
}
- f->grabbox.rect = f->tile.rect;
- f->grabbox.rect.height = blitz_labelh(&def.font);
- f->grabbox.rect.width = def.font.height;
-
- f->titlebar.rect = f->grabbox.rect;
- f->titlebar.rect.x = f->grabbox.rect.x + f->grabbox.rect.width;
- f->titlebar.rect.width = f->rect.width / 2;
-
- /* tag bar */
- f->tagbar.rect = f->grabbox.rect;
- f->tagbar.rect.x = f->titlebar.rect.x + f->titlebar.rect.width;
- f->tagbar.rect.width =
- f->rect.width - (f->grabbox.rect.width + f->titlebar.rect.width);
-
- blitz_draw_tile(&f->tile);
- blitz_draw_tile(&f->grabbox);
- blitz_draw_input(&f->tagbar);
- blitz_draw_label(&f->titlebar, f->client->name);
XCopyArea(blz.dpy, pmap, f->client->framewin, f->client->gc,
0, 0, f->rect.width, f->rect.height, 0, 0);
XSync(blz.dpy, False);
diff -r 0be0474bce7a cmd/wm/fs.c
--- a/cmd/wm/fs.c Sun Jul 16 15:35:40 2006 +0200
+++ b/cmd/wm/fs.c Sun Jul 30 16:53:21 2006 +0200
@@ -298,6 +298,13 @@ message_root(char *message)
def.mod = mod;
if(view)
restack_view(screen->sel);
+ }else if(!strncmp(message, "framebars ", 10)) {
+ message += 10;
+ if(*message == '0')
+ def.framebars = 0;
+ else
+ def.framebars = 1;
+ update_views();
}else
return Ebadcmd;
@@ -315,6 +322,7 @@ read_root_ctl()
i += snprintf(&buffer[i], (BUFFER_SIZE - i), "font %s\n", def.font.fontstr);
i += snprintf(&buffer[i], (BUFFER_SIZE - i), "grabmod %s\n", def.grabmod);
i += snprintf(&buffer[i], (BUFFER_SIZE - i), "border %d\n", def.border);
+ i += snprintf(&buffer[i], (BUFFER_SIZE - i), "framebars %d\n", def.framebars);
return buffer;
}
diff -r 0be0474bce7a cmd/wm/wm.c
--- a/cmd/wm/wm.c Sun Jul 16 15:35:40 2006 +0200
+++ b/cmd/wm/wm.c Sun Jul 30 16:53:21 2006 +0200
@@ -324,6 +324,7 @@ main(int argc, char *argv[])
def.keyssz = 0;
def.font.fontstr = cext_estrdup(BLITZ_FONT);
def.border = 2;
+ def.framebars = 1;
def.colmode = Coldefault;
cext_strlcpy(def.selcolor.colstr, BLITZ_SELCOLORS, sizeof(def.selcolor.colstr));
blitz_loadcolor(&blz, &def.selcolor);
diff -r 0be0474bce7a cmd/wm/wm.h
--- a/cmd/wm/wm.h Sun Jul 16 15:35:40 2006 +0200
+++ b/cmd/wm/wm.h Sun Jul 30 16:53:21 2006 +0200
@@ -159,6 +159,7 @@ struct {
char grabmod[5];
unsigned long mod;
int colmode;
+ int framebars;
} def;
struct WMScreen {
pgpTywSQR7HNq.pgp
Description: PGP signature
_______________________________________________ [email protected] mailing list http://wmii.de/cgi-bin/mailman/listinfo/wmii
