From ed495b9dff7274c305c4a482cf06be92cf5543bc Mon Sep 17 00:00:00 2001 From: Martin Duquesnoy Date: Mon, 20 Oct 2008 00:45:42 +0200 Subject: [PATCH] client: Fix default client position --- src/client.c | 33 +++++++++++++++------------------ src/config.c | 4 ++-- src/draw.c | 4 ++-- src/event.c | 28 ++++++++++++++-------------- src/layout.c | 5 +++-- src/structs.h | 2 +- src/wmfs.h | 12 ++++++------ 7 files changed, 43 insertions(+), 45 deletions(-) diff --git a/src/client.c b/src/client.c index 16fe92d..9a16ff2 100644 --- a/src/client.c +++ b/src/client.c @@ -33,7 +33,7 @@ #include "wmfs.h" int -clientpertag(int tag) +client_pertag(int tag) { Client *c; int i = 0; @@ -84,7 +84,7 @@ client_switch(Bool b) { client_focus(c); if(!c->tile) - raiseclient(c); + client_raise(c); } } else @@ -99,7 +99,7 @@ client_switch(Bool b) { client_focus(c); if(!c->tile) - raiseclient(c); + client_raise(c); } } arrange(); @@ -149,7 +149,7 @@ client_focus(Client *c) if(conf.ttbarheight) XSetWindowBorder(dpy, c->tbar->win, conf.colors.borderfocus); if(conf.raisefocus) - raiseclient(c); + client_raise(c); XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime); updatetitlebar(c); } @@ -164,7 +164,7 @@ client_focus(Client *c) } Client* -getclient(Window w) +client_get(Window w) { Client *c; @@ -192,9 +192,7 @@ client_hide(Client *c) XUnmapWindow(dpy, c->win); if(conf.ttbarheight) XUnmapWindow(dpy, c->tbar->win); - setwinstate(c->win, IconicState); - c->hide = True; return; } @@ -212,7 +210,7 @@ ishide(Client *c) } void -uicb_killclient(uicb_t cmd) +uicb_client_kill(uicb_t cmd) { XEvent ev; @@ -231,7 +229,7 @@ uicb_killclient(uicb_t cmd) } void -mapclient(Client *c) +client_map(Client *c) { if(!c) return; @@ -257,9 +255,9 @@ client_manage(Window w, XWindowAttributes *wa) c = emalloc(1, sizeof(Client)); c->win = w; c->geo.x = wa->x; - c->geo.y = wa->y + conf.ttbarheight + barheight; + c->geo.y = wa->y + sgeo.y + conf.ttbarheight; /* Default free placement */ c->geo.width = wa->width; - c->geo.height = wa->height - conf.ttbarheight; + c->geo.height = wa->height; c->tag = seltag; c->border = conf.borderheight; @@ -275,6 +273,7 @@ client_manage(Window w, XWindowAttributes *wa) grabbuttons(c, False); XSelectInput(dpy, w, EnterWindowMask | FocusChangeMask | PropertyChangeMask | StructureNotifyMask); + client_size_hints(c); updatetitlebar(c); if((rettrans = XGetTransientForHint(dpy, w, &trans) == Success)) @@ -284,11 +283,11 @@ client_manage(Window w, XWindowAttributes *wa) if(!c->free) c->free = (rettrans == Success) || c->hint; else - raiseclient(c); + client_raise(c); client_attach(c); - client_moveresize(c, c->geo, True); - mapclient(c); + XMoveResizeWindow(dpy, c->win, c->geo.x, c->geo.y, c->geo.width, c->geo.height); + client_map(c); setwinstate(c->win, NormalState); client_focus(c); arrange(); @@ -441,7 +440,7 @@ client_size_hints(Client *c) } void -raiseclient(Client *c) +client_raise(Client *c) { if(!c) return; @@ -462,9 +461,7 @@ client_unhide(Client *c) XMapWindow(dpy, c->win); if(conf.ttbarheight) XMapWindow(dpy, c->tbar->win); - setwinstate(c->win, NormalState); - c->hide = False; return; } @@ -493,7 +490,7 @@ client_unmanage(Client *c) } void -unmapclient(Client *c) +client_unmap(Client *c) { if(!c) return; diff --git a/src/config.c b/src/config.c index 4182c88..49ff519 100644 --- a/src/config.c +++ b/src/config.c @@ -37,7 +37,7 @@ func_name_list_t func_list[] = { {"spawn", uicb_spawn }, - {"killclient", uicb_killclient }, + {"killclient", uicb_client_kill }, {"client_prev", uicb_client_prev }, {"client_next", uicb_client_next }, {"togglemax", uicb_togglemax }, @@ -165,7 +165,7 @@ init_conf(void) static cfg_opt_t misc_opts[] = { - CFG_STR("font", "sans-9", CFGF_NONE), + CFG_STR("font", "sans-9", CFGF_NONE), CFG_STR("bar_position", "top", CFGF_NONE), CFG_BOOL("raisefocus", cfg_false, CFGF_NONE), CFG_BOOL("raiseswitch", cfg_true, CFGF_NONE), diff --git a/src/draw.c b/src/draw.c index f034ca3..ac124cf 100644 --- a/src/draw.c +++ b/src/draw.c @@ -68,8 +68,8 @@ draw_taglist(Drawable dr) for(i = 0; i < conf.ntag; ++i) { /* Make the tags string */ - ITOA(p, clientpertag(i+1)); - sprintf(buf[i], "%s<%s>", tags[i+1].name, (clientpertag(i+1)) ? p : ""); + ITOA(p, client_pertag(i+1)); + sprintf(buf[i], "%s<%s>", tags[i+1].name, (client_pertag(i+1)) ? p : ""); /* Draw the string */ draw_text(dr, taglen[i], fonth, diff --git a/src/event.c b/src/event.c index 98b4438..17e8f90 100644 --- a/src/event.c +++ b/src/event.c @@ -51,7 +51,7 @@ buttonpress(XEvent ev) { if((c = client_gettbar(ev.xbutton.window))) { - raiseclient(c); + client_raise(c); /* BUTTON 1 */ { if(ev.xbutton.button == Button1) @@ -82,9 +82,9 @@ buttonpress(XEvent ev) /* CLIENT */ /* ****** */ { - if((c = getclient(ev.xbutton.window))) + if((c = client_get(ev.xbutton.window))) { - raiseclient(c); + client_raise(c); /* BUTTON 1 */ { if(ev.xbutton.button == Button1) @@ -227,7 +227,7 @@ configurerequest(XEvent ev) Client *c; XWindowChanges wc; XRectangle geo; - if((c = getclient(ev.xconfigurerequest.window))) + if((c = client_get(ev.xconfigurerequest.window))) if(c->tile || c->lmax) return; geo.x = wc.x = ev.xconfigurerequest.x; @@ -239,7 +239,7 @@ configurerequest(XEvent ev) wc.stack_mode = ev.xconfigurerequest.detail; XConfigureWindow(dpy, ev.xconfigurerequest.window, ev.xconfigurerequest.value_mask, &wc); - if((c = getclient(ev.xconfigurerequest.window))) + if((c = client_get(ev.xconfigurerequest.window))) if(wc.y < mw && wc.x < mh) client_moveresize(c, geo, True); @@ -253,7 +253,7 @@ destroynotify(XEvent ev) { Client *c; - if((c = getclient(ev.xdestroywindow.window))) + if((c = client_get(ev.xdestroywindow.window))) client_unmanage(c); return; @@ -268,7 +268,7 @@ enternotify(XEvent ev) if(ev.xcrossing.mode != NotifyNormal || ev.xcrossing.detail == NotifyInferior) return; - if((c = getclient(ev.xcrossing.window)) + if((c = client_get(ev.xcrossing.window)) || (c = client_gettbar(ev.xcrossing.window))) client_focus(c); else @@ -385,7 +385,7 @@ maprequest(XEvent ev) return; if(at.override_redirect) return; - if(!getclient(ev.xmaprequest.window)) + if(!client_get(ev.xmaprequest.window)) { client_focus(NULL); client_manage(ev.xmaprequest.window, &at); @@ -462,14 +462,14 @@ propertynotify(XEvent ev) if(event.xproperty.state == PropertyDelete) return; - if((c = getclient(event.xproperty.window))) + if((c = client_get(event.xproperty.window))) { switch(event.xproperty.atom) { default: break; case XA_WM_TRANSIENT_FOR: XGetTransientForHint(dpy, c->win, &trans); - if((c->tile || c->max) && (c->hint = (getclient(trans) != NULL))) + if((c->tile || c->max) && (c->hint = (client_get(trans) != NULL))) arrange(); break; case XA_WM_NORMAL_HINTS: @@ -490,9 +490,9 @@ unmapnotify(XEvent ev) { Client *c; - if((c = getclient(ev.xunmap.window))) - if(!c->hide && ev.xunmap.send_event - && getwinstate(c->win) == NormalState) + if((c = client_get(ev.xunmap.window))) + if(ev.xunmap.send_event + && getwinstate(c->win) == NormalState) client_unmanage(c); return; @@ -514,7 +514,7 @@ getevent(void) case MapRequest: maprequest(event); break; case MappingNotify: mapnotify(event); break; case PropertyNotify: propertynotify(event); break; - case UnmapNotify: unmapnotify(event); break; +// case UnmapNotify: unmapnotify(event); break; } return; diff --git a/src/layout.c b/src/layout.c index ac40fc9..daa5eb7 100644 --- a/src/layout.c +++ b/src/layout.c @@ -67,7 +67,8 @@ freelayout(void) { if(c->tile || c->lmax) { - geo.x = c->ogeo.x; geo.y = c->ogeo.y; + geo.x = c->ogeo.x; + geo.y = c->ogeo.y; geo.width = c->ogeo.width; geo.height = c->ogeo.height; client_moveresize(c, geo, True); @@ -299,7 +300,7 @@ uicb_togglemax(uicb_t cmd) geo.height = sgeo.height - (conf.borderheight * 2); client_moveresize(sel, geo, False); - raiseclient(sel); + client_raise(sel); sel->max = True; } else if(sel->max) diff --git a/src/structs.h b/src/structs.h index becbc91..e26fee2 100644 --- a/src/structs.h +++ b/src/structs.h @@ -87,7 +87,7 @@ struct Client int border; /* Client Layout Information */ Bool max, tile, free; - Bool hint, hide, lmax; + Bool hint, lmax; /* Struct in chains */ Client *next; Client *prev; diff --git a/src/wmfs.h b/src/wmfs.h index 14e314c..3f2d2f3 100644 --- a/src/wmfs.h +++ b/src/wmfs.h @@ -82,26 +82,26 @@ void draw_rectangle(Drawable dr, int x, int y, uint w, uint h, uint color); ushort textw(const char *text); /* client.c */ -int clientpertag(int tag); +int client_pertag(int tag); void client_attach(Client *c); void client_detach(Client *c); void client_switch(Bool c); void client_focus(Client *c); -Client *getclient(Window w); +Client *client_get(Window w); Client *client_gettbar(Window w); void client_hide(Client *c); Bool ishide(Client *c); -void mapclient(Client *c); +void client_map(Client *c); void client_manage(Window w, XWindowAttributes *wa); void client_moveresize(Client *c, XRectangle geo, bool r); void client_size_hints(Client *c); -void raiseclient(Client *c); +void client_raise(Client *c); void client_unhide(Client *c); void client_unmanage(Client *c); -void unmapclient(Client *c); +void client_unmap(Client *c); void uicb_client_prev(uicb_t); void uicb_client_next(uicb_t); -void uicb_killclient(uicb_t); +void uicb_client_kill(uicb_t); /* config.c */ void init_conf(void);