diff --git a/src/client.c b/src/client.c index e674e66..3bd2871 100644 --- a/src/client.c +++ b/src/client.c @@ -202,13 +202,13 @@ client_map(Client *c) if(!c) return; + XMapWindow(dpy, c->win); + XMapSubwindows(dpy, c->win); if(conf.titlebar.exist) { XMapWindow(dpy, c->tbar->win); bar_refresh(c->tbar); } - XMapWindow(dpy, c->win); - XMapSubwindows(dpy, c->win); return; } @@ -335,72 +335,72 @@ client_moveresize(Client *c, XRectangle geo, bool r) void client_size_hints(Client *c) { - long msize; - XSizeHints size; + long msize; + XSizeHints size; - if(!XGetWMNormalHints(dpy, c->win, &size, &msize) || !size.flags) - size.flags = PSize; - /* base */ - if(size.flags & PBaseSize) - { - c->basew = size.base_width; - c->baseh = size.base_height; - } - else if(size.flags & PMinSize) - { - c->basew = size.min_width; - c->baseh = size.min_height; - } - else - c->basew = c->baseh = 0; + if(!XGetWMNormalHints(dpy, c->win, &size, &msize) || !size.flags) + size.flags = PSize; + /* base */ + if(size.flags & PBaseSize) + { + c->basew = size.base_width; + c->baseh = size.base_height; + } + else if(size.flags & PMinSize) + { + c->basew = size.min_width; + c->baseh = size.min_height; + } + else + c->basew = c->baseh = 0; - /* inc */ - if(size.flags & PResizeInc) - { - c->incw = size.width_inc; - c->inch = size.height_inc; - } - else - c->incw = c->inch = 0; + /* inc */ + if(size.flags & PResizeInc) + { + c->incw = size.width_inc; + c->inch = size.height_inc; + } + else + c->incw = c->inch = 0; - /* max */ - if(size.flags & PMaxSize) - { - c->maxw = size.max_width; - c->maxh = size.max_height; - } - else - c->maxw = c->maxh = 0; + /* max */ + if(size.flags & PMaxSize) + { + c->maxw = size.max_width; + c->maxh = size.max_height; + } + else + c->maxw = c->maxh = 0; - /* min */ - if(size.flags & PMinSize) - { - c->minw = size.min_width; - c->minh = size.min_height; - } - else if(size.flags & PBaseSize) - { - c->minw = size.base_width; - c->minh = size.base_height; - } - else - c->minw = c->minh = 0; + /* min */ + if(size.flags & PMinSize) + { + c->minw = size.min_width; + c->minh = size.min_height; + } + else if(size.flags & PBaseSize) + { + c->minw = size.base_width; + c->minh = size.base_height; + } + else + c->minw = c->minh = 0; - /* aspect */ - if(size.flags & PAspect) - { - c->minax = size.min_aspect.x; - c->maxax = size.max_aspect.x; - c->minay = size.min_aspect.y; - c->maxay = size.max_aspect.y; - } - else + /* aspect */ + if(size.flags & PAspect) + { + c->minax = size.min_aspect.x; + c->maxax = size.max_aspect.x; + c->minay = size.min_aspect.y; + c->maxay = size.max_aspect.y; + } + else - c->minax = c->maxax = c->minay = c->maxay = 0; - c->hint = (c->maxw && c->minw && c->maxh && c->minh - && c->maxw == c->minw && c->maxh == c->minh); + c->minax = c->maxax = c->minay = c->maxay = 0; + c->hint = (c->maxw && c->minw && c->maxh && c->minh + && c->maxw == c->minw && c->maxh == c->minh); - return; + return; } void @@ -409,12 +409,12 @@ client_raise(Client *c) if(!c || c->max || c->tile) return; + XRaiseWindow(dpy, c->win); if(conf.titlebar.exist) { XRaiseWindow(dpy, c->tbar->win); titlebar_update(c); } - XRaiseWindow(dpy, c->win); return; } @@ -457,7 +457,6 @@ client_unmanage(Client *c) * and set the withdraw state */ client_detach(c); setwinstate(c->win, WithdrawnState); - if(conf.titlebar.exist) titlebar_delete(c); efree(c); diff --git a/src/infobar.c b/src/infobar.c index f749a11..4acc301 100644 --- a/src/infobar.c +++ b/src/infobar.c @@ -35,7 +35,7 @@ void infobar_init(InfoBar *ib) { - ib->geo.height = font->height + (float)4.5; + ib->geo.height = font->height * 1.5; ib->geo.y = (conf.bartop) ? 0 : MAXH - ib->geo.height; /* Create infobar barwindow */ @@ -45,9 +45,9 @@ infobar_init(InfoBar *ib) ib->layout_switch = bar_create(0, (conf.bartop) ? ib->geo.y : ib->geo.y + 1, 1, ib->geo.height - 1, 0, conf.colors.layout_bg, False); - ib->layout_type_switch = bar_create(0, ib->geo.y, - 1, ib->geo.height, - 0, conf.colors.layout_bg, False); + ib->layout_type_switch = bar_create(0, ib->geo.y, + 1, ib->geo.height, + 0, conf.colors.layout_bg, False); /* Map all */ bar_map(ib->bar); diff --git a/src/init.c b/src/init.c index 2012387..8aaf500 100644 --- a/src/init.c +++ b/src/init.c @@ -122,6 +122,7 @@ init_root(void) SubstructureRedirectMask | SubstructureNotifyMask | EnterWindowMask | LeaveWindowMask | StructureNotifyMask ; at.cursor = cursor[CurNormal]; + at.override_redirect = 1; XChangeWindowAttributes(dpy, root, CWEventMask | CWCursor, &at); if(conf.root.background_command) uicb_spawn(conf.root.background_command); @@ -132,16 +133,15 @@ init_root(void) void init_geometry(void) { - sgeo.x = 0; + sgeo.y = sgeo.x = 0; if(conf.bartop) sgeo.y = (conf.titlebar.pos) ? infobar.geo.height : infobar.geo.height + conf.titlebar.height; else - sgeo.y = (conf.titlebar.pos) - ? 0 - : conf.titlebar.height; + if(conf.titlebar.pos) + sgeo.y = conf.titlebar.height; sgeo.width = MAXW; sgeo.height = MAXH - (infobar.geo.height + conf.titlebar.height); diff --git a/src/titlebar.c b/src/titlebar.c index 347aad5..80b925d 100644 --- a/src/titlebar.c +++ b/src/titlebar.c @@ -35,25 +35,10 @@ void titlebar_create(Client *c) { - int y; - - /* Set titlebar position : Top/Bottom */ - switch(conf.titlebar.pos) - { - default: - case Top: - y = c->geo.y - conf.titlebar.height; - break; - case Bottom: - y = c->geo.y + c->geo.height + conf.client.borderheight; - break; - } - - c->tbar = bar_create(c->geo.x, y, c->geo.width, + c->tbar = bar_create(c->geo.x, c->geo.y, c->geo.width, conf.titlebar.height - conf.client.borderheight, - conf.client.borderheight, - conf.titlebar.bg_normal, True); - XSetWindowBorder(dpy, c->tbar->win, conf.titlebar.bg_normal); + 0, conf.titlebar.bg_normal, True); + titlebar_update_position(c); return; } @@ -100,7 +85,7 @@ titlebar_update_position(Client *c) break; } bar_move(c->tbar, c->geo.x, y); - bar_resize(c->tbar, c->geo.width, conf.titlebar.height - conf.client.borderheight); + bar_resize(c->tbar, c->geo.width + c->border * 2, conf.titlebar.height); return; } @@ -112,6 +97,7 @@ titlebar_update(Client *c) uint bg; char *fg; + /* Get the window name, will be free by XFree later... */ XFetchName(dpy, c->win, &(c->title)); if(!c->title) c->title = strdup("WMFS"); @@ -150,7 +136,7 @@ titlebar_update(Client *c) } /* Set y text position (always at the middle) and fg color */ - pos_y = (font->height - (font->descent ) - 1) + ((conf.titlebar.height - font->height) / 2); + pos_y = (font->height - (font->descent )) + ((conf.titlebar.height - font->height) / 2); /* Draw title */ draw_text(c->tbar->dr, pos_x, pos_y, fg, bg, 0, c->title);