much simpler and works just as well! client's reference position doesnt change just because the decor sizes do

This commit is contained in:
Dana Jansens 2007-06-03 21:19:33 +00:00
parent e9fd97fcc3
commit b253dff606

View file

@ -331,70 +331,14 @@ gint main(gint argc, gchar **argv)
for (it = client_list; it; it = g_list_next(it)) { for (it = client_list; it; it = g_list_next(it)) {
ObClient *c = it->data; ObClient *c = it->data;
Strut oldsize, newsize; Strut oldsize, newsize;
gint dx, dy;
oldsize = c->frame->size;
dx = dy = 0;
/* the new config can change the window's decorations */ /* the new config can change the window's decorations */
client_setup_decor_and_functions(c, TRUE); client_setup_decor_and_functions(c, TRUE);
/* redraw the frames */ /* redraw the frames */
frame_adjust_area(c->frame, TRUE, TRUE, FALSE); frame_adjust_area(c->frame, TRUE, TRUE, FALSE);
/* the decor sizes may have changed, so the windows may
/* move windows if their decorations are a new size, based end up in new positions */
on their gravity */ client_reconfigure(c);
newsize = c->frame->size;
/* x coord */
switch (c->gravity) {
case NorthWestGravity:
case WestGravity:
case SouthWestGravity:
break;
case NorthGravity:
case CenterGravity:
case SouthGravity:
dx = (newsize.left - oldsize.left +
oldsize.right - newsize.right) / 2;
break;
case NorthEastGravity:
case EastGravity:
case SouthEastGravity:
dx = -(newsize.left - oldsize.left +
newsize.right - oldsize.right);
break;
case StaticGravity:
dx = -(newsize.left - oldsize.left);
break;
}
/* y coord */
switch (c->gravity) {
case NorthWestGravity:
case NorthGravity:
case NorthEastGravity:
break;
case WestGravity:
case CenterGravity:
case EastGravity:
dy = (newsize.top - oldsize.top +
oldsize.bottom - newsize.bottom) / 2;
break;
case SouthWestGravity:
case SouthGravity:
case SouthEastGravity:
dy = -(newsize.top - oldsize.top +
newsize.bottom - oldsize.bottom);
break;
case StaticGravity:
dx = -(newsize.top - oldsize.top);
break;
}
if (dx || dy)
client_move(c, c->area.x + dx, c->area.y + dy);
} }
} }