much simpler and works just as well! client's reference position doesnt change just because the decor sizes do
This commit is contained in:
parent
e9fd97fcc3
commit
b253dff606
1 changed files with 3 additions and 59 deletions
|
@ -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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue