mirror of
https://github.com/leahneukirchen/cwm.git
synced 2023-08-10 21:13:12 +03:00
Use the original client border width to adjust initial placement of clients
containing {P,US}Position requests where they are explicitly set to 'ignore' in cwmrc(5); clients are unaware that their border will be altered (removed in this case) when calcuating position and thus end up a factor of their original border width off once mapped by cwm(1). cwm(1) will essentially shift the client to the edge if the original request's position and border match. Window offset noticed by at least Andre Stoebe via bugs@, and others since (and likely before). Thanks!
This commit is contained in:
parent
9999c3e6e0
commit
a63b87e315
1
calmwm.h
1
calmwm.h
@ -130,6 +130,7 @@ struct client_ctx {
|
||||
Window win;
|
||||
Colormap colormap;
|
||||
int bwidth; /* border width */
|
||||
int obwidth; /* original border width */
|
||||
struct geom geom, savegeom, fullgeom;
|
||||
struct {
|
||||
long flags; /* defined hints */
|
||||
|
7
client.c
7
client.c
@ -96,6 +96,7 @@ client_init(Window win, struct screen_ctx *sc, int active)
|
||||
cc->ptr.y = cc->geom.h / 2;
|
||||
|
||||
cc->colormap = wattr.colormap;
|
||||
cc->obwidth = wattr.border_width;
|
||||
|
||||
if (wattr.map_state != IsViewable) {
|
||||
client_placecalc(cc);
|
||||
@ -760,6 +761,12 @@ client_placecalc(struct client_ctx *cc)
|
||||
cc->geom.x = sc->view.h - cc->bwidth - 1;
|
||||
if (cc->geom.y + cc->geom.h + cc->bwidth <= 0)
|
||||
cc->geom.y = -(cc->geom.h + cc->bwidth - 1);
|
||||
if (cc->flags & CLIENT_IGNORE) {
|
||||
if (((cc->obwidth * 2) + cc->geom.x + cc->geom.w) == sc->view.w)
|
||||
cc->geom.x += cc->obwidth * 2;
|
||||
if (((cc->obwidth * 2) + cc->geom.y + cc->geom.h) == sc->view.h)
|
||||
cc->geom.y += cc->obwidth * 2;
|
||||
}
|
||||
} else {
|
||||
struct geom area;
|
||||
int xmouse, ymouse;
|
||||
|
Loading…
Reference in New Issue
Block a user