X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=dwm.c;h=f4b0540d4a08e8203e895ad2a98b60f0eda7bff2;hb=5a92420fce8d70a329a8294c1c77bb8c3c7eaad4;hp=d13a7a2a20900955623e0ea981ba5b80a5e6c93c;hpb=1f1a1327847c3beedcbc7b57085a8deb8e8ec1f5;p=dwm.git diff --git a/dwm.c b/dwm.c index d13a7a2..f4b0540 100644 --- a/dwm.c +++ b/dwm.c @@ -84,12 +84,12 @@ typedef struct { typedef struct Client Client; struct Client { char name[256]; + float mina, maxa; int x, y, w, h; int basew, baseh, incw, inch, maxw, maxh, minw, minh; - float mina, maxa; int bw, oldbw; - Bool isbanned, isfixed, isfloating, ismoved, isurgent; uint tags; + Bool isbanned, isfixed, isfloating, ismoved, isurgent; Client *next; Client *snext; Window win; @@ -327,8 +327,10 @@ buttonpress(XEvent *e) { else click = ClkWinTitle; } - else if((c = getclient(ev->window))) + else if((c = getclient(ev->window))) { + focus(c); click = ClkClientWin; + } for(i = 0; i < LENGTH(buttons); i++) if(click == buttons[i].click && buttons[i].func && buttons[i].button == ev->button @@ -911,7 +913,8 @@ manage(Window w, XWindowAttributes *wa) { if(c->y + c->h + 2 * c->bw > sy + sh) c->y = sy + sh - c->h - 2 * c->bw; c->x = MAX(c->x, sx); - c->y = MAX(c->y, by == 0 ? bh : sy); + /* only fix client y-offset, if the client center might cover the bar */ + c->y = MAX(c->y, ((by == 0) && (c->x + (c->w / 2) >= wx) && (c->x + (c->w / 2) < wx + ww)) ? bh : sy); c->bw = borderpx; } @@ -980,11 +983,6 @@ movemouse(const Arg *arg) { None, cursor[CurMove], CurrentTime) != GrabSuccess) return; XQueryPointer(dpy, root, &dummy, &dummy, &x1, &y1, &di, &di, &dui); - if(x1 < c->x || x1 > c->x + c->w || y1 < c->y || y1 > c->y + c->h) { - XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, 0, 0); - x1 = c->x + 1; - y1 = c->y + 1; - } for(;;) { XMaskEvent(dpy, MOUSEMASK|ExposureMask|SubstructureRedirectMask, &ev); switch (ev.type) { @@ -1321,12 +1319,12 @@ setup(void) { /* init screen */ screen = DefaultScreen(dpy); root = RootWindow(dpy, screen); - initfont(FONT); + initfont(font); sx = 0; sy = 0; sw = DisplayWidth(dpy, screen); sh = DisplayHeight(dpy, screen); - bh = dc.font.height + 2; + bh = dc.h = dc.font.height + 2; lt = layouts; updategeom(); @@ -1344,14 +1342,12 @@ setup(void) { cursor[CurMove] = XCreateFontCursor(dpy, XC_fleur); /* init appearance */ - dc.norm[ColBorder] = getcolor(NORMBORDERCOLOR); - dc.norm[ColBG] = getcolor(NORMBGCOLOR); - dc.norm[ColFG] = getcolor(NORMFGCOLOR); - dc.sel[ColBorder] = getcolor(SELBORDERCOLOR); - dc.sel[ColBG] = getcolor(SELBGCOLOR); - dc.sel[ColFG] = getcolor(SELFGCOLOR); - initfont(FONT); - dc.h = bh; + dc.norm[ColBorder] = getcolor(normbordercolor); + dc.norm[ColBG] = getcolor(normbgcolor); + dc.norm[ColFG] = getcolor(normfgcolor); + dc.sel[ColBorder] = getcolor(selbordercolor); + dc.sel[ColBG] = getcolor(selbgcolor); + dc.sel[ColFG] = getcolor(selfgcolor); dc.drawable = XCreatePixmap(dpy, root, DisplayWidth(dpy, screen), bh, DefaultDepth(dpy, screen)); dc.gc = XCreateGC(dpy, root, 0, 0); XSetLineAttributes(dpy, dc.gc, 1, LineSolid, CapButt, JoinMiter);