- x = c->frame->area.x;
- y = c->frame->area.y;
-
- switch(o->dir) {
- case OB_DIRECTION_NORTH:
- y = client_directional_edge_search(c, OB_DIRECTION_NORTH,
- o->hang)
- - (o->hang ? c->frame->area.height : 0);
- break;
- case OB_DIRECTION_WEST:
- x = client_directional_edge_search(c, OB_DIRECTION_WEST,
- o->hang)
- - (o->hang ? c->frame->area.width : 0);
- break;
- case OB_DIRECTION_SOUTH:
- y = client_directional_edge_search(c, OB_DIRECTION_SOUTH,
- o->hang)
- - (o->hang ? 0 : c->frame->area.height);
- break;
- case OB_DIRECTION_EAST:
- x = client_directional_edge_search(c, OB_DIRECTION_EAST,
- o->hang)
- - (o->hang ? 0 : c->frame->area.width);
- break;
- default:
- g_assert_not_reached();
+ client_find_move_directional(data->client, o->dir, &x, &y);
+ if (x != data->client->area.x || y != data->client->area.y) {
+ actions_client_move(data, FALSE);
+ client_move(data->client, x, y);
+ actions_client_move(data, TRUE);