From: Dana Jansens Date: Sun, 27 May 2007 16:33:59 +0000 (+0000) Subject: fix window gravity when there is a border width X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fopenbox;a=commitdiff_plain;h=01a7a9edb7617f3e0ae09a84207faa0dcdf71306 fix window gravity when there is a border width --- diff --git a/openbox/frame.c b/openbox/frame.c index 780bc23d..b6b6ac93 100644 --- a/openbox/frame.c +++ b/openbox/frame.c @@ -1343,13 +1343,13 @@ void frame_client_gravity(ObFrame *self, gint *x, gint *y, gint w, gint h) case SouthEastGravity: case EastGravity: /* the right side of the client will be the right side of the frame */ - *x -= self->size.right + self->size.left; + *x -= self->size.right + self->size.left - self->client->border_width*2; break; case ForgetGravity: case StaticGravity: /* the client's position won't move */ - *x -= self->size.left; + *x -= self->size.left - self->client->border_width; break; } @@ -1372,13 +1372,13 @@ void frame_client_gravity(ObFrame *self, gint *x, gint *y, gint w, gint h) case SouthEastGravity: case SouthGravity: /* the bottom of the client will be the bottom of the frame */ - *y -= self->size.bottom + self->size.top; + *y -= self->size.bottom + self->size.top - self->client->border_width*2; break; case ForgetGravity: case StaticGravity: /* the client's position won't move */ - *y -= self->size.top; + *y -= self->size.top - self->client->border_width; break; } } @@ -1402,12 +1402,12 @@ void frame_frame_gravity(ObFrame *self, gint *x, gint *y, gint w, gint h) case EastGravity: case SouthEastGravity: /* the right side of the client will be the right side of the frame */ - *x += self->size.right + self->size.left; + *x += self->size.right + self->size.left - self->client->border_width*2; break; case StaticGravity: case ForgetGravity: /* the client's position won't move */ - *x += self->size.left; + *x += self->size.left - self->client->border_width; break; } @@ -1428,12 +1428,12 @@ void frame_frame_gravity(ObFrame *self, gint *x, gint *y, gint w, gint h) case SouthGravity: case SouthEastGravity: /* the bottom of the client will be the bottom of the frame */ - *y += self->size.bottom + self->size.top; + *y += self->size.bottom + self->size.top - self->client->border_width*2; break; case StaticGravity: case ForgetGravity: /* the client's position won't move */ - *y += self->size.top; + *y += self->size.top - self->client->border_width; break; } } diff --git a/tests/grav.c b/tests/grav.c index a8dcdc31..5ce3cfb7 100644 --- a/tests/grav.c +++ b/tests/grav.c @@ -24,7 +24,7 @@ int main () { Display *display; Window win; XEvent report; - int x=10,y=10,h=100,w=400; + int x=10,y=10,h=100,w=400,b=10; XSizeHints *hints; display = XOpenDisplay(NULL); @@ -35,7 +35,7 @@ int main () { } win = XCreateWindow(display, RootWindow(display, 0), - x, y, w, h, 10, CopyFromParent, CopyFromParent, + x, y, w, h, b, CopyFromParent, CopyFromParent, CopyFromParent, 0, NULL); hints = XAllocSizeHints(); @@ -49,7 +49,7 @@ int main () { XMapWindow(display, win); XFlush(display); - XMoveResizeWindow(display, win, 1172-600, 668-150, 600, 150); + XMoveResizeWindow(display, win, 1172-600-b*2, 668-150-b*2, 600, 150); XFlush(display); sleep(1); XResizeWindow(display, win, 900, 275);