all repos — dwm @ 83d23908d3438d7f1f62533a7c8d96fc1019df55

my dwm build

implemented draw_client stuff
Anselm R. Garbe garbeam@wmii.de
Tue, 11 Jul 2006 23:18:30 +0200
commit

83d23908d3438d7f1f62533a7c8d96fc1019df55

parent

a05beb6585713aeb661cf30c080e77fbfdb28867

3 files changed, 58 insertions(+), 20 deletions(-)

jump to
M client.cclient.c

@@ -37,10 +37,6 @@ XFreeStringList(list);

} } XFree(name.value); - if(c == stack) - draw_bar(); - else - draw_client(c); } void

@@ -51,27 +47,52 @@ long msize;

if(!XGetWMNormalHints(dpy, c->win, &size, &msize) || !size.flags) size.flags = PSize; c->flags = size.flags; - c->basew = size.base_width; - c->baseh = size.base_height; - c->incw = size.width_inc; - c->inch = size.height_inc; - c->maxw = size.max_width; - c->maxh = size.max_height; - c->minw = size.min_width; - c->minh = size.min_height; + if(c->flags & PBaseSize) { + c->basew = size.base_width; + c->baseh = size.base_height; + } + else + c->basew = c->baseh = 0; + if(c->flags & PResizeInc) { + c->incw = size.width_inc; + c->inch = size.height_inc; + } + else + c->incw = c->inch = 0; + if(c->flags & PMaxSize) { + c->maxw = size.max_width; + c->maxh = size.max_height; + } + else + c->maxw = c->maxh = 0; + if(c->flags & PMinSize) { + c->minw = size.min_width; + c->minh = size.min_height; + } + else + c->minw = c->minh = 0; } void focus(Client *c) { - Client **l; + Client **l, *old; + + old = stack; for(l=&stack; *l && *l != c; l=&(*l)->snext); eassert(*l == c); *l = c->snext; c->snext = stack; stack = c; XRaiseWindow(dpy, c->win); + XRaiseWindow(dpy, c->title); XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime); + if(old && old != c) { + XMapWindow(dpy, old->title); + draw_client(old); + } + XUnmapWindow(dpy, c->title); + draw_bar(); XFlush(dpy); }

@@ -91,7 +112,6 @@ update_size(c);

XSetWindowBorderWidth(dpy, c->win, 1); XSelectInput(dpy, c->win, CLIENT_MASK); XGetTransientForHint(dpy, c->win, &c->trans); - update_name(c); twa.override_redirect = 1; twa.background_pixmap = ParentRelative; twa.event_mask = ExposureMask;

@@ -100,6 +120,7 @@ c->title = XCreateWindow(dpy, root, c->x, c->y, c->w, barrect.height,

0, DefaultDepth(dpy, screen), CopyFromParent, DefaultVisual(dpy, screen), CWOverrideRedirect | CWBackPixmap | CWEventMask, &twa); + update_name(c); for(l=&clients; *l; l=&(*l)->next); c->next = *l; /* *l == nil */

@@ -107,12 +128,14 @@ *l = c;

c->snext = stack; stack = c; XMapWindow(dpy, c->win); + XMapWindow(dpy, c->title); XGrabButton(dpy, Button1, Mod1Mask, c->win, False, ButtonPressMask, GrabModeAsync, GrabModeSync, None, None); XGrabButton(dpy, Button2, Mod1Mask, c->win, False, ButtonPressMask, GrabModeAsync, GrabModeSync, None, None); XGrabButton(dpy, Button3, Mod1Mask, c->win, False, ButtonPressMask, GrabModeAsync, GrabModeSync, None, None); + resize(c); focus(c); }

@@ -122,6 +145,7 @@ {

XConfigureEvent e; XMoveResizeWindow(dpy, c->win, c->x, c->y, c->w, c->h); + XMoveResizeWindow(dpy, c->title, c->x + c->w / 3, c->y, 2 * c->w / 3, barrect.height); e.type = ConfigureNotify; e.event = c->win; e.window = c->win;

@@ -186,7 +210,17 @@

void draw_client(Client *c) { - + if(!c) + return; + if(c == stack) + draw_bar(); + brush.rect.x = brush.rect.y = 0; + brush.rect.width = 2 * c->w / 3; + brush.rect.height = barrect.height; + draw(dpy, &brush, True, c->name); + XCopyArea(dpy, brush.drawable, c->title, brush.gc, 0, 0, + brush.rect.width, brush.rect.height, 0, 0); + XFlush(dpy); }
M event.cevent.c

@@ -143,9 +143,12 @@ static void

expose(XEvent *e) { XExposeEvent *ev = &e->xexpose; + Client *c; if(ev->count == 0) { - if(ev->window == barwin) + if((c = getclient(ev->window))) + draw_client(c); + else if(ev->window == barwin) draw_bar(); } }
M wm.cwm.c

@@ -245,10 +245,6 @@ cursor[CurMove] = XCreateFontCursor(dpy, XC_fleur);

update_keys(); - brush.drawable = XCreatePixmap(dpy, root, rect.width, rect.height, - DefaultDepth(dpy, screen)); - brush.gc = XCreateGC(dpy, root, 0, 0); - /* style */ loadcolors(dpy, screen, &brush, BGCOLOR, FGCOLOR, BORDERCOLOR); loadfont(dpy, &brush.font, FONT);

@@ -266,6 +262,11 @@ CopyFromParent, DefaultVisual(dpy, screen),

CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa); XDefineCursor(dpy, barwin, cursor[CurNormal]); XMapRaised(dpy, barwin); + + brush.drawable = XCreatePixmap(dpy, root, rect.width, barrect.height, + DefaultDepth(dpy, screen)); + brush.gc = XCreateGC(dpy, root, 0, 0); + pipe_spawn(statustext, sizeof(statustext), dpy, (char **)status); draw_bar();