wmii

git clone git://oldgit.suckless.org/wmii/
Log | Files | Refs | README | LICENSE

commit 9eaeddf4bb01ef33dd991aeaf86b69e6c5a0b6b8
parent 7c06252261d9324042d2fa02526d81cb7060d580
Author: Kris Maglione <jg@suckless.org>
Date:   Fri,  9 Feb 2007 01:06:15 -0500

Restack view after mapping a client (&c)


Diffstat:
client.c | 146++++++++++++++++++++++++++++++++++++++++----------------------------------------
view.c | 2+-
2 files changed, 74 insertions(+), 74 deletions(-)

diff --git a/client.c b/client.c @@ -14,6 +14,79 @@ static char *Ebadcmd = "bad command", #define ButtonMask (ButtonPressMask | ButtonReleaseMask) Client * +create_client(Window w, XWindowAttributes *wa) { + Client **t, *c = (Client *) ixp_emallocz(sizeof(Client)); + XSetWindowAttributes fwa; + long msize; + + c->win = w; + c->rect.x = wa->x; + c->rect.y = wa->y; + c->border = wa->border_width; + c->rect.width = wa->width; + c->rect.height = wa->height; + XSetWindowBorderWidth(blz.dpy, c->win, 0); + c->proto = win_proto(c->win); + XGetTransientForHint(blz.dpy, c->win, &c->trans); + if(!XGetWMNormalHints(blz.dpy, c->win, &c->size, &msize) || !c->size.flags) + c->size.flags = PSize; + if(c->size.flags & PMinSize && c->size.flags & PMaxSize + && c->size.min_width == c->size.max_width + && c->size.min_height == c->size.max_height) + c->fixedsize = True; + else + c->fixedsize = False; + XAddToSaveSet(blz.dpy, c->win); + update_client_name(c); + fwa.override_redirect = 1; + fwa.background_pixmap = ParentRelative; + fwa.event_mask = + SubstructureRedirectMask | SubstructureNotifyMask | ExposureMask + | ButtonPressMask | PointerMotionMask | ButtonReleaseMask | KeyPressMask; + c->framewin = XCreateWindow(blz.dpy, blz.root, c->rect.x, c->rect.y, + c->rect.width + 2 * def.border, + c->rect.height + def.border + labelh(&def.font), 0, + DefaultDepth(blz.dpy, blz.screen), CopyFromParent, + DefaultVisual(blz.dpy, blz.screen), + CWOverrideRedirect | CWBackPixmap | CWEventMask, &fwa); + XGrabButton(blz.dpy, AnyButton, AnyModifier, c->framewin, False, ButtonMask, + GrabModeSync, GrabModeSync, None, None); + c->gc = XCreateGC(blz.dpy, c->framewin, 0, 0); + XSync(blz.dpy, False); + for(t=&client; *t; t=&(*t)->next); + c->next = *t; /* *t == nil */ + *t = c; + write_event("CreateClient 0x%x\n", c->win); + return c; +} + +void +manage_client(Client *c) { + XTextProperty tags; + Client *trans; + + tags.nitems = 0; + XGetTextProperty(blz.dpy, c->win, &tags, tags_atom); + if(c->trans && (trans = client_of_win(c->trans))) + strncpy(c->tags, trans->tags, sizeof(c->tags)); + else if(tags.nitems) + strncpy(c->tags, (char *)tags.value, sizeof(c->tags)); + XFree(tags.value); + if(!strlen(c->tags)) + apply_rules(c); + apply_tags(c, c->tags); + reparent_client(c, c->framewin, c->rect.x, c->rect.y); + if(!starting) + update_views(); + map_client(c); + XMapWindow(blz.dpy, c->framewin); + XSync(blz.dpy, False); + if(c->sel->area->view == screen->sel) + focus_client(c, False); + flush_masked_events(EnterWindowMask); +} + +Client * sel_client() { return screen->sel && screen->sel->sel->sel ? screen->sel->sel->sel->client : nil; } @@ -69,53 +142,6 @@ update_client_name(Client *c) { } } -Client * -create_client(Window w, XWindowAttributes *wa) { - Client **t, *c = (Client *) ixp_emallocz(sizeof(Client)); - XSetWindowAttributes fwa; - long msize; - - c->win = w; - c->rect.x = wa->x; - c->rect.y = wa->y; - c->border = wa->border_width; - c->rect.width = wa->width; - c->rect.height = wa->height; - XSetWindowBorderWidth(blz.dpy, c->win, 0); - c->proto = win_proto(c->win); - XGetTransientForHint(blz.dpy, c->win, &c->trans); - if(!XGetWMNormalHints(blz.dpy, c->win, &c->size, &msize) || !c->size.flags) - c->size.flags = PSize; - if(c->size.flags & PMinSize && c->size.flags & PMaxSize - && c->size.min_width == c->size.max_width - && c->size.min_height == c->size.max_height) - c->fixedsize = True; - else - c->fixedsize = False; - XAddToSaveSet(blz.dpy, c->win); - update_client_name(c); - fwa.override_redirect = 1; - fwa.background_pixmap = ParentRelative; - fwa.event_mask = - SubstructureRedirectMask | SubstructureNotifyMask | ExposureMask - | ButtonPressMask | PointerMotionMask | ButtonReleaseMask | KeyPressMask; - c->framewin = XCreateWindow(blz.dpy, blz.root, c->rect.x, c->rect.y, - c->rect.width + 2 * def.border, - c->rect.height + def.border + labelh(&def.font), 0, - DefaultDepth(blz.dpy, blz.screen), CopyFromParent, - DefaultVisual(blz.dpy, blz.screen), - CWOverrideRedirect | CWBackPixmap | CWEventMask, &fwa); - XGrabButton(blz.dpy, AnyButton, AnyModifier, c->framewin, False, ButtonMask, - GrabModeSync, GrabModeSync, None, None); - c->gc = XCreateGC(blz.dpy, c->framewin, 0, 0); - XSync(blz.dpy, False); - for(t=&client; *t; t=&(*t)->next); - c->next = *t; /* *t == nil */ - *t = c; - write_event("CreateClient 0x%x\n", c->win); - return c; -} - void set_client_state(Client * c, int state) { @@ -345,32 +371,6 @@ gravitate_client(Client *c, Bool invert) { c->rect.y += dy; } -void -manage_client(Client *c) { - XTextProperty tags; - Client *trans; - - tags.nitems = 0; - XGetTextProperty(blz.dpy, c->win, &tags, tags_atom); - if(c->trans && (trans = client_of_win(c->trans))) - strncpy(c->tags, trans->tags, sizeof(c->tags)); - else if(tags.nitems) - strncpy(c->tags, (char *)tags.value, sizeof(c->tags)); - XFree(tags.value); - if(!strlen(c->tags)) - apply_rules(c); - apply_tags(c, c->tags); - reparent_client(c, c->framewin, c->rect.x, c->rect.y); - if(!starting) - update_views(); - map_client(c); - XMapWindow(blz.dpy, c->framewin); - XSync(blz.dpy, False); - if(c->sel->area->view == screen->sel) - focus_client(c, False); - flush_masked_events(EnterWindowMask); -} - static int dummy_error_handler(Display *dpy, XErrorEvent *error) { return 0; diff --git a/view.c b/view.c @@ -122,7 +122,7 @@ focus_view(WMScreen *s, View *v) { f->rect.y); } if((c = sel_client())) - focus_client(c, False); + focus_client(c, True); draw_frames(); XSync(blz.dpy, False); XUngrabServer(blz.dpy);